aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorstephan <stephan@noemail.net>2023-10-01 11:53:40 +0000
committerstephan <stephan@noemail.net>2023-10-01 11:53:40 +0000
commitec15e551f98f1f01c26b43d3419bc8dde2aa3aa7 (patch)
tree8fe1a86478d55b7148adde4569f986fad736d878
parentf046b8232467095a17065c482196d40034066235 (diff)
downloadsqlite-ec15e551f98f1f01c26b43d3419bc8dde2aa3aa7.tar.gz
sqlite-ec15e551f98f1f01c26b43d3419bc8dde2aa3aa7.zip
Make JNI binding of sqlite3_value_frombind() return boolean instead of int and add tests for it.
FossilOrigin-Name: 906e2ed3e9647f5c2355e9fea2beee141767cae7016da9fa1fe88283726b9369
-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
-rw-r--r--manifest18
-rw-r--r--manifest.uuid2
6 files changed, 32 insertions, 15 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());
}
diff --git a/manifest b/manifest
index 2eae6bfcf..93e3f3162 100644
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Fix\sJNI\sbinding\sto\scompile\swithout\sSQLITE_ENABLE_PREUPDATE_HOOK.\sAdd\sbuild\soption\sto\sdisable\sall\soptional\sENABLE\sflags.
-D 2023-09-30T17:08:29.126
+C Make\sJNI\sbinding\sof\ssqlite3_value_frombind()\sreturn\sboolean\sinstead\sof\sint\sand\sadd\stests\sfor\sit.
+D 2023-10-01T11:53:40.043
F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724
@@ -238,8 +238,8 @@ F ext/icu/sqliteicu.h fa373836ed5a1ee7478bdf8a1650689294e41d0c89c1daab26e9ae78a3
F ext/jni/GNUmakefile b4e80da3c66edaf48e90158bbc0034dcd6a52c4828cc795f43780d0fa9a6ae5b
F ext/jni/README.md 9fceaeb17cecdc5d699dfc83c0cbc3a03fdb3b86bf676381894166c73375ee75
F ext/jni/jar-dist.make 030aaa4ae71dd86e4ec5e7c1e6cd86f9dfa47c4592c070d2e35157e42498e1fa
-F ext/jni/src/c/sqlite3-jni.c fa4f46c514d1c99955229bdf9d7cb731e6a25187a817bfb7f847cc4d0e39cbc1
-F ext/jni/src/c/sqlite3-jni.h 8c6368788415552dd1ee9f3029475f38982d048c87f598e573f98357924202ac
+F ext/jni/src/c/sqlite3-jni.c c771fe717d38718d45a64e220f0a7e4d4b0482cc2ded3d5590bad6041a405e64
+F ext/jni/src/c/sqlite3-jni.h a9435695bbf5ed4c8f0c802b963948d7698563f81c15e2fa8a1d9b85a4a1b719
F ext/jni/src/org/sqlite/jni/AbstractCollationCallback.java 95e88ba04f4aac51ffec65693e878e234088b2f21b387f4e4285c8b72b33e436
F ext/jni/src/org/sqlite/jni/AggregateFunction.java 7312486bc65fecdb91753c0a4515799194e031f45edbe16a6373cea18f404dc4
F ext/jni/src/org/sqlite/jni/AuthorizerCallback.java e6135be32f12bf140bffa39be7fd1a45ad83b2661ed49c08dbde04c8485feb38
@@ -260,10 +260,10 @@ F ext/jni/src/org/sqlite/jni/ResultCode.java ba701f20213a5f259e94cfbfdd36eb7ac7c
F ext/jni/src/org/sqlite/jni/RollbackHookCallback.java d12352c0e22840de484ffa9b11ed5058bb0daca2e9f218055d3c54c947a273c4
F ext/jni/src/org/sqlite/jni/SQLFunction.java 544a875d33fd160467d82e2397ac33157b29971d715a821a4fad3c899113ee8c
F ext/jni/src/org/sqlite/jni/SQLTester.java da42be06a2d644e0b915b40508934c1f32391e5308ab8767c1e2e65a281a198f
-F ext/jni/src/org/sqlite/jni/SQLite3Jni.java 2f23f9047b0e817993d5d1dc61252940107f646ddb84a05aac51bb1d51b5f946
+F ext/jni/src/org/sqlite/jni/SQLite3Jni.java ad8a595954915aefaf66c9d17583f7a1109cc45747fe382f234a686b0028a593
F ext/jni/src/org/sqlite/jni/ScalarFunction.java 6d387bb499fbe3bc13c53315335233dbf6a0c711e8fa7c521683219b041c614c
F ext/jni/src/org/sqlite/jni/TableColumnMetadata.java 54511b4297fa28dcb3f49b24035e34ced10e3fd44fd0e458e784f4d6b0096dab
-F ext/jni/src/org/sqlite/jni/Tester1.java 03e964552ce735e13b0f7f996d7ce60626c918d8e23392b40ed14ffd07dceebd
+F ext/jni/src/org/sqlite/jni/Tester1.java 6373e551a89a68bbf2c79c5b62ef88b4001f8ea65a2ecdf693c4041047408bec
F ext/jni/src/org/sqlite/jni/TesterFts5.java 854c737bb5c9463ee92a8ee230013e924236dd4b74d4688dd62c17f38d5837db
F ext/jni/src/org/sqlite/jni/TraceV2Callback.java beb0b064c1a5f8bfe585a324ed39a4e33edbe379a3fc60f1401661620d3ca7c0
F ext/jni/src/org/sqlite/jni/UpdateHookCallback.java 8376f4a931f2d5612b295c003c9515ba933ee76d8f95610e89c339727376e36c
@@ -2122,8 +2122,8 @@ F vsixtest/vsixtest.tcl 6a9a6ab600c25a91a7acc6293828957a386a8a93
F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc
F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e
F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0
-P 5e387275f69ab2d3159b4b67b8cbfc6270410b61e5ac1f988616e8d051f6572e
-R 02618be495064fd0c511f49fba8a92b2
+P c04022b7407f77eaf0175e831ebcd6bbdc0af1cef0d42c5c11102aa8484f24ca
+R c37e2ce6bc01474a856ea1d8e3c3b24a
U stephan
-Z fb900a6927398da79962f35041fce8dc
+Z c76d81a205c13235420ccf1380b4458a
# Remove this line to create a well-formed Fossil manifest.
diff --git a/manifest.uuid b/manifest.uuid
index 92d537682..b1236c49b 100644
--- a/manifest.uuid
+++ b/manifest.uuid
@@ -1 +1 @@
-c04022b7407f77eaf0175e831ebcd6bbdc0af1cef0d42c5c11102aa8484f24ca \ No newline at end of file
+906e2ed3e9647f5c2355e9fea2beee141767cae7016da9fa1fe88283726b9369 \ No newline at end of file