]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Make all native JNI sqlite3_...() bindings package-private as a foot-shooting protect... jni-ptr-passing
authorstephan <stephan@noemail.net>
Sat, 30 Sep 2023 10:31:56 +0000 (10:31 +0000)
committerstephan <stephan@noemail.net>
Sat, 30 Sep 2023 10:31:56 +0000 (10:31 +0000)
FossilOrigin-Name: ec82f7251acab7df40755ef5f456f36fe49b59e63a20be59bd610fc4280ba8cd

ext/jni/GNUmakefile
ext/jni/src/c/sqlite3-jni.c
ext/jni/src/c/sqlite3-jni.h
ext/jni/src/org/sqlite/jni/SQLTester.java [moved from ext/jni/src/org/sqlite/jni/tester/SQLTester.java with 99% similarity]
ext/jni/src/org/sqlite/jni/SQLite3Jni.java
ext/jni/src/org/sqlite/jni/Tester1.java
ext/jni/src/org/sqlite/jni/TesterFts5.java [moved from ext/jni/src/org/sqlite/jni/fts5/TesterFts5.java with 99% similarity]
ext/jni/src/org/sqlite/jni/test-script-interpreter.md [moved from ext/jni/src/org/sqlite/jni/tester/test-script-interpreter.md with 100% similarity]
manifest
manifest.uuid

index ddf97dd8ac4ed60c3a724d8af7231c3b447f2665..e1aa06091f1c5260d0ccc8884f03f09982b9b8c9 100644 (file)
@@ -26,8 +26,8 @@ dir.src.c   := $(dir.src)/c
 dir.bld     := $(dir.jni)/bld
 dir.bld.c   := $(dir.bld)
 dir.src.jni := $(dir.src)/org/sqlite/jni
-dir.src.jni.tester := $(dir.src.jni)/tester
 dir.src.fts5 := $(dir.src.jni)/fts5
+dir.tests   := $(dir.src)/tests
 mkdir       ?= mkdir -p
 $(dir.bld.c):
        $(mkdir) $@
