]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Bind sqlite3_db_handle() to JNI.
authorstephan <stephan@noemail.net>
Sat, 26 Aug 2023 17:30:14 +0000 (17:30 +0000)
committerstephan <stephan@noemail.net>
Sat, 26 Aug 2023 17:30:14 +0000 (17:30 +0000)
FossilOrigin-Name: 1a30919bfbb686464e8020e684120d22dd2375b910a17446b75452fda96a7449

ext/jni/src/c/sqlite3-jni.c
ext/jni/src/c/sqlite3-jni.h
ext/jni/src/org/sqlite/jni/SQLite3Jni.java
ext/jni/src/org/sqlite/jni/Tester1.java
manifest
manifest.uuid

index 50f0ffb252750f5ee7bb01e6e517d9606628196e..629126dd620ae6b495b518f5ed0e5faa150d1288 100644 (file)
@@ -2603,7 +2603,8 @@ S3JniApi(sqlite3_config() /* for SQLLOG */,
 S3JniApi(sqlite3_context_db_handle(),jobject,1context_1db_1handle)(
   JniArgsEnvClass, jobject jpCx
 ){
-  sqlite3 * const pDb = sqlite3_context_db_handle(PtrGet_sqlite3_context(jpCx));
+  sqlite3_context * const pCx = PtrGet_sqlite3_context(jpCx);
+  sqlite3 * const pDb = pCx ? sqlite3_context_db_handle(pCx) : 0;
   S3JniDb * const ps = pDb ? S3JniDb_from_c(pDb) : 0;
   return ps ? ps->jDb : 0;
 }
@@ -2810,6 +2811,16 @@ S3JniApi(sqlite3_db_filename(),jstring,1db_1filename)(
   return jRv;
 }
 
+S3JniApi(sqlite3_db_handle(),jobject,1db_1handle)(
+  JniArgsEnvClass, jobject jpStmt
+){
+  sqlite3_stmt * const pStmt = PtrGet_sqlite3_context(jpStmt);
+  sqlite3 * const pDb = pStmt ? sqlite3_db_handle(pStmt) : 0;
+  S3JniDb * const ps = pDb ? S3JniDb_from_c(pDb) : 0;
+  return ps ? ps->jDb : 0;
+}
+
+
 S3JniApi(sqlite3_db_status(),jint,1db_1status)(
   JniArgsEnvClass, jobject jDb, jint op, jobject jOutCurrent,
                         jobject jOutHigh, jboolean reset
index 7279b0376dcdccc9655b136166c3f9acea4403c4..c4fbf915be1511aa927a49bb5131187d141b33a2 100644 (file)
@@ -1147,6 +1147,14 @@ JNIEXPORT jint JNICALL Java_org_sqlite_jni_SQLite3Jni_sqlite3_1data_1count
 JNIEXPORT jstring JNICALL Java_org_sqlite_jni_SQLite3Jni_sqlite3_1db_1filename
   (JNIEnv *, jclass, jobject, jstring);
 
+/*
+ * Class:     org_sqlite_jni_SQLite3Jni
+ * Method:    sqlite3_db_handle
+ * Signature: (Lorg/sqlite/jni/sqlite3_stmt;)Lorg/sqlite/jni/sqlite3;
+ */
+JNIEXPORT jobject JNICALL Java_org_sqlite_jni_SQLite3Jni_sqlite3_1db_1handle
+  (JNIEnv *, jclass, jobject);
+
 /*
  * Class:     org_sqlite_jni_SQLite3Jni
  * Method:    sqlite3_db_config
index 86b20e70c3bcc34a4dc481454f9cbc8aee9004f7..b37265484baa4dbc8d4fc608f527e0eeefb7b07e 100644 (file)
@@ -545,6 +545,8 @@ public final class SQLite3Jni {
     @NotNull sqlite3 db, @NotNull String dbName
   );
 
+  public static native sqlite3 sqlite3_db_handle( @NotNull sqlite3_stmt stmt );
+
   /**
      Overload for sqlite3_db_config() calls which take (int,int*)
      variadic arguments. Returns SQLITE_MISUSE if op is not one of the
index 9ac1396f4bca8f12615fbcad64418c74d0a4c96c..426cee598f98380ebc35d2ca87f582c1d9efd26e 100644 (file)
@@ -253,12 +253,14 @@ public class Tester1 implements Runnable {
     affirm(0 == rc);
     sqlite3_stmt stmt = outStmt.take();
     affirm(0 != stmt.getNativePointer());
+    affirm( db == sqlite3_db_handle(stmt) );
     rc = sqlite3_step(stmt);
     if( SQLITE_DONE != rc ){
       outln("step failed ??? ",rc, " ",sqlite3_errmsg(db));
     }
     affirm(SQLITE_DONE == rc);
     sqlite3_finalize(stmt);
+    affirm( null == sqlite3_db_handle(stmt) );
     affirm(0 == stmt.getNativePointer());
 
     { /* Demonstrate how to use the "zTail" option of
@@ -924,8 +926,8 @@ public class Tester1 implements Runnable {
   @ManualTest /* because threads inherently break this test */
   private void testBusy(){
     final String dbName = "_busy-handler.db";
-    final OutputPointer.sqlite3 outDb = new OutputPointer.sqlite3();
-    final OutputPointer.sqlite3_stmt outStmt = new OutputPointer.sqlite3_stmt();
+    final OutputPointer.sqlite3 outDb = OutputPointer.sqlite3();
+    final OutputPointer.sqlite3_stmt outStmt = OutputPointer.sqlite3_stmt();
 
     int rc = sqlite3_open(dbName, outDb);
     ++metrics.dbOpen;
index 81aaf952d4cff7966c57b9d5e33a17d34f9b2f43..f8be8f320361172ae56ccb10519177a45cf77df5 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Correct\sa\spotential\sduplicate\sxDestroy()\sbeing\striggered\sfor\sJava-side\scollations.
-D 2023-08-26T16:55:27.685
+C Bind\ssqlite3_db_handle()\sto\sJNI.
+D 2023-08-26T17:30:14.460
 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
 F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724
@@ -236,8 +236,8 @@ F ext/icu/sqliteicu.h fa373836ed5a1ee7478bdf8a1650689294e41d0c89c1daab26e9ae78a3
 F ext/jni/GNUmakefile d9244b5addf58868343a74a94faa71f829e7f40c163486d053f4b4bbea173703
 F ext/jni/README.md 1332b1fa27918bd5d9ca2d0d4f3ac3a6ab86b9e3699dc5bfe32904a027f3d2a9
 F ext/jni/jar-dist.make 030aaa4ae71dd86e4ec5e7c1e6cd86f9dfa47c4592c070d2e35157e42498e1fa
-F ext/jni/src/c/sqlite3-jni.c b2ddceed02600dfdaa3a0d876111b7ad2d4f247f8396f3c1b68bb9ea2e129a4a
-F ext/jni/src/c/sqlite3-jni.h 2745c4abd0933a4e8cc48989fffbad3936b4eaada64cce9ce11453dcd30e4184
+F ext/jni/src/c/sqlite3-jni.c 019f9b9342909af59982ee8c193a181202ef201b31c1f235e6958182c49e9d86
+F ext/jni/src/c/sqlite3-jni.h a4559d325925ca4d55ca75e2054adff607fdd35c2a94fecc9f2e8f919cababed
 F ext/jni/src/org/sqlite/jni/AggregateFunction.java e0aac6ccae05702f8ee779820570866a2760aaa57a73135c57c8d3580bef52d5
 F ext/jni/src/org/sqlite/jni/AuthorizerCallback.java c374bb76409cce7a0bdba94877706b59ac6127fa5d9e6af3e8058c99ce99c030
 F ext/jni/src/org/sqlite/jni/AutoExtensionCallback.java 4290d8b0937b07d466b50e6ca4136cec037f3ce658277af0d0c2d371e5f4b459
@@ -262,9 +262,9 @@ F ext/jni/src/org/sqlite/jni/ResultCode.java ba701f20213a5f259e94cfbfdd36eb7ac7c
 F ext/jni/src/org/sqlite/jni/RollbackHookCallback.java be7f7a26d1102fb514d835e11198d51302af8053d97188bfb2e34c2133208568
 F ext/jni/src/org/sqlite/jni/SQLFunction.java d060f302b2cc4cf7a4f5a6b2d36458a2e6fc9648374b5d09c36a43665af41207
 F ext/jni/src/org/sqlite/jni/SQLite3CallbackProxy.java 13c4ea6f35871261eba63fa4117715515e0beecbdebfb879ec5b1f340ed36904
-F ext/jni/src/org/sqlite/jni/SQLite3Jni.java 4be23360d93011d80676bebb1f21f7da0fc4ab637a6d138c8c35bbb2f764b19d
+F ext/jni/src/org/sqlite/jni/SQLite3Jni.java 9368994e8da4f8012466e4314f484818b8247c7417904fb04ffc87142c87aed5
 F ext/jni/src/org/sqlite/jni/ScalarFunction.java 21301a947e49f0dd9c682dfe2cc8a6518226c837253dd791cd512f847eeca52c
-F ext/jni/src/org/sqlite/jni/Tester1.java f5205a22f10de63298ede691ed2938ab39084d1ff13d6f53a54c5100f798b933
+F ext/jni/src/org/sqlite/jni/Tester1.java 90c97ee08e8ad859695b79767869f609bb11b71ce7d6b119c766275d6cbfacf3
 F ext/jni/src/org/sqlite/jni/TesterFts5.java 6f135c60e24c89e8eecb9fe61dde0f3bb2906de668ca6c9186bcf34bdaf94629
 F ext/jni/src/org/sqlite/jni/TraceV2Callback.java 25a45e800b0c57f506c237d111bcfd09da584e936fee395d4bd802100ebeff8c
 F ext/jni/src/org/sqlite/jni/UpdateHookCallback.java f5eadfa44462c050658230884b41477274f34306accd85c8201a7afbc00d2429
@@ -2103,8 +2103,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 cf406528eb86d8d0d55a468b2c4ec32a11a4947f45c4bbabdde8742ae199ce1f
-R 5e283ad208dc4181e7491a5a1cc6002c
+P 25331172f78544f7f23ad7821cbf065589f6d02706184d4c83fe3988452dac5d
+R edbf86b7a8a5043325b80898d6ff9011
 U stephan
-Z fd7fa811e5faceb76dda701b17b92b49
+Z 71902b3879f7020088c52617ebe652ae
 # Remove this line to create a well-formed Fossil manifest.
index 9422aa180e348c2fffd62044df2ea98592749238..9253a66eb1886a4cfeb97cfdeabdc1bce471cb73 100644 (file)
@@ -1 +1 @@
-25331172f78544f7f23ad7821cbf065589f6d02706184d4c83fe3988452dac5d
\ No newline at end of file
+1a30919bfbb686464e8020e684120d22dd2375b910a17446b75452fda96a7449
\ No newline at end of file