aboutsummaryrefslogtreecommitdiff
path: root/ext/jni/src
diff options
context:
space:
mode:
Diffstat (limited to 'ext/jni/src')
-rw-r--r--ext/jni/src/c/sqlite3-jni.c9
-rw-r--r--ext/jni/src/c/sqlite3-jni.h4
-rw-r--r--ext/jni/src/org/sqlite/jni/SQLite3Jni.java4
-rw-r--r--ext/jni/src/org/sqlite/jni/Tester1.java10
4 files changed, 22 insertions, 5 deletions
diff --git a/ext/jni/src/c/sqlite3-jni.c b/ext/jni/src/c/sqlite3-jni.c
index 2f7fe7c36..2159e8979 100644
--- a/ext/jni/src/c/sqlite3-jni.c
+++ b/ext/jni/src/c/sqlite3-jni.c
@@ -2036,6 +2036,12 @@ static void udf_xInverse(sqlite3_context* cx, int argc,
JniDecl(jint,JniNameSuffix)(JniArgsEnvClass, jlong jpSValue){ \
return (jint)CName(S3JniLongPtr_sqlite3_value(jpSValue)); \
}
+/** Create a trivial JNI wrapper for (boolean CName(sqlite3_value*)). */
+#define WRAP_BOOL_SVALUE(JniNameSuffix,CName) \
+ JniDecl(jboolean,JniNameSuffix)(JniArgsEnvClass, jlong jpSValue){ \
+ return (jint)CName(S3JniLongPtr_sqlite3_value(jpSValue)) \
+ ? JNI_TRUE : JNI_FALSE; \
+ }
WRAP_INT_DB(1changes, sqlite3_changes)
WRAP_INT64_DB(1changes64, sqlite3_changes64)
@@ -2075,7 +2081,7 @@ WRAP_INT64_DB(1total_1changes64, sqlite3_total_changes64)
WRAP_INT_SVALUE(1value_1bytes, sqlite3_value_bytes)
WRAP_INT_SVALUE(1value_1bytes16, sqlite3_value_bytes16)
WRAP_INT_SVALUE(1value_1encoding, sqlite3_value_encoding)
-WRAP_INT_SVALUE(1value_1frombind, sqlite3_value_frombind)
+WRAP_BOOL_SVALUE(1value_1frombind, sqlite3_value_frombind)
WRAP_INT_SVALUE(1value_1nochange, sqlite3_value_nochange)
WRAP_INT_SVALUE(1value_1numeric_1type, sqlite3_value_numeric_type)
WRAP_INT_SVALUE(1value_1subtype, sqlite3_value_subtype)
@@ -2083,6 +2089,7 @@ WRAP_INT_SVALUE(1value_1type, sqlite3_value_type)
#undef WRAP_BOOL_DB
#undef WRAP_BOOL_STMT
+#undef WRAP_BOOL_SVALUE
#undef WRAP_INT64_DB
#undef WRAP_INT_DB
#undef WRAP_INT_INT
diff --git a/ext/jni/src/c/sqlite3-jni.h b/ext/jni/src/c/sqlite3-jni.h
index b9d4a3574..f8aa61bee 100644
--- a/ext/jni/src/c/sqlite3-jni.h
+++ b/ext/jni/src/c/sqlite3-jni.h
@@ -2022,9 +2022,9 @@ JNIEXPORT void JNICALL Java_org_sqlite_jni_SQLite3Jni_sqlite3_1value_1free
/*
* Class: org_sqlite_jni_SQLite3Jni
* Method: sqlite3_value_frombind
- * Signature: (J)I
+ * Signature: (J)Z
*/
-JNIEXPORT jint JNICALL Java_org_sqlite_jni_SQLite3Jni_sqlite3_1value_1frombind
+JNIEXPORT jboolean JNICALL Java_org_sqlite_jni_SQLite3Jni_sqlite3_1value_1frombind
(JNIEnv *, jclass, jlong);
/*
diff --git a/ext/jni/src/org/sqlite/jni/SQLite3Jni.java b/ext/jni/src/org/sqlite/jni/SQLite3Jni.java
index 7854f009f..5433cf4a6 100644
--- a/ext/jni/src/org/sqlite/jni/SQLite3Jni.java
+++ b/ext/jni/src/org/sqlite/jni/SQLite3Jni.java
@@ -2105,10 +2105,10 @@ final class SQLite3Jni {
}
@Canonical
- static native int sqlite3_value_frombind(@NotNull long ptrToValue);
+ static native boolean sqlite3_value_frombind(@NotNull long ptrToValue);
@Canonical
- public static int sqlite3_value_frombind(@NotNull sqlite3_value v){
+ public static boolean sqlite3_value_frombind(@NotNull sqlite3_value v){
return sqlite3_value_frombind(v.getNativePointer());
}
diff --git a/ext/jni/src/org/sqlite/jni/Tester1.java b/ext/jni/src/org/sqlite/jni/Tester1.java
index 274df3c8c..04d91921f 100644
--- a/ext/jni/src/org/sqlite/jni/Tester1.java
+++ b/ext/jni/src/org/sqlite/jni/Tester1.java
@@ -399,6 +399,16 @@ public class Tester1 implements Runnable {
affirm( !sqlite3_stmt_busy(stmt) );
sqlite3_finalize(stmt);
affirm(total1 == total2);
+
+ // sqlite3_value_frombind() checks...
+ stmt = prepare(db, "SELECT 1, ?");
+ sqlite3_bind_int(stmt, 1, 2);
+ rc = sqlite3_step(stmt);
+ affirm( SQLITE_ROW==rc );
+ affirm( !sqlite3_value_frombind(sqlite3_column_value(stmt, 0)) );
+ affirm( sqlite3_value_frombind(sqlite3_column_value(stmt, 1)) );
+ sqlite3_finalize(stmt);
+
sqlite3_close_v2(db);
affirm(0 == db.getNativePointer());
}