summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlex Gorrod <alexg@wiredtiger.com>2015-01-14 02:28:10 +1100
committerAlex Gorrod <alexg@wiredtiger.com>2015-01-14 02:28:10 +1100
commit812be6c438ef11d2edde8211370601e350963a43 (patch)
tree7f589af6462ce97832aa4dd03bf74e61f3760f16
parent56865ca8ec3cb43e15c05cea9b7ef704302fe694 (diff)
downloadmongo-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.c2
-rw-r--r--examples/java/com/wiredtiger/examples/ex_all.java2
-rw-r--r--lang/java/java_doc.i2
-rw-r--r--lang/java/wiredtiger.i19
-rw-r--r--lang/python/wiredtiger.i12
-rw-r--r--src/btree/bt_cursor.c4
-rw-r--r--src/cursor/cur_backup.c2
-rw-r--r--src/cursor/cur_config.c2
-rw-r--r--src/cursor/cur_ds.c2
-rw-r--r--src/cursor/cur_dump.c2
-rw-r--r--src/cursor/cur_file.c12
-rw-r--r--src/cursor/cur_index.c2
-rw-r--r--src/cursor/cur_log.c2
-rw-r--r--src/cursor/cur_metadata.c2
-rw-r--r--src/cursor/cur_stat.c2
-rw-r--r--src/cursor/cur_std.c22
-rw-r--r--src/cursor/cur_table.c4
-rw-r--r--src/include/cursor.h4
-rw-r--r--src/include/extern.h3
-rw-r--r--src/include/wiredtiger.in4
-rw-r--r--src/lsm/lsm_cursor.c2
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 */