]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Minor JNI cleanups.
authorstephan <stephan@noemail.net>
Sat, 19 Aug 2023 11:26:52 +0000 (11:26 +0000)
committerstephan <stephan@noemail.net>
Sat, 19 Aug 2023 11:26:52 +0000 (11:26 +0000)
FossilOrigin-Name: 1cecb9e0383aa78c491f9ba88c831a88b4b2d40ceef1b87be494b6ddc0789e41

ext/jni/jar-dist.make
ext/jni/src/c/sqlite3-jni.c
ext/jni/src/org/sqlite/jni/SQLFunction.java
ext/jni/src/org/sqlite/jni/Tester1.java
ext/jni/src/org/sqlite/jni/sqlite3_context.java
ext/jni/src/org/sqlite/jni/tester/SQLTester.java
manifest
manifest.uuid

index 9f9d13002a925a1a5b9e54aed752859352f99f6a..9dd9f7b296d2d0de15c2dfc9dfb797d01c7232b8 100644 (file)
@@ -6,7 +6,9 @@
 # proper top-level JDK directory and, depending on the platform, add a
 # platform-specific -I directory. It should build as-is with any
 # 2020s-era version of gcc or clang. It requires JDK version 8 or
-# higher.
+# higher and that JAVA_HOME points to the top-most installation
+# directory of that JDK. On Ubuntu-style systems the JDK is typically
+# installed under /usr/lib/jvm/java-VERSION-PLATFORM.
 
 default: all
 
@@ -36,9 +38,6 @@ SQLITE_OPT = \
   -DSQLITE_USE_URI=1 \
   -DSQLITE_ENABLE_FTS5 \
   -DSQLITE_DEBUG
-# -DSQLITE_DEBUG is just to work around a -Wall warning
-# for a var which gets set in all builds but only read
-# via assert().
 
 sqlite3-jni.dll = libsqlite3-jni.so
 $(sqlite3-jni.dll):
