]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Add commit hook failure to JNI tests.
authorstephan <stephan@noemail.net>
Sun, 30 Jul 2023 06:00:53 +0000 (06:00 +0000)
committerstephan <stephan@noemail.net>
Sun, 30 Jul 2023 06:00:53 +0000 (06:00 +0000)
FossilOrigin-Name: be4459b495cc2555e4d8ca24dd56c3da1036d25af7cc077bbc3d93c2a3e8c40b

ext/jni/src/org/sqlite/jni/Tester1.java
manifest
manifest.uuid

index f753a22e4ad1c05a8c6c7f329fd38eb141c4b00d..2c3c6bae8e2b00ef21e32c03f2adf794b220511c 100644 (file)
@@ -64,19 +64,20 @@ public class Tester1 {
   private static void execSql(sqlite3 db, String[] sql){
     execSql(db, String.join("", sql));
   }
-  private static void execSql(sqlite3 db, String sql){
+  private static int execSql(sqlite3 db, boolean throwOnError, String sql){
       OutputPointer.Int32 oTail = new OutputPointer.Int32();
       final byte[] sqlUtf8 = sql.getBytes(StandardCharsets.UTF_8);
       int pos = 0, n = 1;
       byte[] sqlChunk = sqlUtf8;
       sqlite3_stmt stmt = new sqlite3_stmt();
+      int rc = 0;
       while(pos < sqlChunk.length){
         if(pos > 0){
           sqlChunk = Arrays.copyOfRange(sqlChunk, pos,
                                         sqlChunk.length);
         }
         if( 0==sqlChunk.length ) break;
-        int rc = sqlite3_prepare_v2(db, sqlChunk, stmt, oTail);
+        rc = sqlite3_prepare_v2(db, sqlChunk, stmt, oTail);
         affirm(0 == rc);
         pos = oTail.getValue();
         affirm(0 != stmt.getNativePointer());
@@ -84,9 +85,18 @@ public class Tester1 {
         sqlite3_finalize(stmt);
         affirm(0 == stmt.getNativePointer());
         if(0!=rc && SQLITE_ROW!=rc && SQLITE_DONE!=rc){
-          throw new RuntimeException("db op failed with rc="+rc);
+          if(throwOnError){
+            throw new RuntimeException("db op failed with rc="+rc);
+          }else{
+            break;
+          }
         }
       }
+      if(SQLITE_ROW==rc || SQLITE_DONE==rc) rc = 0;
+      return rc;
+  }
+  private static void execSql(sqlite3 db, String sql){
+    execSql(db, true, sql);
   }
   private static void testOpenDb1(){
       sqlite3 db = new sqlite3();
@@ -744,10 +754,11 @@ public class Tester1 {
   private static void testCommitHook(){
     final sqlite3 db = createNewDb();
     final ValueHolder<Integer> counter = new ValueHolder<>(0);
+    final ValueHolder<Integer> hookResult = new ValueHolder<>(0);
     final CommitHook theHook = new CommitHook(){
         public int xCallback(){
           ++counter.value;
-          return 0;
+          return hookResult.value;
         }
       };
     CommitHook oldHook = sqlite3_commit_hook(db, theHook);
@@ -782,6 +793,10 @@ public class Tester1 {
     affirm( newHook == oldHook );
     execSql(db, "BEGIN; update t set a='i' where a='h'; COMMIT;");
     affirm( 5 == counter.value );
+    hookResult.value = SQLITE_ERROR;
+    int rc = execSql(db, false, "BEGIN; update t set a='j' where a='i'; COMMIT;");
+    affirm( SQLITE_CONSTRAINT == rc );
+    affirm( 6 == counter.value );
     sqlite3_close_v2(db);
   }
 
index cff3fdf576cc6ca17a43b7a3d568de5b23c2720f..974a60d6e5c4a857e159f51f45fb0caa9822618f 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Bind\ssqlite3_commit_hook()\sto\sJNI.
-D 2023-07-30T05:50:34.120
+C Add\scommit\shook\sfailure\sto\sJNI\stests.
+D 2023-07-30T06:00:53.315
 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
 F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724
@@ -242,7 +242,7 @@ F ext/jni/src/org/sqlite/jni/OutputPointer.java 08a752b58a33696c5eaf0eb9361a0966
 F ext/jni/src/org/sqlite/jni/ProgressHandler.java 5979450e996416d28543f1d42634d308439565a99332a8bd84e424af667116cc
 F ext/jni/src/org/sqlite/jni/SQLFunction.java 663a4e479ec65bfbf893586439e12d30b8237898064a22ab64f5658b57315f37
 F ext/jni/src/org/sqlite/jni/SQLite3Jni.java ca239543968a4fd229322b92925a2754358964be6b1fc4099ff548372db2009e
-F ext/jni/src/org/sqlite/jni/Tester1.java f7144f586b10e7cd42974c7cb067d7e026a0953612a8ca9fcf950b7e6f636bbf
+F ext/jni/src/org/sqlite/jni/Tester1.java 76bca3c7a37019d2631aa224d23edb814c9be322db0529b2fd7cea5d52a202d6
 F ext/jni/src/org/sqlite/jni/Tracer.java c2fe1eba4a76581b93b375a7b95ab1919e5ae60accfb06d6beb067b033e9bae1
 F ext/jni/src/org/sqlite/jni/ValueHolder.java f022873abaabf64f3dd71ab0d6037c6e71cece3b8819fa10bf26a5461dc973ee
 F ext/jni/src/org/sqlite/jni/sqlite3.java c7d0500c7269882243aafb41425928d094b2fcbdbc2fd1caffc276871cd3fae3
@@ -2068,8 +2068,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 437ecfe8abf8d294d429d191d811da6148e0b2ebb74cf66998480bfc8ef58bdf
-R f8d9020a913f8fd8756147b3f4685626
+P c687297fcae082cbd7f9258c43f3841fd34904d8b62b0adf3cd61fcddeee483d
+R f495472e9e17ebb6a754de3bf1538a92
 U stephan
-Z 4f8f049f3a39067bd46eaa81ec3fdaf7
+Z cadc90f478a05b2b1a81a1b897b5c5ad
 # Remove this line to create a well-formed Fossil manifest.
index 844332b6b581548bf3c098980202c5ce66f47ff3..ff969cfbd78097989a687279aa50b65a329c17bb 100644 (file)
@@ -1 +1 @@
-c687297fcae082cbd7f9258c43f3841fd34904d8b62b0adf3cd61fcddeee483d
\ No newline at end of file
+be4459b495cc2555e4d8ca24dd56c3da1036d25af7cc077bbc3d93c2a3e8c40b
\ No newline at end of file