From: stephan Date: Sun, 30 Jul 2023 06:00:53 +0000 (+0000) Subject: Add commit hook failure to JNI tests. X-Git-Tag: version-3.43.0~47^2~133 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=00c0c5883adc10f7655bbf4de527d53dad62e282;p=thirdparty%2Fsqlite.git Add commit hook failure to JNI tests. FossilOrigin-Name: be4459b495cc2555e4d8ca24dd56c3da1036d25af7cc077bbc3d93c2a3e8c40b --- diff --git a/ext/jni/src/org/sqlite/jni/Tester1.java b/ext/jni/src/org/sqlite/jni/Tester1.java index f753a22e4a..2c3c6bae8e 100644 --- a/ext/jni/src/org/sqlite/jni/Tester1.java +++ b/ext/jni/src/org/sqlite/jni/Tester1.java @@ -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 counter = new ValueHolder<>(0); + final ValueHolder 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); } diff --git a/manifest b/manifest index cff3fdf576..974a60d6e5 100644 --- 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. diff --git a/manifest.uuid b/manifest.uuid index 844332b6b5..ff969cfbd7 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -c687297fcae082cbd7f9258c43f3841fd34904d8b62b0adf3cd61fcddeee483d \ No newline at end of file +be4459b495cc2555e4d8ca24dd56c3da1036d25af7cc077bbc3d93c2a3e8c40b \ No newline at end of file