index ebd1e7940cbe531e15d1d7df1d1e701174a94987..347070ccbe2db0f6ce5f54b58b2656212cff7aaa 100644 (file)
@@ -511,33 +511,33 @@ static struct {
     S3JniEnv * aHead /* Linked list of in-use instances */;
     S3JniEnv * aFree /* Linked list of free instances */;
     sqlite3_mutex * mutex /* mutex for aHead and aFree */;
-    void const * locker   /* env mutex is held on this object's behalf
-                             (used only for sanity checking). */;
+    void const * locker /* env mutex is held on this object's behalf.
+                           Used only for sanity checking. */;
   } envCache;
   struct {
     S3JniDb * aUsed  /* Linked list of in-use instances */;
     S3JniDb * aFree  /* Linked list of free instances */;
     sqlite3_mutex * mutex /* mutex for aUsed and aFree */;
-    void const * locker   /* perDb mutex is held on this object's
-                             behalf.  Unlike envCache.locker, we
-                             cannot always have this set to the
-                             current JNIEnv object. */;
+    void const * locker /* perDb mutex is held on this object's
+                           behalf.  Unlike envCache.locker, we cannot
+                           always have this set to the current JNIEnv
+                           object. Used only for sanity checking. */;
   } perDb;
   /* Internal metrics. */
   struct {
-    unsigned envCacheHits;
-    unsigned envCacheMisses;
-    unsigned nMutexEnv       /* number of times envCache.mutex was entered */;
-    unsigned nMutexPerDb     /* number of times perDb.mutex was entered */;
-    unsigned nMutexAutoExt   /* number of times autoExt.mutex was entered */;
-    unsigned nDestroy        /* xDestroy() calls across all types */;
+    volatile unsigned envCacheHits;
+    volatile unsigned envCacheMisses;
+    volatile unsigned nMutexEnv       /* number of times envCache.mutex was entered */;
+    volatile unsigned nMutexPerDb     /* number of times perDb.mutex was entered */;
+    volatile unsigned nMutexAutoExt   /* number of times autoExt.mutex was entered */;
+    volatile unsigned nDestroy        /* xDestroy() calls across all types */;
     struct {
       /* Number of calls for each type of UDF callback. */
-      unsigned nFunc;
-      unsigned nStep;
-      unsigned nFinal;
-      unsigned nValue;
-      unsigned nInverse;
+      volatile unsigned nFunc;
+      volatile unsigned nStep;
+      volatile unsigned nFinal;
+      volatile unsigned nValue;
+      volatile unsigned nInverse;
     } udf;
   } metrics;
   /**
index 21e5fe622a074b672400c9eba5639f6605c107fb..28775608ad0a41ebe2c09c9c9349d3f5ca62c648 100644 (file)
@@ -21,17 +21,19 @@ package org.sqlite.jni;
 
    This class is not used by itself, but is a marker base class. The
    three UDF types are modelled by the inner classes Scalar,
-   Aggregate<T>, and Window<T>. Most simply, clients may create
-   anonymous classes from those to implement UDFs. Clients are free to
-   create their own classes for use with UDFs, so long as they conform
-   to the public interfaces defined by those three classes. The JNI
-   layer only actively relies on the SQLFunction base class.
+   Aggregate<T>, and Window<T>. Most simply, clients may subclass
+   those, or create anonymous classes from them, to implement
+   UDFs. Clients are free to create their own classes for use with
+   UDFs, so long as they conform to the public interfaces defined by
+   those three classes. The JNI layer only actively relies on the
+   SQLFunction base class and the method names and signatures used by
+   the UDF callback interfaces.
 */
 public abstract class SQLFunction {
 
   /**
      PerContextState assists aggregate and window functions in
-     managinga their accumulator state across calls to the UDF's
+     managing their accumulator state across calls to the UDF's
      callbacks.
 
      If a given aggregate or window function is called multiple times
index ba32bd15c4390c57a194313da3ee42392c450bb6..74cd7d21f432c8c96225bd998cd134559092b03e 100644 (file)
@@ -69,10 +69,12 @@ public class Tester1 implements Runnable {
     affirm(v, "Affirmation failed.");
   }
 
-  private static void test1(){
-    outln("libversion_number:",
-          sqlite3_libversion_number(),"\n",
-          sqlite3_libversion(),"\n",SQLITE_SOURCE_ID);
+  private void test1(){
+    if( 0==tId ){
+      outln("libversion_number:",
+            sqlite3_libversion_number(),"\n",
+            sqlite3_libversion(),"\n",SQLITE_SOURCE_ID);
+    }
     affirm(sqlite3_libversion_number() == SQLITE_VERSION_NUMBER);
     //outln("threadsafe = "+sqlite3_threadsafe());
     affirm(SQLITE_MAX_LENGTH > 0);
@@ -156,7 +158,7 @@ public class Tester1 implements Runnable {
     return rv;
   }
 
-  private static void testCompileOption(){
+  private void testCompileOption(){
     int i = 0;
     String optName;
     outln("compile options:");
@@ -167,7 +169,7 @@ public class Tester1 implements Runnable {
 
   }
 
-  private static void testOpenDb1(){
+  private void testOpenDb1(){
     final OutputPointer.sqlite3 out = new OutputPointer.sqlite3();
     int rc = sqlite3_open(":memory:", out);
     ++metrics.dbOpen;
@@ -189,7 +191,7 @@ public class Tester1 implements Runnable {
     affirm(0 == db.getNativePointer());
   }
 
-  private static void testOpenDb2(){
+  private void testOpenDb2(){
     final OutputPointer.sqlite3 out = new OutputPointer.sqlite3();
     int rc = sqlite3_open_v2(":memory:", out,
                              SQLITE_OPEN_READWRITE
@@ -202,7 +204,7 @@ public class Tester1 implements Runnable {
     affirm(0 == db.getNativePointer());
   }
 
-  private static void testPrepare123(){
+  private void testPrepare123(){
     sqlite3 db = createNewDb();
     int rc;
     final OutputPointer.sqlite3_stmt outStmt = new OutputPointer.sqlite3_stmt();
@@ -265,7 +267,7 @@ public class Tester1 implements Runnable {
     sqlite3_close_v2(db);
   }
 
-  private static void testBindFetchInt(){
+  private void testBindFetchInt(){
     sqlite3 db = createNewDb();
     execSql(db, "CREATE TABLE t(a)");
 
@@ -312,7 +314,7 @@ public class Tester1 implements Runnable {
     affirm(0 == db.getNativePointer());
   }
 
-  private static void testBindFetchInt64(){
+  private void testBindFetchInt64(){
     sqlite3 db = createNewDb();
     execSql(db, "CREATE TABLE t(a)");
     sqlite3_stmt stmt = prepare(db, "INSERT INTO t(a) VALUES(?);");
@@ -334,7 +336,7 @@ public class Tester1 implements Runnable {
     sqlite3_close_v2(db);
   }
 
-  private static void testBindFetchDouble(){
+  private void testBindFetchDouble(){
     sqlite3 db = createNewDb();
     execSql(db, "CREATE TABLE t(a)");
     sqlite3_stmt stmt = prepare(db, "INSERT INTO t(a) VALUES(?);");
@@ -359,7 +361,7 @@ public class Tester1 implements Runnable {
     sqlite3_close_v2(db);
   }
 
-  private static void testBindFetchText(){
+  private void testBindFetchText(){
     sqlite3 db = createNewDb();
     execSql(db, "CREATE TABLE t(a)");
     sqlite3_stmt stmt = prepare(db, "INSERT INTO t(a) VALUES(?);");
@@ -388,7 +390,7 @@ public class Tester1 implements Runnable {
     sqlite3_close_v2(db);
   }
 
-  private static void testBindFetchBlob(){
+  private void testBindFetchBlob(){
     sqlite3 db = createNewDb();
     execSql(db, "CREATE TABLE t(a)");
     sqlite3_stmt stmt = prepare(db, "INSERT INTO t(a) VALUES(?);");
@@ -417,7 +419,7 @@ public class Tester1 implements Runnable {
     sqlite3_close_v2(db);
   }
 
-  private static void testSql(){
+  private void testSql(){
     sqlite3 db = createNewDb();
     sqlite3_stmt stmt = prepare(db, "SELECT 1");
     affirm( "SELECT 1".equals(sqlite3_sql(stmt)) );
@@ -428,7 +430,7 @@ public class Tester1 implements Runnable {
     sqlite3_finalize(stmt);
   }
 
-  private static void testCollation(){
+  private void testCollation(){
     final sqlite3 db = createNewDb();
     execSql(db, "CREATE TABLE t(a); INSERT INTO t(a) VALUES('a'),('b'),('c')");
     final ValueHolder<Boolean> xDestroyCalled = new ValueHolder<>(false);
@@ -501,7 +503,7 @@ public class Tester1 implements Runnable {
     affirm(xDestroyCalled.value);
   }
 
-  private static void testToUtf8(){
+  private void testToUtf8(){
     /**
        Java docs seem contradictory, claiming to use "modified UTF-8"
        encoding while also claiming to export using RFC 2279:
@@ -515,7 +517,7 @@ public class Tester1 implements Runnable {
     affirm( 5 == ba.length /* as opposed to 6 in modified utf-8 */);
   }
 
