JNI: add CONFIG_LOG and CONFIG_SQLLOG support to wrapper1. Code-adjacent cleanups.
FossilOrigin-Name: 83c49b9e71e5ae8852bab60a6fa630e22164c8efbf074c85450136781d0fffd3
This commit is contained in:
parent
253727b33d
commit
d7ef0e8f87
@ -93,7 +93,7 @@ JAVA_FILES.main := $(patsubst %,$(dir.src.jni)/annotation/%,\
|
|||||||
CollationNeededCallback.java \
|
CollationNeededCallback.java \
|
||||||
CommitHookCallback.java \
|
CommitHookCallback.java \
|
||||||
ConfigLogCallback.java \
|
ConfigLogCallback.java \
|
||||||
ConfigSqllogCallback.java \
|
ConfigSqlLogCallback.java \
|
||||||
NativePointerHolder.java \
|
NativePointerHolder.java \
|
||||||
OutputPointer.java \
|
OutputPointer.java \
|
||||||
PrepareMultiCallback.java \
|
PrepareMultiCallback.java \
|
||||||
@ -322,7 +322,7 @@ test-one: $(test.deps)
|
|||||||
$(bin.java) $(test.flags.jvm) org.sqlite.jni.wrapper1.Tester2 $(Tester2.flags)
|
$(bin.java) $(test.flags.jvm) org.sqlite.jni.wrapper1.Tester2 $(Tester2.flags)
|
||||||
test-sqllog: $(test.deps)
|
test-sqllog: $(test.deps)
|
||||||
@echo "Testing with -sqllog..."
|
@echo "Testing with -sqllog..."
|
||||||
$(bin.java) $(test.flags.jvm) -sqllog
|
$(bin.java) $(test.flags.jvm) org.sqlite.jni.capi.Tester1 $(Tester1.flags) -sqllog
|
||||||
test-mt: $(test.deps)
|
test-mt: $(test.deps)
|
||||||
@echo "Testing in multi-threaded mode:";
|
@echo "Testing in multi-threaded mode:";
|
||||||
$(bin.java) $(test.flags.jvm) org.sqlite.jni.capi.Tester1 \
|
$(bin.java) $(test.flags.jvm) org.sqlite.jni.capi.Tester1 \
|
||||||
|
@ -1300,7 +1300,7 @@ JNIEXPORT jint JNICALL Java_org_sqlite_jni_capi_CApi_sqlite3_1config_1_1CONFIG_1
|
|||||||
/*
|
/*
|
||||||
* Class: org_sqlite_jni_capi_CApi
|
* Class: org_sqlite_jni_capi_CApi
|
||||||
* Method: sqlite3_config__SQLLOG
|
* Method: sqlite3_config__SQLLOG
|
||||||
* Signature: (Lorg/sqlite/jni/capi/ConfigSqllogCallback;)I
|
* Signature: (Lorg/sqlite/jni/capi/ConfigSqlLogCallback;)I
|
||||||
*/
|
*/
|
||||||
JNIEXPORT jint JNICALL Java_org_sqlite_jni_capi_CApi_sqlite3_1config_1_1SQLLOG
|
JNIEXPORT jint JNICALL Java_org_sqlite_jni_capi_CApi_sqlite3_1config_1_1SQLLOG
|
||||||
(JNIEnv *, jclass, jobject);
|
(JNIEnv *, jclass, jobject);
|
||||||
|
@ -1052,10 +1052,10 @@ public final class CApi {
|
|||||||
);
|
);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Internal level of indirection for sqlite3_config(ConfigSqllogCallback).
|
Internal level of indirection for sqlite3_config(ConfigSqlLogCallback).
|
||||||
*/
|
*/
|
||||||
private static native int sqlite3_config__SQLLOG(
|
private static native int sqlite3_config__SQLLOG(
|
||||||
@Nullable ConfigSqllogCallback logger
|
@Nullable ConfigSqlLogCallback logger
|
||||||
);
|
);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -1091,7 +1091,7 @@ public final class CApi {
|
|||||||
the rest of the library. This must not be called when any other
|
the rest of the library. This must not be called when any other
|
||||||
library APIs are being called.
|
library APIs are being called.
|
||||||
*/
|
*/
|
||||||
public static int sqlite3_config( @Nullable ConfigSqllogCallback logger ){
|
public static int sqlite3_config( @Nullable ConfigSqlLogCallback logger ){
|
||||||
return sqlite3_config__SQLLOG(logger);
|
return sqlite3_config__SQLLOG(logger);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -16,10 +16,10 @@ package org.sqlite.jni.capi;
|
|||||||
/**
|
/**
|
||||||
A callback for use with sqlite3_config().
|
A callback for use with sqlite3_config().
|
||||||
*/
|
*/
|
||||||
public interface ConfigSqllogCallback {
|
public interface ConfigSqlLogCallback {
|
||||||
/**
|
/**
|
||||||
Must function as described for a C-level callback for
|
Must function as described for a C-level callback for
|
||||||
{@link CApi#sqlite3_config(ConfigSqllogCallback)}, with the slight signature change.
|
{@link CApi#sqlite3_config(ConfigSqlLogCallback)}, with the slight signature change.
|
||||||
*/
|
*/
|
||||||
void call(sqlite3 db, String msg, int msgType );
|
void call(sqlite3 db, String msg, int msgType );
|
||||||
}
|
}
|
@ -2007,7 +2007,7 @@ public class Tester1 implements Runnable {
|
|||||||
|
|
||||||
if( sqlLog ){
|
if( sqlLog ){
|
||||||
if( sqlite3_compileoption_used("ENABLE_SQLLOG") ){
|
if( sqlite3_compileoption_used("ENABLE_SQLLOG") ){
|
||||||
final ConfigSqllogCallback log = new ConfigSqllogCallback() {
|
final ConfigSqlLogCallback log = new ConfigSqlLogCallback() {
|
||||||
@Override public void call(sqlite3 db, String msg, int op){
|
@Override public void call(sqlite3 db, String msg, int op){
|
||||||
switch(op){
|
switch(op){
|
||||||
case 0: outln("Opening db: ",db); break;
|
case 0: outln("Opening db: ",db); break;
|
||||||
@ -2018,7 +2018,7 @@ public class Tester1 implements Runnable {
|
|||||||
};
|
};
|
||||||
int rc = sqlite3_config( log );
|
int rc = sqlite3_config( log );
|
||||||
affirm( 0==rc );
|
affirm( 0==rc );
|
||||||
rc = sqlite3_config( (ConfigSqllogCallback)null );
|
rc = sqlite3_config( (ConfigSqlLogCallback)null );
|
||||||
affirm( 0==rc );
|
affirm( 0==rc );
|
||||||
rc = sqlite3_config( log );
|
rc = sqlite3_config( log );
|
||||||
affirm( 0==rc );
|
affirm( 0==rc );
|
||||||
|
@ -209,6 +209,10 @@ public final class Sqlite implements AutoCloseable {
|
|||||||
public static final int DBCONFIG_STMT_SCANSTATUS = CApi.SQLITE_DBCONFIG_STMT_SCANSTATUS;
|
public static final int DBCONFIG_STMT_SCANSTATUS = CApi.SQLITE_DBCONFIG_STMT_SCANSTATUS;
|
||||||
public static final int DBCONFIG_REVERSE_SCANORDER = CApi.SQLITE_DBCONFIG_REVERSE_SCANORDER;
|
public static final int DBCONFIG_REVERSE_SCANORDER = CApi.SQLITE_DBCONFIG_REVERSE_SCANORDER;
|
||||||
|
|
||||||
|
public static final int CONFIG_SINGLETHREAD = CApi.SQLITE_CONFIG_SINGLETHREAD;
|
||||||
|
public static final int CONFIG_MULTITHREAD = CApi.SQLITE_CONFIG_MULTITHREAD;
|
||||||
|
public static final int CONFIG_SERIALIZED = CApi.SQLITE_CONFIG_SERIALIZED;
|
||||||
|
|
||||||
public static final int UTF8 = CApi.SQLITE_UTF8;
|
public static final int UTF8 = CApi.SQLITE_UTF8;
|
||||||
public static final int UTF16 = CApi.SQLITE_UTF16;
|
public static final int UTF16 = CApi.SQLITE_UTF16;
|
||||||
public static final int UTF16LE = CApi.SQLITE_UTF16LE;
|
public static final int UTF16LE = CApi.SQLITE_UTF16LE;
|
||||||
@ -261,6 +265,32 @@ public final class Sqlite implements AutoCloseable {
|
|||||||
private static final java.util.Map<org.sqlite.jni.capi.sqlite3, Sqlite> nativeToWrapper
|
private static final java.util.Map<org.sqlite.jni.capi.sqlite3, Sqlite> nativeToWrapper
|
||||||
= new java.util.HashMap<>();
|
= new java.util.HashMap<>();
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
When any given thread is done using the SQLite library, calling
|
||||||
|
this will free up any native-side resources which may be
|
||||||
|
associated specifically with that thread. This is not strictly
|
||||||
|
necessary, in particular in applications which only use SQLite
|
||||||
|
from a single thread, but may help free some otherwise errant
|
||||||
|
resources.
|
||||||
|
|
||||||
|
Calling into SQLite from a given thread after this has been
|
||||||
|
called in that thread is harmless. The library will simply start
|
||||||
|
to re-cache certain state for that thread.
|
||||||
|
|
||||||
|
Contrariwise, failing to call this will effectively leak a small
|
||||||
|
amount of cached state for the thread, which may add up to
|
||||||
|
significant amounts if the application uses SQLite from many
|
||||||
|
threads.
|
||||||
|
|
||||||
|
This must never be called while actively using SQLite from this
|
||||||
|
thread, e.g. from within a query loop or a callback which is
|
||||||
|
operating on behalf of the library.
|
||||||
|
*/
|
||||||
|
static void uncacheThread(){
|
||||||
|
CApi.sqlite3_java_uncache_thread();
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Returns the Sqlite object associated with the given sqlite3
|
Returns the Sqlite object associated with the given sqlite3
|
||||||
object, or null if there is no such mapping.
|
object, or null if there is no such mapping.
|
||||||
@ -342,6 +372,9 @@ public final class Sqlite implements AutoCloseable {
|
|||||||
private static boolean hasNormalizeSql =
|
private static boolean hasNormalizeSql =
|
||||||
compileOptionUsed("ENABLE_NORMALIZE");
|
compileOptionUsed("ENABLE_NORMALIZE");
|
||||||
|
|
||||||
|
private static boolean hasSqlLog =
|
||||||
|
compileOptionUsed("ENABLE_SQLLOG");
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Throws UnsupportedOperationException if check is false.
|
Throws UnsupportedOperationException if check is false.
|
||||||
flag is expected to be the name of an SQLITE_ENABLE_...
|
flag is expected to be the name of an SQLITE_ENABLE_...
|
||||||
@ -410,7 +443,7 @@ public final class Sqlite implements AutoCloseable {
|
|||||||
new org.sqlite.jni.capi.OutputPointer.Int64();
|
new org.sqlite.jni.capi.OutputPointer.Int64();
|
||||||
org.sqlite.jni.capi.OutputPointer.Int64 pHighwater =
|
org.sqlite.jni.capi.OutputPointer.Int64 pHighwater =
|
||||||
new org.sqlite.jni.capi.OutputPointer.Int64();
|
new org.sqlite.jni.capi.OutputPointer.Int64();
|
||||||
checkRc2( CApi.sqlite3_status64(op, pCurrent, pHighwater, resetStats) );
|
checkRcStatic( CApi.sqlite3_status64(op, pCurrent, pHighwater, resetStats) );
|
||||||
final Status s = new Status();
|
final Status s = new Status();
|
||||||
s.current = pCurrent.value;
|
s.current = pCurrent.value;
|
||||||
s.peak = pHighwater.value;
|
s.peak = pHighwater.value;
|
||||||
@ -489,7 +522,7 @@ public final class Sqlite implements AutoCloseable {
|
|||||||
Like checkRc() but behaves as if that function were
|
Like checkRc() but behaves as if that function were
|
||||||
called with a null db object.
|
called with a null db object.
|
||||||
*/
|
*/
|
||||||
private static void checkRc2(int rc){
|
private static void checkRcStatic(int rc){
|
||||||
if( 0!=rc ){
|
if( 0!=rc ){
|
||||||
if( CApi.SQLITE_NOMEM==rc ){
|
if( CApi.SQLITE_NOMEM==rc ){
|
||||||
throw new OutOfMemoryError();
|
throw new OutOfMemoryError();
|
||||||
@ -1859,4 +1892,81 @@ public final class Sqlite implements AutoCloseable {
|
|||||||
return new Blob(this, out.take());
|
return new Blob(this, out.take());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Callback for use with libConfigLog().
|
||||||
|
*/
|
||||||
|
public interface ConfigLog {
|
||||||
|
/**
|
||||||
|
Must function as described for a C-level callback for
|
||||||
|
sqlite3_config()'s SQLITE_CONFIG_LOG callback, with the slight
|
||||||
|
signature change. Any exceptions thrown from this callback are
|
||||||
|
necessarily suppressed.
|
||||||
|
*/
|
||||||
|
void call(int errCode, String msg);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Analog to sqlite3_config() with the SQLITE_CONFIG_LOG option,
|
||||||
|
this sets or (if log is null) clears the current logger.
|
||||||
|
*/
|
||||||
|
public static void libConfigLog(ConfigLog log){
|
||||||
|
final org.sqlite.jni.capi.ConfigLogCallback l =
|
||||||
|
null==log
|
||||||
|
? null
|
||||||
|
: new org.sqlite.jni.capi.ConfigLogCallback() {
|
||||||
|
@Override public void call(int errCode, String msg){
|
||||||
|
log.call(errCode, msg);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
checkRcStatic(CApi.sqlite3_config(l));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Callback for use with libConfigSqlLog().
|
||||||
|
*/
|
||||||
|
public interface ConfigSqlLog {
|
||||||
|
/**
|
||||||
|
Must function as described for a C-level callback for
|
||||||
|
sqlite3_config()'s SQLITE_CONFIG_SQLLOG callback, with the
|
||||||
|
slight signature change. Any exceptions thrown from this
|
||||||
|
callback are necessarily suppressed.
|
||||||
|
*/
|
||||||
|
void call(Sqlite db, String msg, int msgType);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Analog to sqlite3_config() with the SQLITE_CONFIG_SQLLOG option,
|
||||||
|
this sets or (if log is null) clears the current logger.
|
||||||
|
|
||||||
|
If SQLite is built without SQLITE_ENABLE_SQLLOG defined then this
|
||||||
|
will throw an UnsupportedOperationException.
|
||||||
|
*/
|
||||||
|
public static void libConfigSqlLog(ConfigSqlLog log){
|
||||||
|
Sqlite.checkSupported(hasNormalizeSql, "SQLITE_ENABLE_SQLLOG");
|
||||||
|
final org.sqlite.jni.capi.ConfigSqlLogCallback l =
|
||||||
|
null==log
|
||||||
|
? null
|
||||||
|
: new org.sqlite.jni.capi.ConfigSqlLogCallback() {
|
||||||
|
@Override public void call(sqlite3 db, String msg, int msgType){
|
||||||
|
try{
|
||||||
|
log.call(fromNative(db), msg, msgType);
|
||||||
|
}catch(Exception e){
|
||||||
|
/* Suppressed */
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
checkRcStatic(CApi.sqlite3_config(l));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Analog to the C-level sqlite3_config() with one of the
|
||||||
|
SQLITE_CONFIG_... constants defined as CONFIG_... in this
|
||||||
|
class. Throws on error, including passing of an unknown option or
|
||||||
|
if a specified option is not supported by the underlying build of
|
||||||
|
the SQLite library.
|
||||||
|
*/
|
||||||
|
public static void libConfigOp( int op ){
|
||||||
|
checkRcStatic(CApi.sqlite3_config(op));
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -762,9 +762,9 @@ public class Tester2 implements Runnable {
|
|||||||
affirm( newHook == oldHook );
|
affirm( newHook == oldHook );
|
||||||
execSql(db, "BEGIN; update t set a='i' where a='h'; COMMIT;");
|
execSql(db, "BEGIN; update t set a='i' where a='h'; COMMIT;");
|
||||||
affirm( 5 == counter.value );
|
affirm( 5 == counter.value );
|
||||||
hookResult.value = CApi.SQLITE_ERROR;
|
hookResult.value = Sqlite.ERROR;
|
||||||
int rc = execSql(db, false, "BEGIN; update t set a='j' where a='i'; COMMIT;");
|
int rc = execSql(db, false, "BEGIN; update t set a='j' where a='i'; COMMIT;");
|
||||||
affirm( CApi.SQLITE_CONSTRAINT_COMMITHOOK == rc );
|
affirm( Sqlite.CONSTRAINT_COMMITHOOK == rc );
|
||||||
affirm( 6 == counter.value );
|
affirm( 6 == counter.value );
|
||||||
db.close();
|
db.close();
|
||||||
}
|
}
|
||||||
@ -994,8 +994,7 @@ public class Tester2 implements Runnable {
|
|||||||
listErrors.add(e);
|
listErrors.add(e);
|
||||||
}
|
}
|
||||||
}finally{
|
}finally{
|
||||||
affirm( CApi.sqlite3_java_uncache_thread() );
|
Sqlite.uncacheThread();
|
||||||
affirm( !CApi.sqlite3_java_uncache_thread() );
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1068,38 +1067,28 @@ public class Tester2 implements Runnable {
|
|||||||
|
|
||||||
if( sqlLog ){
|
if( sqlLog ){
|
||||||
if( Sqlite.compileOptionUsed("ENABLE_SQLLOG") ){
|
if( Sqlite.compileOptionUsed("ENABLE_SQLLOG") ){
|
||||||
final ConfigSqllogCallback log = new ConfigSqllogCallback() {
|
Sqlite.libConfigSqlLog( new Sqlite.ConfigSqlLog() {
|
||||||
@Override public void call(sqlite3 db, String msg, int op){
|
@Override public void call(Sqlite db, String msg, int op){
|
||||||
switch(op){
|
switch(op){
|
||||||
case 0: outln("Opening db: ",db); break;
|
case 0: outln("Opening db: ",db); break;
|
||||||
case 1: outln("SQL ",db,": ",msg); break;
|
case 1: outln("SQL ",db,": ",msg); break;
|
||||||
case 2: outln("Closing db: ",db); break;
|
case 2: outln("Closing db: ",db); break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
}
|
||||||
int rc = CApi.sqlite3_config( log );
|
);
|
||||||
affirm( 0==rc );
|
|
||||||
rc = CApi.sqlite3_config( (ConfigSqllogCallback)null );
|
|
||||||
affirm( 0==rc );
|
|
||||||
rc = CApi.sqlite3_config( log );
|
|
||||||
affirm( 0==rc );
|
|
||||||
}else{
|
}else{
|
||||||
outln("WARNING: -sqllog is not active because library was built ",
|
outln("WARNING: -sqllog is not active because library was built ",
|
||||||
"without SQLITE_ENABLE_SQLLOG.");
|
"without SQLITE_ENABLE_SQLLOG.");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if( configLog ){
|
if( configLog ){
|
||||||
final ConfigLogCallback log = new ConfigLogCallback() {
|
Sqlite.libConfigLog( new Sqlite.ConfigLog() {
|
||||||
@Override public void call(int code, String msg){
|
@Override public void call(int code, String msg){
|
||||||
outln("ConfigLogCallback: ",ResultCode.getEntryForInt(code),": ", msg);
|
outln("ConfigLog: ",Sqlite.errstr(code),": ", msg);
|
||||||
};
|
};
|
||||||
};
|
}
|
||||||
int rc = CApi.sqlite3_config( log );
|
);
|
||||||
affirm( 0==rc );
|
|
||||||
rc = CApi.sqlite3_config( (ConfigLogCallback)null );
|
|
||||||
affirm( 0==rc );
|
|
||||||
rc = CApi.sqlite3_config( log );
|
|
||||||
affirm( 0==rc );
|
|
||||||
}
|
}
|
||||||
|
|
||||||
quietMode = squelchTestOutput;
|
quietMode = squelchTestOutput;
|
||||||
@ -1132,39 +1121,16 @@ public class Tester2 implements Runnable {
|
|||||||
}
|
}
|
||||||
|
|
||||||
final long timeStart = System.currentTimeMillis();
|
final long timeStart = System.currentTimeMillis();
|
||||||
int nLoop = 0;
|
|
||||||
switch( CApi.sqlite3_threadsafe() ){ /* Sanity checking */
|
|
||||||
case 0:
|
|
||||||
affirm( CApi.SQLITE_ERROR==CApi.sqlite3_config( CApi.SQLITE_CONFIG_SINGLETHREAD ),
|
|
||||||
"Could not switch to single-thread mode." );
|
|
||||||
affirm( CApi.SQLITE_ERROR==CApi.sqlite3_config( CApi.SQLITE_CONFIG_MULTITHREAD ),
|
|
||||||
"Could switch to multithread mode." );
|
|
||||||
affirm( CApi.SQLITE_ERROR==CApi.sqlite3_config( CApi.SQLITE_CONFIG_SERIALIZED ),
|
|
||||||
"Could not switch to serialized threading mode." );
|
|
||||||
outln("This is a single-threaded build. Not using threads.");
|
|
||||||
nThread = 1;
|
|
||||||
break;
|
|
||||||
case 1:
|
|
||||||
case 2:
|
|
||||||
affirm( 0==CApi.sqlite3_config( CApi.SQLITE_CONFIG_SINGLETHREAD ),
|
|
||||||
"Could not switch to single-thread mode." );
|
|
||||||
affirm( 0==CApi.sqlite3_config( CApi.SQLITE_CONFIG_MULTITHREAD ),
|
|
||||||
"Could not switch to multithread mode." );
|
|
||||||
affirm( 0==CApi.sqlite3_config( CApi.SQLITE_CONFIG_SERIALIZED ),
|
|
||||||
"Could not switch to serialized threading mode." );
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
affirm( false, "Unhandled SQLITE_THREADSAFE value." );
|
|
||||||
}
|
|
||||||
outln("libversion_number: ",
|
outln("libversion_number: ",
|
||||||
CApi.sqlite3_libversion_number(),"\n",
|
Sqlite.libVersionNumber(),"\n",
|
||||||
CApi.sqlite3_libversion(),"\n",CApi.SQLITE_SOURCE_ID,"\n",
|
Sqlite.libVersion(),"\n",Sqlite.libSourceId(),"\n",
|
||||||
"SQLITE_THREADSAFE=",CApi.sqlite3_threadsafe());
|
"SQLITE_THREADSAFE=",CApi.sqlite3_threadsafe());
|
||||||
final boolean showLoopCount = (nRepeat>1 && nThread>1);
|
final boolean showLoopCount = (nRepeat>1 && nThread>1);
|
||||||
if( showLoopCount ){
|
if( showLoopCount ){
|
||||||
outln("Running ",nRepeat," loop(s) with ",nThread," thread(s) each.");
|
outln("Running ",nRepeat," loop(s) with ",nThread," thread(s) each.");
|
||||||
}
|
}
|
||||||
if( takeNaps ) outln("Napping between tests is enabled.");
|
if( takeNaps ) outln("Napping between tests is enabled.");
|
||||||
|
int nLoop = 0;
|
||||||
for( int n = 0; n < nRepeat; ++n ){
|
for( int n = 0; n < nRepeat; ++n ){
|
||||||
++nLoop;
|
++nLoop;
|
||||||
if( showLoopCount ) out((1==nLoop ? "" : " ")+nLoop);
|
if( showLoopCount ) out((1==nLoop ? "" : " ")+nLoop);
|
||||||
@ -1206,7 +1172,7 @@ public class Tester2 implements Runnable {
|
|||||||
if( doSomethingForDev ){
|
if( doSomethingForDev ){
|
||||||
CApi.sqlite3_jni_internal_details();
|
CApi.sqlite3_jni_internal_details();
|
||||||
}
|
}
|
||||||
affirm( 0==CApi.sqlite3_release_memory(1) );
|
affirm( 0==Sqlite.libReleaseMemory(1) );
|
||||||
CApi.sqlite3_shutdown();
|
CApi.sqlite3_shutdown();
|
||||||
int nMethods = 0;
|
int nMethods = 0;
|
||||||
int nNatives = 0;
|
int nNatives = 0;
|
||||||
|
24
manifest
24
manifest
@ -1,5 +1,5 @@
|
|||||||
C JNI:\sapply\san\sinternal\slevel\sof\sAPI\sindirection\sto\savoid\shaving\sto\swork\swith\smassively-mangled\snames\sfor\sthe\svarious\ssqlite3_config()\soverloads.
|
C JNI:\sadd\sCONFIG_LOG\sand\sCONFIG_SQLLOG\ssupport\sto\swrapper1.\sCode-adjacent\scleanups.
|
||||||
D 2023-11-15T03:02:11.306
|
D 2023-11-15T04:55:38.215
|
||||||
F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
|
F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
|
||||||
F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
|
F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
|
||||||
F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724
|
F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724
|
||||||
@ -238,11 +238,11 @@ F ext/fts5/tool/showfts5.tcl d54da0e067306663e2d5d523965ca487698e722c
|
|||||||
F ext/icu/README.txt 7ab7ced8ae78e3a645b57e78570ff589d4c672b71370f5aa9e1cd7024f400fc9
|
F ext/icu/README.txt 7ab7ced8ae78e3a645b57e78570ff589d4c672b71370f5aa9e1cd7024f400fc9
|
||||||
F ext/icu/icu.c c074519b46baa484bb5396c7e01e051034da8884bad1a1cb7f09bbe6be3f0282
|
F ext/icu/icu.c c074519b46baa484bb5396c7e01e051034da8884bad1a1cb7f09bbe6be3f0282
|
||||||
F ext/icu/sqliteicu.h fa373836ed5a1ee7478bdf8a1650689294e41d0c89c1daab26e9ae78a32075a8
|
F ext/icu/sqliteicu.h fa373836ed5a1ee7478bdf8a1650689294e41d0c89c1daab26e9ae78a32075a8
|
||||||
F ext/jni/GNUmakefile f2f3a31923293659b95225e932a286af1f2287d75bf88ad6c0fd1b9d9cd020d4
|
F ext/jni/GNUmakefile d546fd57ed9949f7e7fc48d93a9bc9fab8ce86091e995b534eb73da5defdd21a
|
||||||
F ext/jni/README.md 78a0386f6813e5201142ff07f077f4dcf1bb66266c69c6bbd09edac69cadff60
|
F ext/jni/README.md 78a0386f6813e5201142ff07f077f4dcf1bb66266c69c6bbd09edac69cadff60
|
||||||
F ext/jni/jar-dist.make 030aaa4ae71dd86e4ec5e7c1e6cd86f9dfa47c4592c070d2e35157e42498e1fa
|
F ext/jni/jar-dist.make 030aaa4ae71dd86e4ec5e7c1e6cd86f9dfa47c4592c070d2e35157e42498e1fa
|
||||||
F ext/jni/src/c/sqlite3-jni.c 4fd9906698d296d4e4e4a54c3946461f8506f5b2a13a26cd7b27e0e5c7272bd0
|
F ext/jni/src/c/sqlite3-jni.c 4fd9906698d296d4e4e4a54c3946461f8506f5b2a13a26cd7b27e0e5c7272bd0
|
||||||
F ext/jni/src/c/sqlite3-jni.h e10321a23fe8433791f463adc15cf885406a7237788087f92a75a99f9a0fdf8f
|
F ext/jni/src/c/sqlite3-jni.h 913ab8e8fee432ae40f0e387c8231118d17053714703f5ded18202912a8a3fbf
|
||||||
F ext/jni/src/org/sqlite/jni/annotation/NotNull.java 02091a8112e33389f1c160f506cd413168c8dfacbeda608a4946c6e3557b7d5a
|
F ext/jni/src/org/sqlite/jni/annotation/NotNull.java 02091a8112e33389f1c160f506cd413168c8dfacbeda608a4946c6e3557b7d5a
|
||||||
F ext/jni/src/org/sqlite/jni/annotation/Nullable.java 0b1879852707f752512d4db9d7edd0d8db2f0c2612316ce1c832715e012ff6ba
|
F ext/jni/src/org/sqlite/jni/annotation/Nullable.java 0b1879852707f752512d4db9d7edd0d8db2f0c2612316ce1c832715e012ff6ba
|
||||||
F ext/jni/src/org/sqlite/jni/annotation/package-info.java 977b374aed9d5853cbf3438ba3b0940abfa2ea4574f702a2448ee143b98ac3ca
|
F ext/jni/src/org/sqlite/jni/annotation/package-info.java 977b374aed9d5853cbf3438ba3b0940abfa2ea4574f702a2448ee143b98ac3ca
|
||||||
@ -251,13 +251,13 @@ F ext/jni/src/org/sqlite/jni/capi/AggregateFunction.java 0b72cdff61533b564d65b63
|
|||||||
F ext/jni/src/org/sqlite/jni/capi/AuthorizerCallback.java c045a5b47e02bb5f1af91973814a905f12048c428a3504fbc5266d1c1be3de5a
|
F ext/jni/src/org/sqlite/jni/capi/AuthorizerCallback.java c045a5b47e02bb5f1af91973814a905f12048c428a3504fbc5266d1c1be3de5a
|
||||||
F ext/jni/src/org/sqlite/jni/capi/AutoExtensionCallback.java 74cc4998a73d6563542ecb90804a3c4f4e828cb4bd69e61226d1a51f4646e759
|
F ext/jni/src/org/sqlite/jni/capi/AutoExtensionCallback.java 74cc4998a73d6563542ecb90804a3c4f4e828cb4bd69e61226d1a51f4646e759
|
||||||
F ext/jni/src/org/sqlite/jni/capi/BusyHandlerCallback.java 7b8e19810c42b0ad21a04b5d8c804b32ee5905d137148703f16a75b612c380ca
|
F ext/jni/src/org/sqlite/jni/capi/BusyHandlerCallback.java 7b8e19810c42b0ad21a04b5d8c804b32ee5905d137148703f16a75b612c380ca
|
||||||
F ext/jni/src/org/sqlite/jni/capi/CApi.java 4cbcd18aec9da051a9d934a2ba663f9272c71ab6b17e01462f285df87c0c54fd
|
F ext/jni/src/org/sqlite/jni/capi/CApi.java f3715903053f551abe0dacf39c77e619b832cde1f33829b582d5574eb52bb9a9
|
||||||
F ext/jni/src/org/sqlite/jni/capi/CallbackProxy.java 57e2d275dcebe690b1fc1f3d34eb96879b2d7039bce30b563aee547bf45d8a8b
|
F ext/jni/src/org/sqlite/jni/capi/CallbackProxy.java 57e2d275dcebe690b1fc1f3d34eb96879b2d7039bce30b563aee547bf45d8a8b
|
||||||
F ext/jni/src/org/sqlite/jni/capi/CollationCallback.java e29bcfc540fdd343e2f5cca4d27235113f2886acb13380686756d5cabdfd065a
|
F ext/jni/src/org/sqlite/jni/capi/CollationCallback.java e29bcfc540fdd343e2f5cca4d27235113f2886acb13380686756d5cabdfd065a
|
||||||
F ext/jni/src/org/sqlite/jni/capi/CollationNeededCallback.java 5bfa226a8e7a92e804fd52d6e42b4c7b875fa7a94f8e2c330af8cc244a8920ab
|
F ext/jni/src/org/sqlite/jni/capi/CollationNeededCallback.java 5bfa226a8e7a92e804fd52d6e42b4c7b875fa7a94f8e2c330af8cc244a8920ab
|
||||||
F ext/jni/src/org/sqlite/jni/capi/CommitHookCallback.java 482f53dfec9e3ac2a9070d3fceebd56250932aaaf7c4f5bc8de29fc011416e0c
|
F ext/jni/src/org/sqlite/jni/capi/CommitHookCallback.java 482f53dfec9e3ac2a9070d3fceebd56250932aaaf7c4f5bc8de29fc011416e0c
|
||||||
F ext/jni/src/org/sqlite/jni/capi/ConfigLogCallback.java b995ca412f59b631803b93aa5b3684fce62e335d1e123207084c054abfd488d4
|
F ext/jni/src/org/sqlite/jni/capi/ConfigLogCallback.java b995ca412f59b631803b93aa5b3684fce62e335d1e123207084c054abfd488d4
|
||||||
F ext/jni/src/org/sqlite/jni/capi/ConfigSqllogCallback.java 701f2e4d8bdeb27cfbeeb56315d15b13d8752b0fdbca705f31bd4366c58d8a33
|
F ext/jni/src/org/sqlite/jni/capi/ConfigSqlLogCallback.java e5723900b6458bc6288f52187090a78ebe0a20f403ac7c887ec9061dfe51aba7 w ext/jni/src/org/sqlite/jni/capi/ConfigSqllogCallback.java
|
||||||
F ext/jni/src/org/sqlite/jni/capi/NativePointerHolder.java b7036dcb1ef1b39f1f36ac605dde0ff1a24a9a01ade6aa1a605039443e089a61
|
F ext/jni/src/org/sqlite/jni/capi/NativePointerHolder.java b7036dcb1ef1b39f1f36ac605dde0ff1a24a9a01ade6aa1a605039443e089a61
|
||||||
F ext/jni/src/org/sqlite/jni/capi/OutputPointer.java 246b0e66c4603f41c567105a21189d138aaf8c58203ecd4928802333da553e7c
|
F ext/jni/src/org/sqlite/jni/capi/OutputPointer.java 246b0e66c4603f41c567105a21189d138aaf8c58203ecd4928802333da553e7c
|
||||||
F ext/jni/src/org/sqlite/jni/capi/PrepareMultiCallback.java 97352091abd7556167f4799076396279a51749fdae2b72a6ba61cd39b3df0359
|
F ext/jni/src/org/sqlite/jni/capi/PrepareMultiCallback.java 97352091abd7556167f4799076396279a51749fdae2b72a6ba61cd39b3df0359
|
||||||
@ -269,7 +269,7 @@ F ext/jni/src/org/sqlite/jni/capi/SQLFunction.java 0d1e9afc9ff8a2adb94a155b72385
|
|||||||
F ext/jni/src/org/sqlite/jni/capi/SQLTester.java 09bee15aa0eedac68d767ae21d9a6a62a31ade59182a3ccbf036d6463d9e30b1
|
F ext/jni/src/org/sqlite/jni/capi/SQLTester.java 09bee15aa0eedac68d767ae21d9a6a62a31ade59182a3ccbf036d6463d9e30b1
|
||||||
F ext/jni/src/org/sqlite/jni/capi/ScalarFunction.java 93b9700fca4c68075ccab12fe0fbbc76c91cafc9f368e835b9bd7cd7732c8615
|
F ext/jni/src/org/sqlite/jni/capi/ScalarFunction.java 93b9700fca4c68075ccab12fe0fbbc76c91cafc9f368e835b9bd7cd7732c8615
|
||||||
F ext/jni/src/org/sqlite/jni/capi/TableColumnMetadata.java addf120e0e76e5be1ff2260daa7ce305ff9b5fafd64153a7a28e9d8f000a815f
|
F ext/jni/src/org/sqlite/jni/capi/TableColumnMetadata.java addf120e0e76e5be1ff2260daa7ce305ff9b5fafd64153a7a28e9d8f000a815f
|
||||||
F ext/jni/src/org/sqlite/jni/capi/Tester1.java dcaa283a27aecb25dfd8f1a610885fb95d24945235b51ea13a1143585922de04
|
F ext/jni/src/org/sqlite/jni/capi/Tester1.java 11746c7b29cf38f20045f06f6c225be11bcb16bd6a75642987c5c2596f3edd6d
|
||||||
F ext/jni/src/org/sqlite/jni/capi/TraceV2Callback.java 0a25e117a0daae3394a77f24713e36d7b44c67d6e6d30e9e1d56a63442eef723
|
F ext/jni/src/org/sqlite/jni/capi/TraceV2Callback.java 0a25e117a0daae3394a77f24713e36d7b44c67d6e6d30e9e1d56a63442eef723
|
||||||
F ext/jni/src/org/sqlite/jni/capi/UpdateHookCallback.java c8bdf7848e6599115d601bcc9427ff902cb33129b9be32870ac6808e04b6ae56
|
F ext/jni/src/org/sqlite/jni/capi/UpdateHookCallback.java c8bdf7848e6599115d601bcc9427ff902cb33129b9be32870ac6808e04b6ae56
|
||||||
F ext/jni/src/org/sqlite/jni/capi/ValueHolder.java 2ce069f3e007fdbbe1f4e507a5a407fc9679da31a0aa40985e6317ed4d5ec7b5
|
F ext/jni/src/org/sqlite/jni/capi/ValueHolder.java 2ce069f3e007fdbbe1f4e507a5a407fc9679da31a0aa40985e6317ed4d5ec7b5
|
||||||
@ -296,9 +296,9 @@ F ext/jni/src/org/sqlite/jni/test-script-interpreter.md f9f25126127045d051e918fe
|
|||||||
F ext/jni/src/org/sqlite/jni/wrapper1/AggregateFunction.java d5c108b02afd3c63c9e5e53f71f85273c1bfdc461ae526e0a0bb2b25e4df6483
|
F ext/jni/src/org/sqlite/jni/wrapper1/AggregateFunction.java d5c108b02afd3c63c9e5e53f71f85273c1bfdc461ae526e0a0bb2b25e4df6483
|
||||||
F ext/jni/src/org/sqlite/jni/wrapper1/ScalarFunction.java 43c43adfb7866098aadaaca1620028a6ec82d5193149970019b1cce9eb59fb03
|
F ext/jni/src/org/sqlite/jni/wrapper1/ScalarFunction.java 43c43adfb7866098aadaaca1620028a6ec82d5193149970019b1cce9eb59fb03
|
||||||
F ext/jni/src/org/sqlite/jni/wrapper1/SqlFunction.java 27b141f5914c7cb0e40e90a301d5e05b77f3bd42236834a68031b7086381fafd
|
F ext/jni/src/org/sqlite/jni/wrapper1/SqlFunction.java 27b141f5914c7cb0e40e90a301d5e05b77f3bd42236834a68031b7086381fafd
|
||||||
F ext/jni/src/org/sqlite/jni/wrapper1/Sqlite.java 3914c4786adae73fd4533e9b3a3a882e9fc23f53e3810d2f2490cbf342d0508c
|
F ext/jni/src/org/sqlite/jni/wrapper1/Sqlite.java 75d4145e7843211f21815e43dfcecf862427558017e586ac3aad02e9bb8419d5
|
||||||
F ext/jni/src/org/sqlite/jni/wrapper1/SqliteException.java 982538ddb4c0719ef87dfa664cd137b09890b546029a7477810bd64d4c47ee35
|
F ext/jni/src/org/sqlite/jni/wrapper1/SqliteException.java 982538ddb4c0719ef87dfa664cd137b09890b546029a7477810bd64d4c47ee35
|
||||||
F ext/jni/src/org/sqlite/jni/wrapper1/Tester2.java a9235aa3695e5ad2fca47d43d35a77220b1244d77e43dab1fa3f56555bfc3733
|
F ext/jni/src/org/sqlite/jni/wrapper1/Tester2.java 65b0b2403ffa246e192053d68dad03c08b71d02ed519ab20d00349288f043ba8
|
||||||
F ext/jni/src/org/sqlite/jni/wrapper1/ValueHolder.java a84e90c43724a69c2ecebd601bc8e5139f869b7d08cb705c77ef757dacdd0593
|
F ext/jni/src/org/sqlite/jni/wrapper1/ValueHolder.java a84e90c43724a69c2ecebd601bc8e5139f869b7d08cb705c77ef757dacdd0593
|
||||||
F ext/jni/src/org/sqlite/jni/wrapper1/WindowFunction.java c7d1452f9ff26175b3c19bbf273116cc2846610af68e01756d755f037fe7319f
|
F ext/jni/src/org/sqlite/jni/wrapper1/WindowFunction.java c7d1452f9ff26175b3c19bbf273116cc2846610af68e01756d755f037fe7319f
|
||||||
F ext/jni/src/tests/000-000-sanity.test c3427a0e0ac84d7cbe4c95fdc1cd4b61f9ddcf43443408f3000139478c4dc745
|
F ext/jni/src/tests/000-000-sanity.test c3427a0e0ac84d7cbe4c95fdc1cd4b61f9ddcf43443408f3000139478c4dc745
|
||||||
@ -2139,8 +2139,8 @@ F vsixtest/vsixtest.tcl 6a9a6ab600c25a91a7acc6293828957a386a8a93
|
|||||||
F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc
|
F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc
|
||||||
F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e
|
F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e
|
||||||
F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0
|
F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0
|
||||||
P 26dcaa34e3521783bde687749d590eca54cecb4bb95ef332a4a6473c4141d052
|
P 24f20663b1c4e13ff7d9a89e1df6af2e6f5730e5042ae6479e0a8c1bb846f313
|
||||||
R 1457080e864b1bcae8f96b78786cdb55
|
R 5e5e2777e702141d6b5a89b8a84ebc98
|
||||||
U stephan
|
U stephan
|
||||||
Z a407c77d672c175e671589a08a8a1a46
|
Z 596e886ed57615c1aee46aef2bbca180
|
||||||
# Remove this line to create a well-formed Fossil manifest.
|
# Remove this line to create a well-formed Fossil manifest.
|
||||||
|
@ -1 +1 @@
|
|||||||
24f20663b1c4e13ff7d9a89e1df6af2e6f5730e5042ae6479e0a8c1bb846f313
|
83c49b9e71e5ae8852bab60a6fa630e22164c8efbf074c85450136781d0fffd3
|
Loading…
Reference in New Issue
Block a user