diff options
author | Alex Gorrod <alexg@wiredtiger.com> | 2015-01-14 02:28:10 +1100 |
---|---|---|
committer | Alex Gorrod <alexg@wiredtiger.com> | 2015-01-14 02:28:10 +1100 |
commit | 812be6c438ef11d2edde8211370601e350963a43 (patch) | |
tree | 7f589af6462ce97832aa4dd03bf74e61f3760f16 | |
parent | 56865ca8ec3cb43e15c05cea9b7ef704302fe694 (diff) | |
download | mongo-812be6c438ef11d2edde8211370601e350963a43.tar.gz |
Rename WT_CURSOR compare_equal to be equals.
While here, add a generic cursor equals stub in curstd, rather than
redirecting via cursor function pointer lists.
Implement the Java API wrapper.
-rw-r--r-- | examples/c/ex_all.c | 2 | ||||
-rw-r--r-- | examples/java/com/wiredtiger/examples/ex_all.java | 2 | ||||
-rw-r--r-- | lang/java/java_doc.i | 2 | ||||
-rw-r--r-- | lang/java/wiredtiger.i | 19 | ||||
-rw-r--r-- | lang/python/wiredtiger.i | 12 | ||||
-rw-r--r-- | src/btree/bt_cursor.c | 4 | ||||
-rw-r--r-- | src/cursor/cur_backup.c | 2 | ||||
-rw-r--r-- | src/cursor/cur_config.c | 2 | ||||
-rw-r--r-- | src/cursor/cur_ds.c | 2 | ||||
-rw-r--r-- | src/cursor/cur_dump.c | 2 | ||||
-rw-r--r-- | src/cursor/cur_file.c | 12 | ||||
-rw-r--r-- | src/cursor/cur_index.c | 2 | ||||
-rw-r--r-- | src/cursor/cur_log.c | 2 | ||||
-rw-r--r-- | src/cursor/cur_metadata.c | 2 | ||||
-rw-r--r-- | src/cursor/cur_stat.c | 2 | ||||
-rw-r--r-- | src/cursor/cur_std.c | 22 | ||||
-rw-r--r-- | src/cursor/cur_table.c | 4 | ||||
-rw-r--r-- | src/include/cursor.h | 4 | ||||
-rw-r--r-- | src/include/extern.h | 3 | ||||
-rw-r--r-- | src/include/wiredtiger.in | 4 | ||||
-rw-r--r-- | src/lsm/lsm_cursor.c | 2 |
21 files changed, 75 insertions, 33 deletions
diff --git a/examples/c/ex_all.c b/examples/c/ex_all.c index 6fe5296ea58..532a4bca66c 100644 --- a/examples/c/ex_all.c +++ b/examples/c/ex_all.c @@ -245,7 +245,7 @@ cursor_ops(WT_SESSION *session) WT_CURSOR *other = NULL; /*! [Cursor equality] */ int equal; - ret = cursor->compare_equal(cursor, other, &equal); + ret = cursor->equals(cursor, other, &equal); if (equal == 0) { /* Cursors reference the same key */ } else { diff --git a/examples/java/com/wiredtiger/examples/ex_all.java b/examples/java/com/wiredtiger/examples/ex_all.java index 5b1b0f58efa..2bc412307f1 100644 --- a/examples/java/com/wiredtiger/examples/ex_all.java +++ b/examples/java/com/wiredtiger/examples/ex_all.java @@ -218,7 +218,7 @@ public static int cursor_ops(Session session) Cursor other = null; /*! [Cursor equality] */ int equal; - equal = cursor.compare_equal(other); + equal = cursor.equals(other); if (equal == 0) { /* Cursors reference the same key */ } else { diff --git a/lang/java/java_doc.i b/lang/java/java_doc.i index 1de01b0528e..0890b14fa65 100644 --- a/lang/java/java_doc.i +++ b/lang/java/java_doc.i @@ -5,7 +5,7 @@ COPYDOC(__wt_cursor, WT_CURSOR, get_value) COPYDOC(__wt_cursor, WT_CURSOR, set_key) COPYDOC(__wt_cursor, WT_CURSOR, set_value) COPYDOC(__wt_cursor, WT_CURSOR, compare) -COPYDOC(__wt_cursor, WT_CURSOR, compare_equal) +COPYDOC(__wt_cursor, WT_CURSOR, equals) COPYDOC(__wt_cursor, WT_CURSOR, next) COPYDOC(__wt_cursor, WT_CURSOR, prev) COPYDOC(__wt_cursor, WT_CURSOR, reset) diff --git a/lang/java/wiredtiger.i b/lang/java/wiredtiger.i index a922a7a6b2e..19569aecf1d 100644 --- a/lang/java/wiredtiger.i +++ b/lang/java/wiredtiger.i @@ -293,6 +293,8 @@ WT_CLASS(struct __wt_async_op, WT_ASYNC_OP, op) %ignore __wt_cursor::compare(WT_CURSOR *, WT_CURSOR *, int *); %rename (compare_wrap) __wt_cursor::compare; +%ignore __wt_cursor::equals(WT_CURSOR *, WT_CURSOR *, int *); +%rename (equals_wrap) __wt_cursor::equals; %rename (AsyncOpType) WT_ASYNC_OPTYPE; %rename (getKeyFormat) __wt_async_op::getKey_format; %rename (getValueFormat) __wt_async_op::getValue_format; @@ -1088,6 +1090,13 @@ WT_ASYNC_CALLBACK javaApiAsyncHandler = {javaAsyncHandler}; return cmp; } + int equals_wrap(JNIEnv *jenv, WT_CURSOR *other) { + int cmp, ret = $self->equals($self, other, &cmp); + if (ret != 0) + throwWiredTigerException(jenv, ret); + return cmp; + } + %javamethodmodifiers java_init "protected"; int java_init(jobject jcursor) { JAVA_CALLBACK *jcb = (JAVA_CALLBACK *)$self->lang_private; @@ -1532,6 +1541,16 @@ WT_ASYNC_CALLBACK javaApiAsyncHandler = {javaAsyncHandler}; } /** + * Compare this cursor's position to another Cursor. + * + * \return The result of the comparison. + */ + public int equals(Cursor other) + throws WiredTigerException { + return equals_wrap(other); + } + + /** * Retrieve the next item in the table. * * \return The result of the comparison. diff --git a/lang/python/wiredtiger.i b/lang/python/wiredtiger.i index f4a2801ed4c..1a23bd5ea5e 100644 --- a/lang/python/wiredtiger.i +++ b/lang/python/wiredtiger.i @@ -381,7 +381,7 @@ NOTFOUND_OK(__wt_cursor::search) NOTFOUND_OK(__wt_cursor::update) COMPARE_OK(__wt_cursor::compare) -COMPARE_OK(__wt_cursor::compare_equal) +COMPARE_OK(__wt_cursor::equals) COMPARE_OK(__wt_cursor::search_near) /* Lastly, some methods need no (additional) error checking. */ @@ -416,7 +416,7 @@ COMPARE_OK(__wt_cursor::search_near) /* Next, override methods that return integers via arguments. */ %ignore __wt_cursor::compare(WT_CURSOR *, WT_CURSOR *, int *); -%ignore __wt_cursor::compare_equal(WT_CURSOR *, WT_CURSOR *, int *); +%ignore __wt_cursor::equals(WT_CURSOR *, WT_CURSOR *, int *); %ignore __wt_cursor::search_near(WT_CURSOR *, int *); /* SWIG magic to turn Python byte strings into data / size. */ @@ -699,19 +699,19 @@ typedef int int_void; return (ret); } - /* compare_equal: special handling. */ - int compare_equal(WT_CURSOR *other) { + /* equals: special handling. */ + int equals(WT_CURSOR *other) { int cmp = 0; int ret = 0; if (other == NULL) { SWIG_Error(SWIG_NullReferenceError, - "in method 'Cursor_compare_equal', " + "in method 'Cursor_equals', " "argument 1 of type 'struct __wt_cursor *' " "is None"); ret = EINVAL; /* any non-zero value will do. */ } else { - ret = $self->compare_equal($self, other, &cmp); + ret = $self->equals($self, other, &cmp); /* * Compare-equal is documented to return 0 and !0, map diff --git a/src/btree/bt_cursor.c b/src/btree/bt_cursor.c index 71bdd0dc7c5..48199f6c978 100644 --- a/src/btree/bt_cursor.c +++ b/src/btree/bt_cursor.c @@ -870,11 +870,11 @@ __cursor_equals(WT_CURSOR_BTREE *a, WT_CURSOR_BTREE *b) } /* - * __wt_btcur_compare_equal -- + * __wt_btcur_equals -- * Return an equality comparison between two cursors. */ int -__wt_btcur_compare_equal( +__wt_btcur_equals( WT_CURSOR_BTREE *a_arg, WT_CURSOR_BTREE *b_arg, int *cmpp) { WT_CURSOR *a, *b; diff --git a/src/cursor/cur_backup.c b/src/cursor/cur_backup.c index 2ef6f8e9274..c7f5a370641 100644 --- a/src/cursor/cur_backup.c +++ b/src/cursor/cur_backup.c @@ -109,7 +109,7 @@ __wt_curbackup_open(WT_SESSION_IMPL *session, __wt_cursor_notsup, /* set-key */ __wt_cursor_notsup, /* set-value */ __wt_cursor_notsup, /* compare */ - __wt_cursor_notsup, /* compare_equal */ + __wt_cursor_notsup, /* equals */ __curbackup_next, /* next */ __wt_cursor_notsup, /* prev */ __curbackup_reset, /* reset */ diff --git a/src/cursor/cur_config.c b/src/cursor/cur_config.c index 38f3fc159b5..77cc3eb0b2e 100644 --- a/src/cursor/cur_config.c +++ b/src/cursor/cur_config.c @@ -32,7 +32,7 @@ __wt_curconfig_open(WT_SESSION_IMPL *session, __wt_cursor_set_key, /* set-key */ __wt_cursor_set_value, /* set-value */ __wt_cursor_notsup, /* compare */ - __wt_cursor_notsup, /* compare_equal */ + __wt_cursor_notsup, /* equals */ __wt_cursor_notsup, /* next */ __wt_cursor_notsup, /* prev */ __wt_cursor_noop, /* reset */ diff --git a/src/cursor/cur_ds.c b/src/cursor/cur_ds.c index ef8d1725a28..6b4ab12d2b4 100644 --- a/src/cursor/cur_ds.c +++ b/src/cursor/cur_ds.c @@ -454,7 +454,7 @@ __wt_curds_open( __wt_cursor_set_key, /* set-key */ __wt_cursor_set_value, /* set-value */ __curds_compare, /* compare */ - __curds_compare, /* compare_equal */ + __wt_cursor_equals, /* equals */ __curds_next, /* next */ __curds_prev, /* prev */ __curds_reset, /* reset */ diff --git a/src/cursor/cur_dump.c b/src/cursor/cur_dump.c index ac3bc0cf5d2..cd9fbf0801b 100644 --- a/src/cursor/cur_dump.c +++ b/src/cursor/cur_dump.c @@ -352,7 +352,7 @@ __wt_curdump_create(WT_CURSOR *child, WT_CURSOR *owner, WT_CURSOR **cursorp) __curdump_set_key, /* set-key */ __curdump_set_value, /* set-value */ __wt_cursor_notsup, /* compare */ - __wt_cursor_notsup, /* compare_equal */ + __wt_cursor_notsup, /* equals */ __curdump_next, /* next */ __curdump_prev, /* prev */ __curdump_reset, /* reset */ diff --git a/src/cursor/cur_file.c b/src/cursor/cur_file.c index fbedfe6d032..5136ba04243 100644 --- a/src/cursor/cur_file.c +++ b/src/cursor/cur_file.c @@ -64,18 +64,18 @@ err: API_END_RET(session, ret); } /* - * __curfile_compare_equal -- - * WT_CURSOR->compare_equal method for the btree cursor type. + * __curfile_equals -- + * WT_CURSOR->equals method for the btree cursor type. */ static int -__curfile_compare_equal(WT_CURSOR *a, WT_CURSOR *b, int *cmpp) +__curfile_equals(WT_CURSOR *a, WT_CURSOR *b, int *cmpp) { WT_CURSOR_BTREE *cbt; WT_DECL_RET; WT_SESSION_IMPL *session; cbt = (WT_CURSOR_BTREE *)a; - CURSOR_API_CALL(a, session, compare_equal, cbt->btree); + CURSOR_API_CALL(a, session, equals, cbt->btree); /* * Check both cursors are a "file:" type then call the underlying @@ -89,7 +89,7 @@ __curfile_compare_equal(WT_CURSOR *a, WT_CURSOR *b, int *cmpp) WT_CURSOR_CHECKKEY(a); WT_CURSOR_CHECKKEY(b); - ret = __wt_btcur_compare_equal( + ret = __wt_btcur_equals( (WT_CURSOR_BTREE *)a, (WT_CURSOR_BTREE *)b, cmpp); err: API_END_RET(session, ret); @@ -389,7 +389,7 @@ __wt_curfile_create(WT_SESSION_IMPL *session, __wt_cursor_set_key, /* set-key */ __wt_cursor_set_value, /* set-value */ __curfile_compare, /* compare */ - __curfile_compare_equal, /* compare_equal */ + __curfile_equals, /* equals */ __curfile_next, /* next */ __curfile_prev, /* prev */ __curfile_reset, /* reset */ diff --git a/src/cursor/cur_index.c b/src/cursor/cur_index.c index dd7b965642d..3c626b15cb2 100644 --- a/src/cursor/cur_index.c +++ b/src/cursor/cur_index.c @@ -343,7 +343,7 @@ __wt_curindex_open(WT_SESSION_IMPL *session, __wt_cursor_set_key, /* set-key */ __curindex_set_value, /* set-value */ __wt_cursor_notsup, /* compare */ - __wt_cursor_notsup, /* compare_equal */ + __wt_cursor_notsup, /* equals */ __curindex_next, /* next */ __curindex_prev, /* prev */ __curindex_reset, /* reset */ diff --git a/src/cursor/cur_log.c b/src/cursor/cur_log.c index 346b6bf5172..420f0c1fb5a 100644 --- a/src/cursor/cur_log.c +++ b/src/cursor/cur_log.c @@ -315,7 +315,7 @@ __wt_curlog_open(WT_SESSION_IMPL *session, __wt_cursor_set_key, /* set-key */ __wt_cursor_set_value, /* set-value */ __curlog_compare, /* compare */ - __curlog_compare, /* compare_equal */ + __wt_cursor_equals, /* equals */ __curlog_next, /* next */ __wt_cursor_notsup, /* prev */ __curlog_reset, /* reset */ diff --git a/src/cursor/cur_metadata.c b/src/cursor/cur_metadata.c index 55205e02f8e..a2cb1301c77 100644 --- a/src/cursor/cur_metadata.c +++ b/src/cursor/cur_metadata.c @@ -409,7 +409,7 @@ __wt_curmetadata_open(WT_SESSION_IMPL *session, __wt_cursor_set_key, /* set-key */ __wt_cursor_set_value, /* set-value */ __curmetadata_compare, /* compare */ - __curmetadata_compare, /* compare_equal */ + __wt_cursor_equals, /* equals */ __curmetadata_next, /* next */ __curmetadata_prev, /* prev */ __curmetadata_reset, /* reset */ diff --git a/src/cursor/cur_stat.c b/src/cursor/cur_stat.c index c017c50e360..20f669b4776 100644 --- a/src/cursor/cur_stat.c +++ b/src/cursor/cur_stat.c @@ -485,7 +485,7 @@ __wt_curstat_open(WT_SESSION_IMPL *session, __curstat_set_key, /* set-key */ __curstat_set_value, /* set-value */ __wt_cursor_notsup, /* compare */ - __wt_cursor_notsup, /* compare_equal */ + __wt_cursor_notsup, /* equals */ __curstat_next, /* next */ __curstat_prev, /* prev */ __curstat_reset, /* reset */ diff --git a/src/cursor/cur_std.c b/src/cursor/cur_std.c index 1470cb37100..0e3f8a7f460 100644 --- a/src/cursor/cur_std.c +++ b/src/cursor/cur_std.c @@ -502,6 +502,28 @@ __wt_cursor_close(WT_CURSOR *cursor) } /* + * __wt_cursor_equals -- + * WT_CURSOR->equals default implementation. + */ +int +__wt_cursor_equals(WT_CURSOR *cursor, WT_CURSOR *other, int *equalityp) +{ + WT_DECL_RET; + WT_SESSION_IMPL *session; + int cmp; + + session = (WT_SESSION_IMPL *)cursor->session; + CURSOR_API_CALL(cursor, session, equals, NULL); + + WT_ERR(cursor->compare(cursor, other, &cmp)); + + *equalityp = (cmp == 0) ? 0 : 1; + +err: API_END(session, ret); + return (ret); +} + +/* * __cursor_runtime_config -- * Set runtime-configurable settings. */ diff --git a/src/cursor/cur_table.c b/src/cursor/cur_table.c index 2a314f342b0..1adef6342bb 100644 --- a/src/cursor/cur_table.c +++ b/src/cursor/cur_table.c @@ -82,7 +82,7 @@ __apply_idx(WT_CURSOR_TABLE *ctable, size_t func_off, int skip_immutable) { __wt_cursor_set_key, /* set-key */ __wt_cursor_set_value, /* set-value */ __wt_cursor_notsup, /* compare */ - __wt_cursor_notsup, /* compare_equal */ + __wt_cursor_notsup, /* equals */ __wt_cursor_notsup, /* next */ __wt_cursor_notsup, /* prev */ __wt_cursor_notsup, /* reset */ @@ -838,7 +838,7 @@ __wt_curtable_open(WT_SESSION_IMPL *session, __wt_curtable_set_key, /* set-key */ __wt_curtable_set_value, /* set-value */ __curtable_compare, /* compare */ - __curtable_compare, /* compare_equal */ + __wt_cursor_equals, /* equals */ __curtable_next, /* next */ __curtable_prev, /* prev */ __curtable_reset, /* reset */ diff --git a/src/include/cursor.h b/src/include/cursor.h index cd523274d77..89f510552e7 100644 --- a/src/include/cursor.h +++ b/src/include/cursor.h @@ -15,7 +15,7 @@ set_key, \ set_value, \ compare, \ - compare_equal, \ + equals, \ next, \ prev, \ reset, \ @@ -35,7 +35,7 @@ (void (*)(WT_CURSOR *, ...))(set_key), \ (void (*)(WT_CURSOR *, ...))(set_value), \ (int (*)(WT_CURSOR *, WT_CURSOR *, int *))(compare), \ - (int (*)(WT_CURSOR *, WT_CURSOR *, int *))(compare_equal), \ + (int (*)(WT_CURSOR *, WT_CURSOR *, int *))(equals), \ next, \ prev, \ reset, \ diff --git a/src/include/extern.h b/src/include/extern.h index 3c737eb3188..94146e8d0d5 100644 --- a/src/include/extern.h +++ b/src/include/extern.h @@ -96,7 +96,7 @@ extern int __wt_btcur_remove(WT_CURSOR_BTREE *cbt); extern int __wt_btcur_update(WT_CURSOR_BTREE *cbt); extern int __wt_btcur_next_random(WT_CURSOR_BTREE *cbt); extern int __wt_btcur_compare(WT_CURSOR_BTREE *a_arg, WT_CURSOR_BTREE *b_arg, int *cmpp); -extern int __wt_btcur_compare_equal( WT_CURSOR_BTREE *a_arg, WT_CURSOR_BTREE *b_arg, int *cmpp); +extern int __wt_btcur_equals( WT_CURSOR_BTREE *a_arg, WT_CURSOR_BTREE *b_arg, int *cmpp); extern int __wt_btcur_range_truncate(WT_CURSOR_BTREE *start, WT_CURSOR_BTREE *stop); extern int __wt_btcur_close(WT_CURSOR_BTREE *cbt); extern int __wt_debug_set_verbose(WT_SESSION_IMPL *session, const char *v); @@ -281,6 +281,7 @@ extern int __wt_cursor_get_valuev(WT_CURSOR *cursor, va_list ap); extern void __wt_cursor_set_value(WT_CURSOR *cursor, ...); extern void __wt_cursor_set_valuev(WT_CURSOR *cursor, va_list ap); extern int __wt_cursor_close(WT_CURSOR *cursor); +extern int __wt_cursor_equals(WT_CURSOR *cursor, WT_CURSOR *other, int *equalityp); extern int __wt_cursor_dup_position(WT_CURSOR *to_dup, WT_CURSOR *cursor); extern int __wt_cursor_init(WT_CURSOR *cursor, const char *uri, WT_CURSOR *owner, const char *cfg[], WT_CURSOR **cursorp); extern int __wt_curtable_get_key(WT_CURSOR *cursor, ...); diff --git a/src/include/wiredtiger.in b/src/include/wiredtiger.in index 0c99d2a472d..1369d54022a 100644 --- a/src/include/wiredtiger.in +++ b/src/include/wiredtiger.in @@ -271,7 +271,7 @@ struct __wt_cursor { /*! * Return the ordering relationship between two cursors: both cursors * must have the same data source and have valid keys. (When testing - * only for equality, WT_CURSOR::compare_equal may be faster.) + * only for equality, WT_CURSOR::equals may be faster.) * * @snippet ex_all.c Cursor comparison * @@ -299,7 +299,7 @@ struct __wt_cursor { * refer to the same key, otherwise not 0. * @errors */ - int __F(compare_equal) + int __F(equals) (WT_CURSOR *cursor, WT_CURSOR *other, int *equalityp); /*! diff --git a/src/lsm/lsm_cursor.c b/src/lsm/lsm_cursor.c index 257c7dee449..c8c48e05051 100644 --- a/src/lsm/lsm_cursor.c +++ b/src/lsm/lsm_cursor.c @@ -1431,7 +1431,7 @@ __wt_clsm_open(WT_SESSION_IMPL *session, __wt_cursor_set_key, /* set-key */ __wt_cursor_set_value, /* set-value */ __clsm_compare, /* compare */ - __clsm_compare, /* compare_equal */ + __wt_cursor_equals, /* equals */ __clsm_next, /* next */ __clsm_prev, /* prev */ __clsm_reset, /* reset */ |