-  private static void testStatus(){
+  private void testStatus(){
     final OutputPointer.Int64 cur64 = new OutputPointer.Int64();
     final OutputPointer.Int64 high64 = new OutputPointer.Int64();
     final OutputPointer.Int32 cur32 = new OutputPointer.Int32();
@@ -543,7 +545,7 @@ public class Tester1 implements Runnable {
     sqlite3_close_v2(db);
   }
 
-  private static void testUdf1(){
+  private void testUdf1(){
     final sqlite3 db = createNewDb();
     // These ValueHolders are just to confirm that the func did what we want...
     final ValueHolder<Boolean> xDestroyCalled = new ValueHolder<>(false);
@@ -587,7 +589,7 @@ public class Tester1 implements Runnable {
     affirm( xDestroyCalled.value );
   }
 
-  private static void testUdfJavaObject(){
+  private void testUdfJavaObject(){
     final sqlite3 db = createNewDb();
     final ValueHolder<sqlite3> testResult = new ValueHolder<>(db);
     final SQLFunction func = new SQLFunction.Scalar(){
@@ -616,7 +618,7 @@ public class Tester1 implements Runnable {
     sqlite3_close_v2(db);
   }
 
-  private static void testUdfAggregate(){
+  private void testUdfAggregate(){
     final sqlite3 db = createNewDb();
     final ValueHolder<Boolean> xFinalNull =
       // To confirm that xFinal() is called with no aggregate state
@@ -678,7 +680,7 @@ public class Tester1 implements Runnable {
     sqlite3_close_v2(db);
   }
 
-  private static void testUdfWindow(){
+  private void testUdfWindow(){
     final sqlite3 db = createNewDb();
     /* Example window function, table, and results taken from:
        https://sqlite.org/windowfunctions.html#udfwinfunc */
@@ -735,7 +737,7 @@ public class Tester1 implements Runnable {
     sqlite3_close_v2(db);
   }
 
-  private static void listBoundMethods(){
+  private void listBoundMethods(){
     if(false){
       final java.lang.reflect.Field[] declaredFields =
         SQLite3Jni.class.getDeclaredFields();
@@ -766,7 +768,7 @@ public class Tester1 implements Runnable {
     outln(count+" functions named sqlite3_*.");
   }
 
-  private static void testTrace(){
+  private void testTrace(){
     final sqlite3 db = createNewDb();
     final ValueHolder<Integer> counter = new ValueHolder<>(0);
     /* Ensure that characters outside of the UTF BMP survive the trip
@@ -815,7 +817,7 @@ public class Tester1 implements Runnable {
     affirm( 7 == counter.value );
   }
 
-  private static void testBusy(){
+  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();
@@ -866,7 +868,7 @@ public class Tester1 implements Runnable {
     }
   }
 
-  private static void testProgress(){
+  private void testProgress(){
     final sqlite3 db = createNewDb();
     final ValueHolder<Integer> counter = new ValueHolder<>(0);
     sqlite3_progress_handler(db, 1, new ProgressHandler(){
@@ -884,7 +886,7 @@ public class Tester1 implements Runnable {
     sqlite3_close_v2(db);
   }
 
-  private static void testCommitHook(){
+  private void testCommitHook(){
     final sqlite3 db = createNewDb();
     final ValueHolder<Integer> counter = new ValueHolder<>(0);
     final ValueHolder<Integer> hookResult = new ValueHolder<>(0);
@@ -933,7 +935,7 @@ public class Tester1 implements Runnable {
     sqlite3_close_v2(db);
   }
 
-  private static void testUpdateHook(){
+  private void testUpdateHook(){
     final sqlite3 db = createNewDb();
     final ValueHolder<Integer> counter = new ValueHolder<>(0);
     final ValueHolder<Integer> expectedOp = new ValueHolder<>(0);
@@ -982,7 +984,7 @@ public class Tester1 implements Runnable {
     sqlite3_close_v2(db);
   }
 
-  private static void testRollbackHook(){
+  private void testRollbackHook(){
     final sqlite3 db = createNewDb();
     final ValueHolder<Integer> counter = new ValueHolder<>(0);
     final RollbackHook theHook = new RollbackHook(){
@@ -1020,7 +1022,7 @@ public class Tester1 implements Runnable {
      it throws.
   */
   @SuppressWarnings("unchecked")
-  private static void testFts5() throws Exception {
+  private void testFts5() throws Exception {
     if( !SQLITE_ENABLE_FTS5 ){
       outln("SQLITE_ENABLE_FTS5 is not set. Skipping FTS5 tests.");
       return;
@@ -1048,7 +1050,7 @@ public class Tester1 implements Runnable {
     }
   }
 
-  private static void testAuthorizer(){
+  private void testAuthorizer(){
     final sqlite3 db = createNewDb();
     final ValueHolder<Integer> counter = new ValueHolder<>(0);
     final ValueHolder<Integer> authRc = new ValueHolder<>(0);
@@ -1070,7 +1072,7 @@ public class Tester1 implements Runnable {
     sqlite3_close(db);
   }
 
-  private static void testAutoExtension(){
+  private void testAutoExtension(){
     final ValueHolder<Integer> val = new ValueHolder<>(0);
     final ValueHolder<String> toss = new ValueHolder<>(null);
     final AutoExtension ax = new AutoExtension(){
@@ -1159,7 +1161,7 @@ public class Tester1 implements Runnable {
     affirm( 8 == val.value );
   }
 
-  private static void testSleep(){
+  private void testSleep(){
     out("Sleeping briefly... ");
     sqlite3_sleep(600);
     outln("Woke up.");
@@ -1273,7 +1275,7 @@ public class Tester1 implements Runnable {
         }
       }
     }
-    outln("\tSQLite3Jni sqlite3_*() methods: "+
+    outln("\tSQLite3Jni.sqlite3_*() methods: "+
           nNatives+" native methods and "+
           (nMethods - nNatives)+" Java impls");
     outln("\tTotal test time = "
index a61ff21c7e6250ddc6adbdc21ce577d06db43de8..d582df7838366c6c0907243f956298c1c16a8f05 100644 (file)
@@ -19,8 +19,7 @@ package org.sqlite.jni;
 */
 public final class sqlite3_context extends NativePointerHolder<sqlite3_context> {
   /**
-     For use only by the JNI layer. It's permitted to set this even
-     though it's private.
+     Only set by the JNI layer.
   */
   private long aggregateContext = 0;
 
index ffdb867d9b2d5af05dfcda3104456454723a20ff..ef3b839bc154ba2ac83dd64c62aae58f6f2ecc25 100644 (file)
@@ -250,14 +250,14 @@ public class SQLTester {
   }
 
   public void runTests() throws Exception {
-    final long tStart = System.nanoTime();
+    final long tStart = System.currentTimeMillis();
     for(String f : listInFiles){
       reset();
       ++nTestFile;
       final TestScript ts = new TestScript(f);
       outln(nextStartEmoji(), " starting [",f,"]");
       boolean threw = false;
-      final long timeStart = System.nanoTime();
+      final long timeStart = System.currentTimeMillis();
       try{
         ts.run(this);
       }catch(SQLTesterException e){
@@ -267,14 +267,14 @@ public class SQLTester {
         if( keepGoing ) outln("Continuing anyway becaure of the keep-going option.");
         else if( e.isFatal() ) throw e;
       }finally{
-        final long timeEnd = System.nanoTime();
+        final long timeEnd = System.currentTimeMillis();
         outln("🏁",(threw ? "❌" : "✅")," ",nTest," test(s) in ",
-              ((timeEnd-timeStart)/1000000.0),"ms.");
+              (timeEnd-timeStart),"ms.");
         //ts.getFilename());
       }
     }
-    final long tEnd = System.nanoTime();
-    outln("Total run-time: ",((tEnd-tStart)/1000000.0),"ms");
+    final long tEnd = System.currentTimeMillis();
+    outln("Total run-time: ",(tEnd-tStart),"ms");
     Util.unlink(initialDbName);
   }
 
index 0ffb551daf75a27bb7d5d0788e3af4b0a684008f..ca1c0333b0cdcdc2d820b1b76520be77c01a4f0e 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Add\smulti-thread\srun\smode\sto\sJNI\sTester1.\sIt\sworks\sbut\shangs\son\sexit\ssometimes\sfor\sJava\sreasons\sas\syet\snot\sunderstood.
-D 2023-08-19T10:43:05.945
+C Minor\sJNI\scleanups.
+D 2023-08-19T11:26:52.575
 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
 F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724
@@ -233,8 +233,8 @@ F ext/icu/icu.c c074519b46baa484bb5396c7e01e051034da8884bad1a1cb7f09bbe6be3f0282
 F ext/icu/sqliteicu.h fa373836ed5a1ee7478bdf8a1650689294e41d0c89c1daab26e9ae78a32075a8
 F ext/jni/GNUmakefile 28ef565d7a2df7b8db61826a4db3806e24bfc25f0bfa2f56fdd5527c93ecdb10
 F ext/jni/README.md 7a614a2fa6c561205f7a53fd8626cf93a7b5711ff454fc1814517f796df398eb
-F ext/jni/jar-dist.make f90a553203a57934bf275bed86479485135a52f48ac5c1cfe6499ae07b0b35a4
-F ext/jni/src/c/sqlite3-jni.c a4a762bff193e52a264778f64545674d5b58dbcb45478e9186d603fae2c312cd
+F ext/jni/jar-dist.make bb29ff5c369c95ffcd3687cacf35f7730fd33be2fe9b1ec31670fcd7d223980e
+F ext/jni/src/c/sqlite3-jni.c 8608cb36223d6bc64e8ddd9296b6d63a4fc54efaf8dbc3ea7e5eca81f4801d42
 F ext/jni/src/c/sqlite3-jni.h f10d2f38720687c70ecdd5e44f6e8db98efee2caa05fc86b2d9e0c76e6cc0a18
 F ext/jni/src/org/sqlite/jni/Authorizer.java 1308988f7f40579ea0e4deeaec3c6be971630566bd021c31367fe3f5140db892
 F ext/jni/src/org/sqlite/jni/AutoExtension.java 18e83f6f463e306df60b2dceb65247d32af1f78af4bbbae9155411a8c6cdb093
@@ -253,9 +253,9 @@ F ext/jni/src/org/sqlite/jni/OutputPointer.java 464ea85c3eba673a7b575545f69fcd8a
 F ext/jni/src/org/sqlite/jni/ProgressHandler.java 6f62053a828a572de809828b1ee495380677e87daa29a1c57a0e2c06b0a131dc
 F ext/jni/src/org/sqlite/jni/ResultCode.java ba701f20213a5f259e94cfbfdd36eb7ac7ce7797f2c6c7fca2004ff12ce20f86
 F ext/jni/src/org/sqlite/jni/RollbackHook.java b04c8abcc6ade44a8a57129e33765793f69df0ba909e49ba18d73f4268d92564
-F ext/jni/src/org/sqlite/jni/SQLFunction.java 09ce81c1c637e31c3a830d4c859cce95d65f5e02ff45f8bd1985b3479381bc46
+F ext/jni/src/org/sqlite/jni/SQLFunction.java 8c1ad92c35bcc1b2f7256cf6e229b31340ed6d1a404d487f0a9adb28ba7fc332
 F ext/jni/src/org/sqlite/jni/SQLite3Jni.java 26b3083501a9f42e9aa49b941f6b378213cf91ae1a8f705602773ed750043a3c
-F ext/jni/src/org/sqlite/jni/Tester1.java 655d7109a1079be898f2631930493bd86e0c0259582014bb7af41b87d21d9a27
+F ext/jni/src/org/sqlite/jni/Tester1.java 42341a1031fe6f1433b86a55718c38bd75b96105ef38b0c9ea88003ec637968c
 F ext/jni/src/org/sqlite/jni/TesterFts5.java 3914b0a7ab0ff752c1082b1ae0c09b32827d81962fff62bcd0e13b9ec3a6f03f
 F ext/jni/src/org/sqlite/jni/Tracer.java a5cece9f947b0af27669b8baec300b6dd7ff859c3e6a6e4a1bd8b50f9714775d
 F ext/jni/src/org/sqlite/jni/UpdateHook.java e58645a1727f8a9bbe72dc072ec5b40d9f9362cb0aa24acfe93f49ff56a9016d
@@ -264,10 +264,10 @@ F ext/jni/src/org/sqlite/jni/fts5_api.java 5198be71c162e3e0cb1f4962a7cdf0d7596e8
 F ext/jni/src/org/sqlite/jni/fts5_extension_function.java ac825035d7d83fc7fd960347abfa6803e1614334a21533302041823ad5fc894c
 F ext/jni/src/org/sqlite/jni/fts5_tokenizer.java e530b36e6437fcc500e95d5d75fbffe272bdea20d2fac6be2e1336c578fba98b
 F ext/jni/src/org/sqlite/jni/sqlite3.java 62b1b81935ccf3393472d17cb883dc5ff39c388ec3bc1de547f098a0217158fc
-F ext/jni/src/org/sqlite/jni/sqlite3_context.java d26573fc7b309228cb49786e9078597d96232257defa955a3425d10897bca810
+F ext/jni/src/org/sqlite/jni/sqlite3_context.java fe7797a696978f057528a57b7a11e7797ed41fd7afcf100c5ebb67055d9f706f
 F ext/jni/src/org/sqlite/jni/sqlite3_stmt.java 78e6d1b95ac600a9475e9db4623f69449322b0c93d1bd4e1616e76ed547ed9fc
 F ext/jni/src/org/sqlite/jni/sqlite3_value.java 3d1d4903e267bc0bc81d57d21f5e85978eff389a1a6ed46726dbe75f85e6914a
-F ext/jni/src/org/sqlite/jni/tester/SQLTester.java 1f1286428fab38dfefe328e72b5735f533b19af8dd17712dd3df7e044d21c8b8
+F ext/jni/src/org/sqlite/jni/tester/SQLTester.java 2835eb3dd1e14767ca49354c224150c70300d8013d6d51dd875f7d9380faa278
 F ext/jni/src/org/sqlite/jni/tester/test-script-interpreter.md f9f25126127045d051e918fe59004a1485311c50a13edbf18c79a6ff9160030e
 F ext/jni/src/tests/000-000-sanity.test cfe6dc1b950751d6096e3f5695becaadcdaa048bfe9567209d6eb676e693366d
 F ext/jni/src/tests/000-001-ignored.test e17e874c6ab3c437f1293d88093cf06286083b65bf162317f91bbfd92f961b70
@@ -2091,8 +2091,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 2d955eef25ab116c487ebc34c6f2d2836d310af239ef1993f5aeee5a3f68d590
-R 8a1b71ae57321d848d8875e47d990d30
+P bdbaf7a4534f40e550b646979e67e7b7731566bb5a2631ed376ac85a9bec40a7
+R ff1ad0e885103241e4eaf57ec50ed798
 U stephan
-Z 68dec3da5d321e77fd308ae3996624ba
+Z abc1dde430026808a827edd11bd0eed1
 # Remove this line to create a well-formed Fossil manifest.
index f2c6616be1e9f46bcccb94b510fd379aae11beb1..1ceb1bcd4d6569a61686d773f803805ec268f5dd 100644 (file)
@@ -1 +1 @@
-bdbaf7a4534f40e550b646979e67e7b7731566bb5a2631ed376ac85a9bec40a7
\ No newline at end of file
+1cecb9e0383aa78c491f9ba88c831a88b4b2d40ceef1b87be494b6ddc0789e41
\ No newline at end of file