@@ -46,7 +46,7 @@ DISTCLEAN_FILES := $(dir.jni)/*~ $(dir.src.c)/*~ $(dir.src.jni)/*~
 sqlite3-jni.h := $(dir.src.c)/sqlite3-jni.h
 .NOTPARALLEL: $(sqlite3-jni.h)
 SQLite3Jni.java := src/org/sqlite/jni/SQLite3Jni.java
-SQLTester.java := src/org/sqlite/jni/tester/SQLTester.java
+SQLTester.java := src/org/sqlite/jni/SQLTester.java
 SQLite3Jni.class := $(SQLite3Jni.java:.java=.class)
 SQLTester.class := $(SQLTester.java:.java=.class)
 
@@ -61,8 +61,12 @@ SQLTester.class := $(SQLTester.java:.java=.class)
 # which the fts5 APIs have been stripped unless that feature is
 # intended to be stripped for good.
 enable.fts5 ?= 1
-# If enable.tester is 0, the org/sqlite/jni/tester/* bits are elided.
-enable.tester ?= $(if $(wildcard $(dir.src.jni.tester)/SQLTester.java),1,0)
+
+ifeq (,$(wildcard $(dir.tests)/*))
+  enable.tester := 0
+else
+  enable.tester := 1
+endif
 
 # bin.version-info = binary to output various sqlite3 version info
 # building the distribution zip file.
@@ -112,6 +116,9 @@ JAVA_FILES.unittest := $(patsubst %,$(dir.src.jni)/%,\
   Tester1.java \
 )
 ifeq (1,$(enable.fts5))
+  JAVA_FILES.unittest += $(patsubst %,$(dir.src.jni)/%,\
+    TesterFts5.java \
+  )
   JAVA_FILES.main += $(patsubst %,$(dir.src.fts5)/%,\
     fts5_api.java \
     fts5_extension_function.java \
@@ -121,11 +128,10 @@ ifeq (1,$(enable.fts5))
     Fts5ExtensionApi.java \
     Fts5PhraseIter.java \
     Fts5Tokenizer.java \
-    TesterFts5.java \
     XTokenizeCallback.java \
   )
 endif
-JAVA_FILES.tester := $(dir.src.jni.tester)/SQLTester.java
+JAVA_FILES.tester := $(SQLTester.java)
 JAVA_FILES.package.info := \
   $(dir.src.jni)/package-info.java \
   $(dir.src.jni)/annotation/package-info.java
@@ -233,14 +239,12 @@ endef
 # Invoke ADD_JNI_H once for each Java file which includes JNI
 # declarations:
 $(eval $(call ADD_JNI_H,$(dir.src.jni),SQLite3Jni,))
+$(eval $(call ADD_JNI_H,$(dir.src.jni),SQLTester,_tester))
 ifeq (1,$(enable.fts5))
  $(eval $(call ADD_JNI_H,$(dir.src.fts5),Fts5ExtensionApi,_fts5))
  $(eval $(call ADD_JNI_H,$(dir.src.fts5),fts5_api,_fts5))
  $(eval $(call ADD_JNI_H,$(dir.src.fts5),fts5_tokenizer,_fts5))
 endif
-ifeq (1,$(enable.tester))
-  $(eval $(call ADD_JNI_H,$(dir.src.jni.tester),SQLTester,_tester))
-endif
 $(sqlite3-jni.h.in): $(dir.bld.c)
 
 #package.dll.cfiles :=
@@ -252,17 +256,18 @@ package.dll.cflags = \
   -I$(JDK_HOME)/include \
   $(patsubst %,-I%,$(patsubst %.h,,$(wildcard $(JDK_HOME)/include/*))) \
   -Wall
-# Using (-Wall -Wextra) triggers an untennable number of
-# gcc warnings from sqlite3.c for mundane things like
-# unused parameters.
-#
 # The gross $(patsubst...) above is to include the platform-specific
 # subdir which lives under $(JDK_HOME)/include and is a required
 # include path for client-level code.
+#
+# Using (-Wall -Wextra) triggers an untennable number of
+# gcc warnings from sqlite3.c for mundane things like
+# unused parameters.
 ########################################################################
 ifeq (1,$(enable.tester))
   package.dll.cflags += -DSQLITE_JNI_ENABLE_SQLTester
 endif
+
 $(sqlite3-jni.h): $(sqlite3-jni.h.in) $(MAKEFILE)
        @cat $(sqlite3-jni.h.in) > $@.tmp
        @if cmp $@ $@.tmp >/dev/null; then \
@@ -308,21 +313,21 @@ ifeq (1,$(enable.tester))
 tester-local: $(CLASS_FILES.tester) $(package.dll)
        $(bin.java) -ea -Djava.library.path=$(dir.bld.c) \
                $(java.flags) -cp $(classpath) \
-               org.sqlite.jni.tester.SQLTester $(tester.flags) $(tester.scripts)
+               org.sqlite.jni.SQLTester $(tester.flags) $(tester.scripts)
 tester: tester-local
 else
 tester:
-       @echo "SQLTester support is disabled. Build with enable.tester=1 to enable it."
+       @echo "SQLTester support is disabled."
 endif
 
-tester.extdir.default := src/tests/ext
+tester.extdir.default := $(dir.tests)/ext
 tester.extdir ?= $(tester.extdir.default)
 tester.extern-scripts := $(wildcard $(tester.extdir)/*.test)
 ifneq (,$(tester.extern-scripts))
 tester-ext:
        $(bin.java) -ea -Djava.library.path=$(dir.bld.c) \
                $(java.flags) -cp $(classpath) \
-               org.sqlite.jni.tester.SQLTester $(tester.flags) $(tester.extern-scripts)
+               org.sqlite.jni.SQLTester $(tester.flags) $(tester.extern-scripts)
 else
 tester-ext:
        @echo "******************************************************"; \
@@ -381,8 +386,7 @@ run-jar: $(package.jar) $(package.dll)
 # javadoc...
 dir.doc   := $(dir.jni)/javadoc
 doc.index := $(dir.doc)/index.html
-javadoc.exclude := -exclude org.sqlite.jni.tester \
-                   -exclude org.sqlite.jni.fts5
+javadoc.exclude := -exclude org.sqlite.jni.fts5
 # ^^^^ 2023-09-13: elide the fts5 parts from the public docs for
 # the time being, as it's not clear where the Java bindings for
 # those bits are going.
index 37fa2cc05b1b2f32ef1c533eae247ee39efbf171..4161d503fe3d01303042c896750d6c8279faf92b 100644 (file)
@@ -2906,17 +2906,13 @@ S3JniApi(sqlite3_complete(),int,1complete)(
 S3JniApi(sqlite3_compileoption_used(),jboolean,1compileoption_1used)(
   JniArgsEnvClass, jstring name
 ){
-  if( name ){
-    const char *zUtf8 = s3jni_jstring_to_mutf8(name)
-      /* We know these to be ASCII, so MUTF-8 is fine (and
-         hypothetically faster to convert). */;
-    const jboolean rc =
-      0==sqlite3_compileoption_used(zUtf8) ? JNI_FALSE : JNI_TRUE;
-    s3jni_mutf8_release(name, zUtf8);
-    return rc;
-  }else{
-    return JNI_FALSE;
-  }
+  const char *zUtf8 = s3jni_jstring_to_mutf8(name)
+    /* We know these to be ASCII, so MUTF-8 is fine (and
+       hypothetically faster to convert). */;
+  const jboolean rc =
+    0==sqlite3_compileoption_used(zUtf8) ? JNI_FALSE : JNI_TRUE;
+  s3jni_mutf8_release(name, zUtf8);
+  return rc;
 }
 
 S3JniApi(sqlite3_config() /*for a small subset of options.*/,
@@ -5573,7 +5569,7 @@ static int SQLTester_strnotglob(const char *zGlob, const char *z){
 }
 
 JNIEXPORT jint JNICALL
-Java_org_sqlite_jni_tester_SQLTester_strglob(
+Java_org_sqlite_jni_SQLTester_strglob(
   JniArgsEnvClass, jbyteArray baG, jbyteArray baT
 ){
   int rc = 0;
@@ -5600,7 +5596,7 @@ static int SQLTester_auto_extension(sqlite3 *pDb, const char **pzErr,
 }
 
 JNIEXPORT void JNICALL
-Java_org_sqlite_jni_tester_SQLTester_installCustomExtensions(JniArgsEnvClass){
+Java_org_sqlite_jni_SQLTester_installCustomExtensions(JniArgsEnvClass){
   sqlite3_auto_extension( (void(*)(void))SQLTester_auto_extension );
 }
 
index 3b89ae7f7361837976bdf4a9e25a8ae77f7f8a33..c4115411347b22425ae8cad9f308024ba6bbfb13 100644 (file)
@@ -2099,6 +2099,35 @@ JNIEXPORT jint JNICALL Java_org_sqlite_jni_SQLite3Jni_sqlite3_1value_1type
 JNIEXPORT void JNICALL Java_org_sqlite_jni_SQLite3Jni_sqlite3_1jni_1internal_1details
   (JNIEnv *, jclass);
 
+#ifdef __cplusplus
+}
+#endif
+#endif
+/* DO NOT EDIT THIS FILE - it is machine generated */
+#include <jni.h>
+/* Header for class org_sqlite_jni_tester_SQLTester */
+
+#ifndef _Included_org_sqlite_jni_tester_SQLTester
+#define _Included_org_sqlite_jni_tester_SQLTester
+#ifdef __cplusplus
+extern "C" {
+#endif
+/*
+ * Class:     org_sqlite_jni_tester_SQLTester
+ * Method:    strglob
+ * Signature: ([B[B)I
+ */
+JNIEXPORT jint JNICALL Java_org_sqlite_jni_tester_SQLTester_strglob
+  (JNIEnv *, jclass, jbyteArray, jbyteArray);
+
+/*
+ * Class:     org_sqlite_jni_tester_SQLTester
+ * Method:    installCustomExtensions
+ * Signature: ()V
+ */
+JNIEXPORT void JNICALL Java_org_sqlite_jni_tester_SQLTester_installCustomExtensions
+  (JNIEnv *, jclass);
+
 #ifdef __cplusplus
 }
 #endif
@@ -2328,32 +2357,3 @@ JNIEXPORT jint JNICALL Java_org_sqlite_jni_fts5_fts5_1tokenizer_xTokenize
 }
 #endif
 #endif
-/* DO NOT EDIT THIS FILE - it is machine generated */
-#include <jni.h>
-/* Header for class org_sqlite_jni_tester_SQLTester */
-
-#ifndef _Included_org_sqlite_jni_tester_SQLTester
-#define _Included_org_sqlite_jni_tester_SQLTester
-#ifdef __cplusplus
-extern "C" {
-#endif
-/*
- * Class:     org_sqlite_jni_tester_SQLTester
- * Method:    strglob
- * Signature: ([B[B)I
- */
-JNIEXPORT jint JNICALL Java_org_sqlite_jni_tester_SQLTester_strglob
-  (JNIEnv *, jclass, jbyteArray, jbyteArray);
-
-/*
- * Class:     org_sqlite_jni_tester_SQLTester
- * Method:    installCustomExtensions
- * Signature: ()V
- */
-JNIEXPORT void JNICALL Java_org_sqlite_jni_tester_SQLTester_installCustomExtensions
-  (JNIEnv *, jclass);
-
-#ifdef __cplusplus
-}
-#endif
-#endif
similarity index 99%
rename from ext/jni/src/org/sqlite/jni/tester/SQLTester.java
rename to ext/jni/src/org/sqlite/jni/SQLTester.java
index 4a97d4974e73212207524af16752883cb5ca7416..b3e184523a81f1d2ef1aa6da0404190d92dfbbc0 100644 (file)
 ** This file contains the main application entry pointer for the
 ** SQLTester framework.
 */
-package org.sqlite.jni.tester;
+package org.sqlite.jni;
 import java.util.List;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.nio.charset.StandardCharsets;
 import java.util.regex.*;
-import org.sqlite.jni.*;
 import static org.sqlite.jni.SQLite3Jni.*;
-import org.sqlite.jni.sqlite3;
-
 
 /**
    Modes for how to escape (or not) column values and names from
@@ -150,12 +147,15 @@ class Outer {
 }
 
 /**
-   This class provides an application which aims to implement the
+   <p>This class provides an application which aims to implement the
    rudimentary SQL-driven test tool described in the accompanying
    {@code test-script-interpreter.md}.
 
-   <p>This is a work in progress.
-
+   <p>This class is an internal testing tool, not part of the public
+   interface but is (A) in the same package as the library because
+   access permissions require it to be so and (B) the JDK8 javadoc
+   offers no way to filter individual classes out of the doc
+   generation process (it can only exclude packages, but see (A)).
 
    <p>An instance of this application provides a core set of services
    which TestScript instances use for processing testing logic.
index a67d9f57b80b04705da8fa394a37c4112522cdc4..38aa7aad996e1d4a54ba208f8b68285a09d32570 100644 (file)
@@ -123,7 +123,7 @@ public final class SQLite3Jni {
      which client-level code should use to make any informed
      decisions.
   */
-  public static native boolean sqlite3_java_uncache_thread();
+  static native boolean sqlite3_java_uncache_thread();
 
   //////////////////////////////////////////////////////////////////////
   // Maintenance reminder: please keep the sqlite3_.... functions
@@ -147,7 +147,7 @@ public final class SQLite3Jni {
      "not a key" value.
   */
   @Canonical
-  public static native long sqlite3_aggregate_context(sqlite3_context cx, boolean initialize);
+  static native long sqlite3_aggregate_context(sqlite3_context cx, boolean initialize);
 
   /**
      Functions almost as documented for the C API, with these
@@ -166,10 +166,10 @@ public final class SQLite3Jni {
      <p>See the AutoExtension class docs for more information.
   */
   @Canonical
-  public static native int sqlite3_auto_extension(@NotNull AutoExtensionCallback callback);
+  static native int sqlite3_auto_extension(@NotNull AutoExtensionCallback callback);
 
   @Canonical
-  private static native int sqlite3_backup_finish(@NotNull long ptrToBackup);
+  static native int sqlite3_backup_finish(@NotNull long ptrToBackup);
 
   @Canonical
   public static int sqlite3_backup_finish(@NotNull sqlite3_backup b){
@@ -177,7 +177,7 @@ public final class SQLite3Jni {
   }
 
   @Canonical
-  private static native sqlite3_backup sqlite3_backup_init(
+  static native sqlite3_backup sqlite3_backup_init(
     @NotNull long ptrToDbDest, @NotNull String destTableName,
     @NotNull long ptrToDbSrc, @NotNull String srcTableName
   );
@@ -192,7 +192,7 @@ public final class SQLite3Jni {
   }
 
   @Canonical
-  private static native int sqlite3_backup_pagecount(@NotNull long ptrToBackup);
+  static native int sqlite3_backup_pagecount(@NotNull long ptrToBackup);
 
   @Canonical
   public static int sqlite3_backup_pagecount(@NotNull sqlite3_backup b){
@@ -200,7 +200,7 @@ public final class SQLite3Jni {
   }
 
   @Canonical
-  private static native int sqlite3_backup_remaining(@NotNull long ptrToBackup);
+  static native int sqlite3_backup_remaining(@NotNull long ptrToBackup);
 
   @Canonical
   public static int sqlite3_backup_remaining(@NotNull sqlite3_backup b){
@@ -208,7 +208,7 @@ public final class SQLite3Jni {
   }
 
   @Canonical
-  private static native int sqlite3_backup_step(@NotNull long ptrToBackup, int nPage);
+  static native int sqlite3_backup_step(@NotNull long ptrToBackup, int nPage);
 
   @Canonical
   public static int sqlite3_backup_step(@NotNull sqlite3_backup b, int nPage){
@@ -216,7 +216,7 @@ public final class SQLite3Jni {
   }
 
   @Canonical
-  private static native int sqlite3_bind_blob(
+  static native int sqlite3_bind_blob(
     @NotNull long ptrToStmt, int ndx, @Nullable byte[] data, int n
   );
 
@@ -239,7 +239,7 @@ public final class SQLite3Jni {
   }
 
   @Canonical
-  private static native int sqlite3_bind_double(
+  static native int sqlite3_bind_double(
     @NotNull long ptrToStmt, int ndx, double v
   );
 
@@ -251,7 +251,7 @@ public final class SQLite3Jni {
   }
 
   @Canonical
-  private static native int sqlite3_bind_int(
+  static native int sqlite3_bind_int(
     @NotNull long ptrToStmt, int ndx, int v
   );
 
@@ -263,7 +263,7 @@ public final class SQLite3Jni {
   }
 
   @Canonical
-  private static native int sqlite3_bind_int64(
+  static native int sqlite3_bind_int64(
     @NotNull long ptrToStmt, int ndx, long v
   );
 
@@ -272,7 +272,7 @@ public final class SQLite3Jni {
     return sqlite3_bind_int64( stmt.getNativePointer(), ndx, v );
   }
 
-  private static native int sqlite3_bind_java_object(
+  static native int sqlite3_bind_java_object(
     @NotNull long ptrToStmt, int ndx, @Nullable Object o
   );
 
@@ -289,7 +289,7 @@ public final class SQLite3Jni {
   }
 
   @Canonical
-  private static native int sqlite3_bind_null(@NotNull long ptrToStmt, int ndx);
+  static native int sqlite3_bind_null(@NotNull long ptrToStmt, int ndx);
 
   @Canonical
   public static int sqlite3_bind_null(@NotNull sqlite3_stmt stmt, int ndx){
@@ -297,7 +297,7 @@ public final class SQLite3Jni {
   }
 
   @Canonical
-  private static native int sqlite3_bind_parameter_count(@NotNull long ptrToStmt);
+  static native int sqlite3_bind_parameter_count(@NotNull long ptrToStmt);
 
   @Canonical
   public static int sqlite3_bind_parameter_count(@NotNull sqlite3_stmt stmt){
@@ -315,7 +315,7 @@ public final class SQLite3Jni {
      public-facing one.
   */
   @Canonical
-  private static native int sqlite3_bind_parameter_index(
+  static native int sqlite3_bind_parameter_index(
     @NotNull long ptrToStmt, @NotNull byte[] paramName
   );
 
@@ -328,7 +328,7 @@ public final class SQLite3Jni {
   }
 
   @Canonical
-  private static native String sqlite3_bind_parameter_name(
+  static native String sqlite3_bind_parameter_name(
     @NotNull long ptrToStmt, int index
   );
 
@@ -338,7 +338,7 @@ public final class SQLite3Jni {
   }
 
   @Canonical
-  private static native int sqlite3_bind_text(
+  static native int sqlite3_bind_text(
     @NotNull long ptrToStmt, int ndx, @Nullable byte[] utf8, int maxBytes
   );
 
@@ -383,7 +383,7 @@ public final class SQLite3Jni {
   }
 
   @Canonical
-  private static native int sqlite3_bind_text16(
+  static native int sqlite3_bind_text16(
     @NotNull long ptrToStmt, int ndx, @Nullable byte[] data, int maxBytes
   );
 
@@ -426,7 +426,7 @@ public final class SQLite3Jni {
   }
 
   @Canonical
-  private static native int sqlite3_bind_zeroblob(@NotNull long ptrToStmt, int ndx, int n);
+  static native int sqlite3_bind_zeroblob(@NotNull long ptrToStmt, int ndx, int n);
 
   @Canonical
   public static int sqlite3_bind_zeroblob(@NotNull sqlite3_stmt stmt, int ndx, int n){
@@ -434,7 +434,7 @@ public final class SQLite3Jni {
   }
 
   @Canonical
-  private static native int sqlite3_bind_zeroblob64(
+  static native int sqlite3_bind_zeroblob64(
     @NotNull long ptrToStmt, int ndx, long n
   );
 
@@ -444,7 +444,7 @@ public final class SQLite3Jni {
   }
 
   @Canonical
-  private static native int sqlite3_blob_bytes(@NotNull long ptrToBlob);
+  static native int sqlite3_blob_bytes(@NotNull long ptrToBlob);
 
   @Canonical
   public static int sqlite3_blob_bytes(@NotNull sqlite3_blob blob){
@@ -460,7 +460,7 @@ public final class SQLite3Jni {
   }
 
   @Canonical
-  private static native int sqlite3_blob_open(
+  static native int sqlite3_blob_open(
     @NotNull long ptrToDb, @NotNull String dbName,
     @NotNull String tableName, @NotNull String columnName,
     long iRow, int flags, @NotNull OutputPointer.sqlite3_blob out
@@ -490,7 +490,7 @@ public final class SQLite3Jni {
   };
 
   @Canonical
-  private static native int sqlite3_blob_read(
+  static native int sqlite3_blob_read(
     @NotNull long ptrToBlob, @NotNull byte[] target, int iOffset
   );
 
@@ -502,7 +502,7 @@ public final class SQLite3Jni {
   }
 
   @Canonical
-  private static native int sqlite3_blob_reopen(
+  static native int sqlite3_blob_reopen(
     @NotNull long ptrToBlob, long newRowId
   );
 
@@ -512,7 +512,7 @@ public final class SQLite3Jni {
   }
 
   @Canonical
-  private static native int sqlite3_blob_write(
+  static native int sqlite3_blob_write(
     @NotNull long ptrToBlob, @NotNull byte[] bytes, int iOffset
   );
 
@@ -524,7 +524,7 @@ public final class SQLite3Jni {
   }
 
   @Canonical
-  private static native int sqlite3_busy_handler(
+  static native int sqlite3_busy_handler(
     @NotNull long ptrToDb, @Nullable BusyHandlerCallback handler
   );
 
@@ -541,7 +541,7 @@ public final class SQLite3Jni {
   }
 
   @Canonical
-  private static native int sqlite3_busy_timeout(@NotNull long ptrToDb, int ms);
+  static native int sqlite3_busy_timeout(@NotNull long ptrToDb, int ms);
 
   @Canonical
   public static int sqlite3_busy_timeout(@NotNull sqlite3 db, int ms){
@@ -549,12 +549,12 @@ public final class SQLite3Jni {
   }
 
   @Canonical
-  public static native boolean sqlite3_cancel_auto_extension(
+  static native boolean sqlite3_cancel_auto_extension(
     @NotNull AutoExtensionCallback ax
   );
 
   @Canonical
-  private static native int sqlite3_changes(@NotNull long ptrToDb);
+  static native int sqlite3_changes(@NotNull long ptrToDb);
 
   @Canonical
   public static int sqlite3_changes(@NotNull sqlite3 db){
@@ -562,7 +562,7 @@ public final class SQLite3Jni {
   }
 
   @Canonical
-  private static native long sqlite3_changes64(@NotNull long ptrToDb);
+  static native long sqlite3_changes64(@NotNull long ptrToDb);
 
   @Canonical
   public static long sqlite3_changes64(@NotNull sqlite3 db){
@@ -570,7 +570,7 @@ public final class SQLite3Jni {
   }
 
   @Canonical
-  public static native int sqlite3_clear_bindings(@NotNull long ptrToStmt);
+  static native int sqlite3_clear_bindings(@NotNull long ptrToStmt);
 
   @Canonical
   public static int sqlite3_clear_bindings(@NotNull sqlite3_stmt stmt){
@@ -578,7 +578,7 @@ public final class SQLite3Jni {
   }
 
   @Canonical
-  private static native int sqlite3_close(@Nullable long ptrToDb);
+  static native int sqlite3_close(@Nullable long ptrToDb);
 
   @Canonical
   public static int sqlite3_close(@Nullable sqlite3 db){
@@ -599,12 +599,12 @@ public final class SQLite3Jni {
   }
 
   @Canonical
-  public static native byte[] sqlite3_column_blob(
+  static native byte[] sqlite3_column_blob(
     @NotNull sqlite3_stmt stmt, int ndx
   );
 
   @Canonical
-  private static native int sqlite3_column_bytes(@NotNull long ptrToStmt, int ndx);
+  static native int sqlite3_column_bytes(@NotNull long ptrToStmt, int ndx);
 
   @Canonical
   public static int sqlite3_column_bytes(@NotNull sqlite3_stmt stmt, int ndx){
@@ -612,7 +612,7 @@ public final class SQLite3Jni {
   }
 
   @Canonical
-  private static native int sqlite3_column_bytes16(@NotNull long ptrToStmt, int ndx);
+  static native int sqlite3_column_bytes16(@NotNull long ptrToStmt, int ndx);
 
   @Canonical
   public static int sqlite3_column_bytes16(@NotNull sqlite3_stmt stmt, int ndx){
@@ -620,7 +620,7 @@ public final class SQLite3Jni {
   }
 
   @Canonical
-  private static native int sqlite3_column_count(@NotNull long ptrToStmt);
+  static native int sqlite3_column_count(@NotNull long ptrToStmt);
 
   @Canonical
   public static int sqlite3_column_count(@NotNull sqlite3_stmt stmt){
@@ -628,7 +628,7 @@ public final class SQLite3Jni {
   }
 
   @Canonical
-  private static native String sqlite3_column_decltype(@NotNull long ptrToStmt, int ndx);
+  static native String sqlite3_column_decltype(@NotNull long ptrToStmt, int ndx);
 
   @Canonical
   public static String sqlite3_column_decltype(@NotNull sqlite3_stmt stmt, int ndx){
@@ -636,22 +636,22 @@ public final class SQLite3Jni {
   }
 
   @Canonical
-  public static native double sqlite3_column_double(
+  static native double sqlite3_column_double(
     @NotNull sqlite3_stmt stmt, int ndx
   );
 
   @Canonical
-  public static native int sqlite3_column_int(
+  static native int sqlite3_column_int(
     @NotNull sqlite3_stmt stmt, int ndx
   );
 
   @Canonical
-  public static native long sqlite3_column_int64(
+  static native long sqlite3_column_int64(
     @NotNull sqlite3_stmt stmt, int ndx
   );
 
   @Canonical
-  private static native String sqlite3_column_name(@NotNull long ptrToStmt, int ndx);
+  static native String sqlite3_column_name(@NotNull long ptrToStmt, int ndx);
 
   @Canonical
   public static String sqlite3_column_name(@NotNull sqlite3_stmt stmt, int ndx){
@@ -659,7 +659,7 @@ public final class SQLite3Jni {
   }
 
   @Canonical
-  private static native String sqlite3_column_database_name(@NotNull long ptrToStmt, int ndx);
+  static native String sqlite3_column_database_name(@NotNull long ptrToStmt, int ndx);
 
   @Canonical
   public static String sqlite3_column_database_name(@NotNull sqlite3_stmt stmt, int ndx){
@@ -667,7 +667,7 @@ public final class SQLite3Jni {
   }
 
   @Canonical
-  private static native String sqlite3_column_origin_name(@NotNull long ptrToStmt, int ndx);
+  static native String sqlite3_column_origin_name(@NotNull long ptrToStmt, int ndx);
 
   @Canonical
   public static String sqlite3_column_origin_name(@NotNull sqlite3_stmt stmt, int ndx){
@@ -675,7 +675,7 @@ public final class SQLite3Jni {
   }
 
   @Canonical
-  private static native String sqlite3_column_table_name(@NotNull long ptrToStmt, int ndx);
+  static native String sqlite3_column_table_name(@NotNull long ptrToStmt, int ndx);
 
   @Canonical
   public static String sqlite3_column_table_name(@NotNull sqlite3_stmt stmt, int ndx){
@@ -691,12 +691,12 @@ public final class SQLite3Jni {
      @see #sqlite3_column_text16(sqlite3_stmt,int)
   */
   @Canonical
-  public static native byte[] sqlite3_column_text(
+  static native byte[] sqlite3_column_text(
     @NotNull sqlite3_stmt stmt, int ndx
   );
 
   @Canonical
-  public static native String sqlite3_column_text16(
+  static native String sqlite3_column_text16(
     @NotNull sqlite3_stmt stmt, int ndx
   );
 
@@ -738,7 +738,7 @@ public final class SQLite3Jni {
   // }
 
   @Canonical
-  private static native int sqlite3_column_type(@NotNull long ptrToStmt, int ndx);
+  static native int sqlite3_column_type(@NotNull long ptrToStmt, int ndx);
 
   @Canonical
   public static int sqlite3_column_type(@NotNull sqlite3_stmt stmt, int ndx){
@@ -746,7 +746,7 @@ public final class SQLite3Jni {
   }
 
   @Canonical
-  public static native sqlite3_value sqlite3_column_value(
+  static native sqlite3_value sqlite3_column_value(
     @NotNull sqlite3_stmt stmt, int ndx
   );
 
@@ -779,21 +779,17 @@ public final class SQLite3Jni {
   }
 
   @Canonical
-  public static native String sqlite3_compileoption_get(int n);
+  static native String sqlite3_compileoption_get(int n);
 
-  /**
-     Unlike the C API, returns false if its argument is NULL (as
-     opposed to invoking UB).
-  */
   @Canonical
-  public static native boolean sqlite3_compileoption_used(String optName);
+  static native boolean sqlite3_compileoption_used(String optName);
 
   /**
      This implementation is private because it's too easy to pass it
-     non-NUL-terminated arrays.
+     non-NUL-terminated byte arrays from client code.
   */
   @Canonical
-  private static native int sqlite3_complete(
+  static native int sqlite3_complete(
     @NotNull byte[] nulTerminatedUtf8Sql
   );
 
@@ -802,8 +798,8 @@ public final class SQLite3Jni {
      null (as opposed to invoking UB).
   */
   @Canonical()
-  public static int sqlite3_complete(String sql){
-    return null==sql ? SQLITE_MISUSE : sqlite3_complete( nulTerminateUtf8(sql) );
+  static int sqlite3_complete(@NotNull String sql){
+    return sqlite3_complete( nulTerminateUtf8(sql) );
   }
 
 
@@ -825,7 +821,7 @@ public final class SQLite3Jni {
   @Canonical(comment="Option subset: "+
              "SQLITE_CONFIG_SINGLETHREAD, SQLITE_CONFIG_MULTITHREAD, "+
              "SQLITE_CONFIG_SERIALIZED")
-  public static native int sqlite3_config(int op);
+  static native int sqlite3_config(int op);
 
   /**
      If the native library was built with SQLITE_ENABLE_SQLLOG defined
@@ -842,21 +838,21 @@ public final class SQLite3Jni {
      library APIs are being called.
   */
   @Canonical(comment="Option subset: SQLITE_CONFIG_SQLLOG")
-  public static native int sqlite3_config( @Nullable ConfigSqllogCallback logger );
+  static native int sqlite3_config( @Nullable ConfigSqllogCallback logger );
 
   /**
      The sqlite3_config() overload for handling the SQLITE_CONFIG_LOG
      option.
   */
   @Canonical(comment="Option subset: SQLITE_CONFIG_LOG")
-  public static native int sqlite3_config( @Nullable ConfigLogCallback logger );
+  static native int sqlite3_config( @Nullable ConfigLogCallback logger );
 
   /**
      Unlike this C API, this returns null if its argument is
      null (as opposed to invoking UB).
   */
   @Canonical
-  public static native sqlite3 sqlite3_context_db_handle(
+  static native sqlite3 sqlite3_context_db_handle(
     @NotNull sqlite3_context cx
   );
 
@@ -865,7 +861,7 @@ public final class SQLite3Jni {
      arguments are null (as opposed to invoking UB).
   */
   @Canonical
-  public static native int sqlite3_create_collation(
+  static native int sqlite3_create_collation(
     @NotNull sqlite3 db, @NotNull String name, int eTextRep,
     @NotNull CollationCallback col
   );
@@ -882,13 +878,13 @@ public final class SQLite3Jni {
      functionName arguments are null (as opposed to invoking UB).
   */
   @Canonical
-  public static native int sqlite3_create_function(
+  static native int sqlite3_create_function(
     @NotNull sqlite3 db, @NotNull String functionName,
     int nArg, int eTextRep, @NotNull SQLFunction func
   );
 
   @Canonical
-  private static native int sqlite3_data_count(@NotNull long ptrToStmt);
+  static native int sqlite3_data_count(@NotNull long ptrToStmt);
 
   @Canonical
   public static int sqlite3_data_count(@NotNull sqlite3_stmt stmt){
@@ -904,7 +900,7 @@ public final class SQLite3Jni {
      are null (as opposed to invoking UB).
   */
   @Canonical
-  public static native int sqlite3_db_config(
+  static native int sqlite3_db_config(
     @NotNull sqlite3 db, int op, int onOff, @Nullable OutputPointer.Int32 out
   );
 
@@ -916,35 +912,35 @@ public final class SQLite3Jni {
      extended in future versions.
   */
   @Canonical(comment="Supports only a subset of options.")
-  public static native int sqlite3_db_config(
+  static native int sqlite3_db_config(
     @NotNull sqlite3 db, int op, @NotNull String val
   );
 
   @Canonical
-  public static native String sqlite3_db_filename(
+  static native String sqlite3_db_filename(
     @NotNull sqlite3 db, @NotNull String dbName
   );
 
   @Canonical
-  public static native sqlite3 sqlite3_db_handle( @NotNull sqlite3_stmt stmt );
+  static native sqlite3 sqlite3_db_handle(@NotNull sqlite3_stmt stmt);
 
   @Canonical
-  public static native int sqlite3_db_release_memory(sqlite3 db);
+  static native int sqlite3_db_release_memory(sqlite3 db);
 
   @Canonical
-  public static native int sqlite3_db_status(
+  static native int sqlite3_db_status(
     @NotNull sqlite3 db, int op, @NotNull OutputPointer.Int32 pCurrent,
     @NotNull OutputPointer.Int32 pHighwater, boolean reset
   );
 
   @Canonical
-  public static native int sqlite3_errcode(@NotNull sqlite3 db);
+  static native int sqlite3_errcode(@NotNull sqlite3 db);
 
   @Canonical
-  public static native String sqlite3_errmsg16(@NotNull sqlite3 db);
+  static native String sqlite3_errmsg16(@NotNull sqlite3 db);
 
   @Canonical
-  private static native int sqlite3_error_offset(@NotNull long ptrToDb);
+  static native int sqlite3_error_offset(@NotNull long ptrToDb);
 
   /**
      Note that the returned byte offset values assume UTF-8-encoded
@@ -956,13 +952,13 @@ public final class SQLite3Jni {
   }
 
   @Canonical
-  public static native String sqlite3_errstr(int resultCode);
+  static native String sqlite3_errstr(int resultCode);
 
   @Canonical
-  public static native String sqlite3_expanded_sql(@NotNull sqlite3_stmt stmt);
+  static native String sqlite3_expanded_sql(@NotNull sqlite3_stmt stmt);
 
   @Canonical
-  private static native int sqlite3_extended_errcode(@NotNull long ptrToDb);
+  static native int sqlite3_extended_errcode(@NotNull long ptrToDb);
 
   @Canonical
   public static int sqlite3_extended_errcode(@NotNull sqlite3 db){
@@ -970,12 +966,12 @@ public final class SQLite3Jni {
   }
 
   @Canonical
-  public static native boolean sqlite3_extended_result_codes(
+  static native boolean sqlite3_extended_result_codes(
     @NotNull sqlite3 db, boolean onoff
   );
 
   @Canonical
-  private static native boolean sqlite3_get_autocommit(@NotNull long ptrToDb);
+  static native boolean sqlite3_get_autocommit(@NotNull long ptrToDb);
 
   @Canonical
   public static boolean sqlite3_get_autocommit(@NotNull sqlite3 db){
@@ -983,7 +979,7 @@ public final class SQLite3Jni {
   }
 
   @Canonical
-  public static native Object sqlite3_get_auxdata(
+  static native Object sqlite3_get_auxdata(
     @NotNull sqlite3_context cx, int n
   );
 
@@ -996,35 +992,35 @@ public final class SQLite3Jni {
   }
 
   @Canonical
-  public static native int sqlite3_initialize();
+  static native int sqlite3_initialize();
 
   @Canonical
-  public static native void sqlite3_interrupt(@NotNull sqlite3 db);
+  static native void sqlite3_interrupt(@NotNull sqlite3 db);
 
   @Canonical
-  public static native boolean sqlite3_is_interrupted(@NotNull sqlite3 db);
+  static native boolean sqlite3_is_interrupted(@NotNull sqlite3 db);
 
   @Canonical
-  public static native boolean sqlite3_keyword_check(@NotNull String word);
+  static native boolean sqlite3_keyword_check(@NotNull String word);
 
   @Canonical
-  public static native int sqlite3_keyword_count();
+  static native int sqlite3_keyword_count();
 
   @Canonical
-  public static native String sqlite3_keyword_name(int index);
+  static native String sqlite3_keyword_name(int index);
 
 
   @Canonical
-  public static native long sqlite3_last_insert_rowid(@NotNull sqlite3 db);
+  static native long sqlite3_last_insert_rowid(@NotNull sqlite3 db);
 
   @Canonical
-  public static native String sqlite3_libversion();
+  static native String sqlite3_libversion();
 
   @Canonical
-  public static native int sqlite3_libversion_number();
+  static native int sqlite3_libversion_number();
 
   @Canonical
-  public static native int sqlite3_limit(@NotNull sqlite3 db, int id, int newVal);
+  static native int sqlite3_limit(@NotNull sqlite3 db, int id, int newVal);
 
   /**
      Works like its C counterpart and makes the native pointer of the
@@ -1040,7 +1036,7 @@ public final class SQLite3Jni {
      db handle.
   */
   @Canonical
-  public static native int sqlite3_open(
+  static native int sqlite3_open(
     @Nullable String filename, @NotNull OutputPointer.sqlite3 ppDb
   );
 
@@ -1059,7 +1055,7 @@ public final class SQLite3Jni {
   };
 
   @Canonical
-  public static native int sqlite3_open_v2(
+  static native int sqlite3_open_v2(
     @Nullable String filename, @NotNull OutputPointer.sqlite3 ppDb,
     int flags, @Nullable String zVfs
   );
@@ -1104,7 +1100,7 @@ public final class SQLite3Jni {
      real utility.
   */
   @Canonical
-  private static native int sqlite3_prepare(
+  static native int sqlite3_prepare(
     @NotNull long ptrToDb, @NotNull byte[] sqlUtf8, int maxBytes,
     @NotNull OutputPointer.sqlite3_stmt outStmt,
     @Nullable OutputPointer.Int32 pTailOffset
@@ -1164,7 +1160,7 @@ public final class SQLite3Jni {
      @see #sqlite3_prepare
   */
   @Canonical
-  private static native int sqlite3_prepare_v2(
+  static native int sqlite3_prepare_v2(
     @NotNull long ptrToDb, @NotNull byte[] sqlUtf8, int maxBytes,
     @NotNull OutputPointer.sqlite3_stmt outStmt,
     @Nullable OutputPointer.Int32 pTailOffset
@@ -1218,7 +1214,7 @@ public final class SQLite3Jni {
      @see #sqlite3_prepare
   */
   @Canonical
-  private static native int sqlite3_prepare_v3(
+  static native int sqlite3_prepare_v3(
     @NotNull long ptrToDb, @NotNull byte[] sqlUtf8, int maxBytes,
     int prepFlags, @NotNull OutputPointer.sqlite3_stmt outStmt,
     @Nullable OutputPointer.Int32 pTailOffset
@@ -1374,7 +1370,7 @@ public final class SQLite3Jni {
   }
 
   @Canonical
-  private static native int sqlite3_preupdate_blobwrite(@NotNull long ptrToDb);
+  static native int sqlite3_preupdate_blobwrite(@NotNull long ptrToDb);
 
   /**
      If the C API was built with SQLITE_ENABLE_PREUPDATE_HOOK defined, this
@@ -1387,7 +1383,7 @@ public final class SQLite3Jni {
   }
 
   @Canonical
-  private static native int sqlite3_preupdate_count(@NotNull long ptrToDb);
+  static native int sqlite3_preupdate_count(@NotNull long ptrToDb);
 
   /**
      If the C API was built with SQLITE_ENABLE_PREUPDATE_HOOK defined, this
@@ -1400,7 +1396,7 @@ public final class SQLite3Jni {
   }
 
   @Canonical
-  private static native int sqlite3_preupdate_depth(@NotNull long ptrToDb);
+  static native int sqlite3_preupdate_depth(@NotNull long ptrToDb);
 
   /**
      If the C API was built with SQLITE_ENABLE_PREUPDATE_HOOK defined, this
@@ -1413,7 +1409,7 @@ public final class SQLite3Jni {
   }
 
   @Canonical
-  private static native PreupdateHookCallback sqlite3_preupdate_hook(
+  static native PreupdateHookCallback sqlite3_preupdate_hook(
     @NotNull long ptrToDb, @Nullable PreupdateHookCallback hook
   );
 
@@ -1430,7 +1426,7 @@ public final class SQLite3Jni {
   }
 
   @Canonical
-  private static native int sqlite3_preupdate_new(@NotNull long ptrToDb, int col,
+  static native int sqlite3_preupdate_new(@NotNull long ptrToDb, int col,
                                                  @NotNull OutputPointer.sqlite3_value out);
 
   /**
@@ -1455,7 +1451,7 @@ public final class SQLite3Jni {
   }
 
   @Canonical
-  private static native int sqlite3_preupdate_old(@NotNull long ptrToDb, int col,
+  static native int sqlite3_preupdate_old(@NotNull long ptrToDb, int col,
                                                  @NotNull OutputPointer.sqlite3_value out);
 
   /**
@@ -1480,18 +1476,18 @@ public final class SQLite3Jni {
   }
 
   @Canonical
-  public static native void sqlite3_progress_handler(
+  static native void sqlite3_progress_handler(
     @NotNull sqlite3 db, int n, @Nullable ProgressHandlerCallback h
   );
 
   @Canonical
-  public static native void sqlite3_randomness(byte[] target);
+  static native void sqlite3_randomness(byte[] target);
 
   @Canonical
-  public static native int sqlite3_release_memory(int n);
+  static native int sqlite3_release_memory(int n);
 
   @Canonical
-  public static native int sqlite3_reset(@NotNull sqlite3_stmt stmt);
+  static native int sqlite3_reset(@NotNull sqlite3_stmt stmt);
 
   /**
      Works like the C API except that it has no side effects if auto
@@ -1499,10 +1495,10 @@ public final class SQLite3Jni {
      extensions cannot be manipulated while it is being traversed.)
   */
   @Canonical
-  public static native void sqlite3_reset_auto_extension();
+  static native void sqlite3_reset_auto_extension();
 
   @Canonical
-  public static native void sqlite3_result_double(
+  static native void sqlite3_result_double(
     @NotNull sqlite3_context cx, double v
   );
 
@@ -1514,7 +1510,7 @@ public final class SQLite3Jni {
      complaint about the invalid argument.
   */
   @Canonical
-  private static native void sqlite3_result_error(
+  static native void sqlite3_result_error(
     @NotNull sqlite3_context cx, @NotNull byte[] msg, int eTextRep
   );
 
@@ -1559,32 +1555,32 @@ public final class SQLite3Jni {
   }
 
   @Canonical
-  public static native void sqlite3_result_error_toobig(
+  static native void sqlite3_result_error_toobig(
     @NotNull sqlite3_context cx
   );
 
   @Canonical
-  public static native void sqlite3_result_error_nomem(
+  static native void sqlite3_result_error_nomem(
     @NotNull sqlite3_context cx
   );
 
   @Canonical
-  public static native void sqlite3_result_error_code(
+  static native void sqlite3_result_error_code(
     @NotNull sqlite3_context cx, int c
   );
 
   @Canonical
-  public static native void sqlite3_result_null(
+  static native void sqlite3_result_null(
     @NotNull sqlite3_context cx
   );
 
   @Canonical
-  public static native void sqlite3_result_int(
+  static native void sqlite3_result_int(
     @NotNull sqlite3_context cx, int v
   );
 
   @Canonical
-  public static native void sqlite3_result_int64(
+  static native void sqlite3_result_int64(
     @NotNull sqlite3_context cx, long v
   );
 
@@ -1604,7 +1600,7 @@ public final class SQLite3Jni {
      @see #sqlite3_value_java_object
      @see #sqlite3_bind_java_object
   */
-  public static native void sqlite3_result_java_object(
+  static native void sqlite3_result_java_object(
     @NotNull sqlite3_context cx, @NotNull Object o
   );
 
@@ -1669,17 +1665,17 @@ public final class SQLite3Jni {
   }
 
   @Canonical
-  public static native void sqlite3_result_value(
+  static native void sqlite3_result_value(
     @NotNull sqlite3_context cx, @NotNull sqlite3_value v
   );
 
   @Canonical
-  public static native void sqlite3_result_zeroblob(
+  static native void sqlite3_result_zeroblob(
     @NotNull sqlite3_context cx, int n
   );
 
   @Canonical
-  public static native int sqlite3_result_zeroblob64(
+  static native int sqlite3_result_zeroblob64(
     @NotNull sqlite3_context cx, long n
   );
 
@@ -1688,7 +1684,7 @@ public final class SQLite3Jni {
      unnecessary in Java.
   */
   @Canonical
-  private static native void sqlite3_result_blob(
+  static native void sqlite3_result_blob(
     @NotNull sqlite3_context cx, @Nullable byte[] blob, int maxLen
   );
 
@@ -1718,7 +1714,7 @@ public final class SQLite3Jni {
      arguably unnecessary in Java.</p>
   */
   @Canonical
-  private static native void sqlite3_result_blob64(
+  static native void sqlite3_result_blob64(
     @NotNull sqlite3_context cx, @Nullable byte[] blob, long maxLen
   );
 
@@ -1734,7 +1730,7 @@ public final class SQLite3Jni {
      arguably unnecessary in Java.
   */
   @Canonical
-  private static native void sqlite3_result_text(
+  static native void sqlite3_result_text(
     @NotNull sqlite3_context cx, @Nullable byte[] utf8, int maxLen
   );
 
@@ -1780,7 +1776,7 @@ public final class SQLite3Jni {
      arguably unnecessary in Java.
   */
   @Canonical
-  private static native void sqlite3_result_text64(
+  static native void sqlite3_result_text64(
     @NotNull sqlite3_context cx, @Nullable byte[] text,
     long maxLength, int encoding
   );
@@ -1820,17 +1816,17 @@ public final class SQLite3Jni {
   }
 
   @Canonical
-  public static native int sqlite3_set_authorizer(
+  static native int sqlite3_set_authorizer(
     @NotNull sqlite3 db, @Nullable AuthorizerCallback auth
   );
 
   @Canonical
-  public static native void sqlite3_set_auxdata(
+  static native void sqlite3_set_auxdata(
     @NotNull sqlite3_context cx, int n, @Nullable Object data
   );
 
   @Canonical
-  public static native void sqlite3_set_last_insert_rowid(
+  static native void sqlite3_set_last_insert_rowid(
     @NotNull sqlite3 db, long rowid
   );
 
@@ -1848,31 +1844,31 @@ public final class SQLite3Jni {
   public static synchronized native int sqlite3_shutdown();
 
   @Canonical
-  public static native int sqlite3_sleep(int ms);
+  static native int sqlite3_sleep(int ms);
 
   @Canonical
-  public static native String sqlite3_sourceid();
+  static native String sqlite3_sourceid();
 
   @Canonical
-  public static native String sqlite3_sql(@NotNull sqlite3_stmt stmt);
+  static native String sqlite3_sql(@NotNull sqlite3_stmt stmt);
 
   @Canonical
-  public static native int sqlite3_status(
+  static native int sqlite3_status(
     int op, @NotNull OutputPointer.Int32 pCurrent,
     @NotNull OutputPointer.Int32 pHighwater, boolean reset
   );
 
   @Canonical
-  public static native int sqlite3_status64(
+  static native int sqlite3_status64(
     int op, @NotNull OutputPointer.Int64 pCurrent,
     @NotNull OutputPointer.Int64 pHighwater, boolean reset
   );
 
   @Canonical
-  public static native int sqlite3_step(@NotNull sqlite3_stmt stmt);
+  static native int sqlite3_step(@NotNull sqlite3_stmt stmt);
 
   @Canonical
-  private static native int sqlite3_stmt_explain(@NotNull long ptrToStmt, int op);
+  static native int sqlite3_stmt_explain(@NotNull long ptrToStmt, int op);
 
   @Canonical
   public static int sqlite3_stmt_explain(@NotNull sqlite3_stmt stmt, int op){
@@ -1880,7 +1876,7 @@ public final class SQLite3Jni {
   }
 
   @Canonical
-  private static native int sqlite3_stmt_isexplain(@NotNull long ptrToStmt);
+  static native int sqlite3_stmt_isexplain(@NotNull long ptrToStmt);
 
   @Canonical
   public static int sqlite3_stmt_isexplain(@NotNull sqlite3_stmt stmt){
@@ -1888,7 +1884,7 @@ public final class SQLite3Jni {
   }
 
   @Canonical
-  private static native boolean sqlite3_stmt_readonly(@NotNull long ptrToStmt);
+  static native boolean sqlite3_stmt_readonly(@NotNull long ptrToStmt);
 
   @Canonical
   public static boolean sqlite3_stmt_readonly(@NotNull sqlite3_stmt stmt){
@@ -1896,7 +1892,7 @@ public final class SQLite3Jni {
   }
 
   @Canonical
-  public static native int sqlite3_stmt_status(
+  static native int sqlite3_stmt_status(
     @NotNull sqlite3_stmt stmt, int op, boolean reset
   );
 
@@ -1912,7 +1908,7 @@ public final class SQLite3Jni {
      signature is the public-facing one.
   */
   @Canonical
-  private static native int sqlite3_strglob(
+  static native int sqlite3_strglob(
     @NotNull byte[] glob, @NotNull byte[] nullTerminatedUtf8
   );
 
@@ -1928,7 +1924,7 @@ public final class SQLite3Jni {
      The LIKE counterpart of the private sqlite3_strglob() method.
   */
   @Canonical
-  private static native int sqlite3_strlike(
+  static native int sqlite3_strlike(
     @NotNull byte[] glob, @NotNull byte[] nullTerminatedUtf8,
     int escChar
   );
@@ -1943,7 +1939,7 @@ public final class SQLite3Jni {
   }
 
   @Canonical
-  private static native int sqlite3_system_errno(@NotNull long ptrToDb);
+  static native int sqlite3_system_errno(@NotNull long ptrToDb);
 
   @Canonical
   public static int sqlite3_system_errno(@NotNull sqlite3 db){
@@ -1951,7 +1947,7 @@ public final class SQLite3Jni {
   }
 
   @Canonical
-  public static native int sqlite3_table_column_metadata(
+  static native int sqlite3_table_column_metadata(
     @NotNull sqlite3 db, @NotNull String zDbName,
     @NotNull String zTableName, @NotNull String zColumnName,
     @Nullable OutputPointer.String pzDataType,
@@ -1990,10 +1986,10 @@ public final class SQLite3Jni {
   }
 
   @Canonical
-  public static native int sqlite3_threadsafe();
+  static native int sqlite3_threadsafe();
 
   @Canonical
-  private static native int sqlite3_total_changes(@NotNull long ptrToDb);
+  static native int sqlite3_total_changes(@NotNull long ptrToDb);
 
   @Canonical
   public static int sqlite3_total_changes(@NotNull sqlite3 db){
@@ -2001,7 +1997,7 @@ public final class SQLite3Jni {
   }
 
   @Canonical
-  private static native long sqlite3_total_changes64(@NotNull long ptrToDb);
+  static native long sqlite3_total_changes64(@NotNull long ptrToDb);
 
   @Canonical
   public static long sqlite3_total_changes64(@NotNull sqlite3 db){
@@ -2018,17 +2014,17 @@ public final class SQLite3Jni {
      mapping state fails.
   */
   @Canonical
-  public static native int sqlite3_trace_v2(
+  static native int sqlite3_trace_v2(
     @NotNull sqlite3 db, int traceMask, @Nullable TraceV2Callback tracer
   );
 
   @Canonical
-  public static native int sqlite3_txn_state(
+  static native int sqlite3_txn_state(
     @NotNull sqlite3 db, @Nullable String zSchema
   );
 
   @Canonical
-  private static native UpdateHookCallback sqlite3_update_hook(
+  static native UpdateHookCallback sqlite3_update_hook(
     @NotNull long ptrToDb, @Nullable UpdateHookCallback hook
   );
 
@@ -2050,7 +2046,7 @@ public final class SQLite3Jni {
   */
 
   @Canonical
-  private static native byte[] sqlite3_value_blob(@NotNull long ptrToValue);
+  static native byte[] sqlite3_value_blob(@NotNull long ptrToValue);
 
   @Canonical
   public static byte[] sqlite3_value_blob(@NotNull sqlite3_value v){
@@ -2058,7 +2054,7 @@ public final class SQLite3Jni {
   }
 
   @Canonical
-  private static native int sqlite3_value_bytes(@NotNull long ptrToValue);
+  static native int sqlite3_value_bytes(@NotNull long ptrToValue);
 
   @Canonical
   public static int sqlite3_value_bytes(@NotNull sqlite3_value v){
@@ -2066,7 +2062,7 @@ public final class SQLite3Jni {
   }
 
   @Canonical
-  private static native int sqlite3_value_bytes16(@NotNull long ptrToValue);
+  static native int sqlite3_value_bytes16(@NotNull long ptrToValue);
 
   @Canonical
   public static int sqlite3_value_bytes16(@NotNull sqlite3_value v){
@@ -2074,7 +2070,7 @@ public final class SQLite3Jni {
   }
 
   @Canonical
-  private static native double sqlite3_value_double(@NotNull long ptrToValue);
+  static native double sqlite3_value_double(@NotNull long ptrToValue);
 
   @Canonical
   public static double sqlite3_value_double(@NotNull sqlite3_value v){
@@ -2082,7 +2078,7 @@ public final class SQLite3Jni {
   }
 
   @Canonical
-  private static native sqlite3_value sqlite3_value_dup(@NotNull long ptrToValue);
+  static native sqlite3_value sqlite3_value_dup(@NotNull long ptrToValue);
 
   @Canonical
   public static sqlite3_value sqlite3_value_dup(@NotNull sqlite3_value v){
@@ -2090,7 +2086,7 @@ public final class SQLite3Jni {
   }
 
   @Canonical
-  private static native int sqlite3_value_encoding(@NotNull long ptrToValue);
+  static native int sqlite3_value_encoding(@NotNull long ptrToValue);
 
   @Canonical
   public static int sqlite3_value_encoding(@NotNull sqlite3_value v){
@@ -2098,7 +2094,7 @@ public final class SQLite3Jni {
   }
 
   @Canonical
-  private static native void sqlite3_value_free(@Nullable long ptrToValue);
+  static native void sqlite3_value_free(@Nullable long ptrToValue);
 
   @Canonical
   public static void sqlite3_value_free(@Nullable sqlite3_value v){
@@ -2106,7 +2102,7 @@ public final class SQLite3Jni {
   }
 
   @Canonical
-  private static native int sqlite3_value_frombind(@NotNull long ptrToValue);
+  static native int sqlite3_value_frombind(@NotNull long ptrToValue);
 
   @Canonical
   public static int sqlite3_value_frombind(@NotNull sqlite3_value v){
@@ -2114,7 +2110,7 @@ public final class SQLite3Jni {
   }
 
   @Canonical
-  private static native int sqlite3_value_int(@NotNull long ptrToValue);
+  static native int sqlite3_value_int(@NotNull long ptrToValue);
 
   @Canonical
   public static int sqlite3_value_int(@NotNull sqlite3_value v){
@@ -2122,14 +2118,14 @@ public final class SQLite3Jni {
   }
 
   @Canonical
-  private static native long sqlite3_value_int64(@NotNull long ptrToValue);
+  static native long sqlite3_value_int64(@NotNull long ptrToValue);
 
   @Canonical
   public static long sqlite3_value_int64(@NotNull sqlite3_value v){
     return sqlite3_value_int64(v.getNativePointer());
   }
 
-  private static native Object sqlite3_value_java_object(@NotNull long ptrToValue);
+  static native Object sqlite3_value_java_object(@NotNull long ptrToValue);
 
   /**
      If the given value was set using {@link
@@ -2156,7 +2152,7 @@ public final class SQLite3Jni {
   }
 
   @Canonical
-  private static native int sqlite3_value_nochange(@NotNull long ptrToValue);
+  static native int sqlite3_value_nochange(@NotNull long ptrToValue);
 
   @Canonical
   public static int sqlite3_value_nochange(@NotNull sqlite3_value v){
@@ -2164,7 +2160,7 @@ public final class SQLite3Jni {
   }
 
   @Canonical
-  private static native int sqlite3_value_numeric_type(@NotNull long ptrToValue);
+  static native int sqlite3_value_numeric_type(@NotNull long ptrToValue);
 
   @Canonical
   public static int sqlite3_value_numeric_type(@NotNull sqlite3_value v){
@@ -2172,7 +2168,7 @@ public final class SQLite3Jni {
   }
 
   @Canonical
-  private static native int sqlite3_value_subtype(@NotNull long ptrToValue);
+  static native int sqlite3_value_subtype(@NotNull long ptrToValue);
 
   @Canonical
   public static int sqlite3_value_subtype(@NotNull sqlite3_value v){
@@ -2180,7 +2176,7 @@ public final class SQLite3Jni {
   }
 
   @Canonical
-  private static native byte[] sqlite3_value_text(@NotNull long ptrToValue);
+  static native byte[] sqlite3_value_text(@NotNull long ptrToValue);
 
   /**
      Functions identially to the C API, and this note is just to
@@ -2194,7 +2190,7 @@ public final class SQLite3Jni {
   }
 
   @Canonical
-  private static native String sqlite3_value_text16(@NotNull long ptrToValue);
+  static native String sqlite3_value_text16(@NotNull long ptrToValue);
 
   @Canonical
   public static String sqlite3_value_text16(@NotNull sqlite3_value v){
@@ -2202,7 +2198,7 @@ public final class SQLite3Jni {
   }
 
   @Canonical
-  private static native int sqlite3_value_type(@NotNull long ptrToValue);
+  static native int sqlite3_value_type(@NotNull long ptrToValue);
 
   @Canonical
   public static int sqlite3_value_type(@NotNull sqlite3_value v){
@@ -2215,7 +2211,7 @@ public final class SQLite3Jni {
      It has no stable interface. It may go way or change behavior at
      any time.
   */
-  public static native void sqlite3_jni_internal_details();
+  static native void sqlite3_jni_internal_details();
 
   //////////////////////////////////////////////////////////////////////
   // SQLITE_... constants follow...
index d4e821373611d1ac0fe25971b39548cba9dfbc90..9d40eb9ed65807b610b8fd74b47883258d3cb180 100644 (file)
@@ -1283,7 +1283,7 @@ public class Tester1 implements Runnable {
     }
     Exception err = null;
     try {
-      Class t = Class.forName("org.sqlite.jni.fts5.TesterFts5");
+      Class t = Class.forName("org.sqlite.jni.TesterFts5");
       java.lang.reflect.Constructor ctor = t.getConstructor();
       ctor.setAccessible(true);
       final long timeStart = System.currentTimeMillis();
similarity index 99%
rename from ext/jni/src/org/sqlite/jni/fts5/TesterFts5.java
rename to ext/jni/src/org/sqlite/jni/TesterFts5.java
index d65b7b7a5fc2fb08773726f927b3dce99d736a21..8577ee46e1f87f394f7de9acc60d2953b81c6e88 100644 (file)
 *************************************************************************
 ** This file contains a set of tests for the sqlite3 JNI bindings.
 */
-package org.sqlite.jni.fts5;
+package org.sqlite.jni;
 import static org.sqlite.jni.SQLite3Jni.*;
 import static org.sqlite.jni.Tester1.*;
 import org.sqlite.jni.*;
+import org.sqlite.jni.fts5.*;
 
 import java.util.*;
 
index 929496c32e6de59d16672b2f4aa6211d30f14ffa..42d18e5b1ef17465bef333c883d2ec596b6ba300 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C More\swork\stowards\sthe\snew\spointer-passing\smechanism\sin\sJNI,\sand\scode-adjacent\scleanups.
-D 2023-09-30T09:41:58.693
+C Make\sall\snative\sJNI\ssqlite3_...()\sbindings\spackage-private\sas\sa\sfoot-shooting\sprotective\smeasure\s(higher-level\spre-native-call\sargument\svalidation\sis\slargely\spending).\sMove\sSQLTester.java\sand\sTesterFts5.java\sinto\sthe\sorg.sqlite.jni\spackage\sso\sthat\sthey\scan\saccess\sthe\sbeing-tested\smethods.
+D 2023-09-30T10:31:56.592
 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
 F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724
@@ -235,11 +235,11 @@ F ext/fts5/tool/showfts5.tcl d54da0e067306663e2d5d523965ca487698e722c
 F ext/icu/README.txt 7ab7ced8ae78e3a645b57e78570ff589d4c672b71370f5aa9e1cd7024f400fc9
 F ext/icu/icu.c c074519b46baa484bb5396c7e01e051034da8884bad1a1cb7f09bbe6be3f0282
 F ext/icu/sqliteicu.h fa373836ed5a1ee7478bdf8a1650689294e41d0c89c1daab26e9ae78a32075a8
-F ext/jni/GNUmakefile 42e00052401b6dd41c0cdd53b31450606ea37486283abdb038dff9be74bff71e
+F ext/jni/GNUmakefile 029d131ba19c74aec87cab49d36162fc2102e7e3fd58f9b8d2555c92a4752c95
 F ext/jni/README.md 9fceaeb17cecdc5d699dfc83c0cbc3a03fdb3b86bf676381894166c73375ee75
 F ext/jni/jar-dist.make 030aaa4ae71dd86e4ec5e7c1e6cd86f9dfa47c4592c070d2e35157e42498e1fa
-F ext/jni/src/c/sqlite3-jni.c caab9e9fdb0b8d8682c730d9bbc166778971e86f443c3f6b57e70aca86236f0c
-F ext/jni/src/c/sqlite3-jni.h e3ec460570ef74f1f3d7725f93a8cf89840e1fee983741a7939c5dc992971df5
+F ext/jni/src/c/sqlite3-jni.c d1fa417c9ee7db061f86e928834e1086172ef7199d2324b823136879b4c1a187
+F ext/jni/src/c/sqlite3-jni.h 9d6564f044664a82a3c2c8ab8d7f32b38082dc2a80bdb3370f21bb8d0ec901b9
 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
@@ -259,10 +259,12 @@ F ext/jni/src/org/sqlite/jni/ProgressHandlerCallback.java 7b9ff2218129ece98ba60c
 F ext/jni/src/org/sqlite/jni/ResultCode.java ba701f20213a5f259e94cfbfdd36eb7ac7ce7797f2c6c7fca2004ff12ce20f86
 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/SQLite3Jni.java 2cce647774f7f8511c3b61cd280c19d871b49c401155e3f17c346db5d05ac824
+F ext/jni/src/org/sqlite/jni/SQLTester.java e7ba02a72be4205c479d08cbc48cd8f3ac5b924eb6b36a3f5a676a67dcdb8af3 w ext/jni/src/org/sqlite/jni/tester/SQLTester.java
+F ext/jni/src/org/sqlite/jni/SQLite3Jni.java 65ff9e2426c35763139042ffb59ca565802ca668fe0c5c69334bbdf32a130d59
 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 720e1efddd769d5785e95100ff48aa203f2288eea865326a1a81fd5af43ec3a5
+F ext/jni/src/org/sqlite/jni/Tester1.java ef0a6ee3b4e08ebd99010ca8196214bac902de0ea66f753a5cf581888f9a4211
+F ext/jni/src/org/sqlite/jni/TesterFts5.java 0995c5ca1da36b3b703c1c04132b2ee8edd16483be5c422ae378220a4817adbf w ext/jni/src/org/sqlite/jni/fts5/TesterFts5.java
 F ext/jni/src/org/sqlite/jni/TraceV2Callback.java beb0b064c1a5f8bfe585a324ed39a4e33edbe379a3fc60f1401661620d3ca7c0
 F ext/jni/src/org/sqlite/jni/UpdateHookCallback.java 8376f4a931f2d5612b295c003c9515ba933ee76d8f95610e89c339727376e36c
 F ext/jni/src/org/sqlite/jni/WindowFunction.java 488980f4dbb6bdd7067d6cb9c43e4075475e51c54d9b74a5834422654b126246
@@ -276,7 +278,6 @@ F ext/jni/src/org/sqlite/jni/fts5/Fts5Context.java 7058da97059b8e156c17561a47ecd
 F ext/jni/src/org/sqlite/jni/fts5/Fts5ExtensionApi.java e2680721bd83129d0d650ba845b44d7634a9489a90a56c5ce3c54508bf470743
 F ext/jni/src/org/sqlite/jni/fts5/Fts5PhraseIter.java 2a7f3d76a1206e6a43d4c4ed9609b294d5431cc7d8fb875d8419f76efa6e56dc
 F ext/jni/src/org/sqlite/jni/fts5/Fts5Tokenizer.java cc9a53846a168a215238af224c31cef0e8379780e36e8a5e743b00c08145cf19
-F ext/jni/src/org/sqlite/jni/fts5/TesterFts5.java 81ec50bb4c5a285177ea8bebe906792886fc733676d0eade76b18fac56057623
 F ext/jni/src/org/sqlite/jni/fts5/XTokenizeCallback.java 1efd1220ea328a32f2d2a1b16c735864159e929480f71daad4de9d5944839167
 F ext/jni/src/org/sqlite/jni/fts5/fts5_api.java e2ad9bc06a9d307e0a6221c11645783898906455a92b1f7d5ec9b9ff1af1b8ea
 F ext/jni/src/org/sqlite/jni/fts5/fts5_extension_function.java 1fe0f5692c1d67475d12b067f0469949073446f18c56eba5ee5da6ddd06db9b9
@@ -288,8 +289,7 @@ F ext/jni/src/org/sqlite/jni/sqlite3_blob.java fc631ad52feea6e3d1d62b0d0e769ac10
 F ext/jni/src/org/sqlite/jni/sqlite3_context.java 66ca95ce904044263a4aff684abe262d56f73e6b06bca6cf650761d79d7779ad
 F ext/jni/src/org/sqlite/jni/sqlite3_stmt.java cf7f076d8b0f2a23faebbd64e12e8b3dd1977378ca828245d186f1b98458127d
 F ext/jni/src/org/sqlite/jni/sqlite3_value.java 3d1d4903e267bc0bc81d57d21f5e85978eff389a1a6ed46726dbe75f85e6914a
-F ext/jni/src/org/sqlite/jni/tester/SQLTester.java 9892797db57c6e01f0c1601b5866474b6c046f0fd6c5b64f411e5815c941040e
-F ext/jni/src/org/sqlite/jni/tester/test-script-interpreter.md f9f25126127045d051e918fe59004a1485311c50a13edbf18c79a6ff9160030e
+F ext/jni/src/org/sqlite/jni/test-script-interpreter.md f9f25126127045d051e918fe59004a1485311c50a13edbf18c79a6ff9160030e w ext/jni/src/org/sqlite/jni/tester/test-script-interpreter.md
 F ext/jni/src/tests/000-000-sanity.test c3427a0e0ac84d7cbe4c95fdc1cd4b61f9ddcf43443408f3000139478c4dc745
 F ext/jni/src/tests/000-001-ignored.test e17e874c6ab3c437f1293d88093cf06286083b65bf162317f91bbfd92f961b70
 F ext/jni/src/tests/900-001-fts.test bf0ce17a8d082773450e91f2388f5bbb2dfa316d0b676c313c637a91198090f0
@@ -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 0a873de76c0cbcd8e2eda3f0508e427f1dcb32b01798687c0545acfe10102179
-R 85f58d35114ff163d0c32151ce0233f3
+P 6c63987e893357dc8b10decaa96c30fb37b75481640a303e77a0d8224354491e
+R 14bbbf737f96564a41d23e210ece88e9
 U stephan
-Z 80cc94af82e9bdc221a901efb80be260
+Z 2d0b47023fa8f7cf28e0da2e32c6e917
 # Remove this line to create a well-formed Fossil manifest.
index 2411bbf400705f6e0d03931929e720252e6525df..e344029e306ec1b4bf274e5830a5aa3d4b9f79df 100644 (file)
@@ -1 +1 @@
-6c63987e893357dc8b10decaa96c30fb37b75481640a303e77a0d8224354491e
\ No newline at end of file
+ec82f7251acab7df40755ef5f456f36fe49b59e63a20be59bd610fc4280ba8cd
\ No newline at end of file