mirror of
https://github.com/sqlite/sqlite.git
synced 2025-07-30 19:03:16 +03:00
Replace all of the JNI XyzHook/Handler classes with snake_cased ones which follow unified naming conventions to make them easier to apply.
FossilOrigin-Name: 76e62a381249b3b4262b22bdffe7fc2816c820115c9df266956ab8817b127aca
This commit is contained in:
@ -59,29 +59,33 @@ $(bin.version-info): $(dir.tool)/version-info.c $(sqlite3.h) $(dir.top)/Makefile
|
|||||||
# Be explicit about which Java files to compile so that we can work on
|
# Be explicit about which Java files to compile so that we can work on
|
||||||
# in-progress files without requiring them to be in a compilable statae.
|
# in-progress files without requiring them to be in a compilable statae.
|
||||||
JAVA_FILES.main := $(patsubst %,$(dir.src.jni)/%,\
|
JAVA_FILES.main := $(patsubst %,$(dir.src.jni)/%,\
|
||||||
BusyHandler.java \
|
authorizer_callback.java \
|
||||||
Collation.java \
|
auto_extension_callback.java \
|
||||||
CollationNeeded.java \
|
busy_handler_callback.java \
|
||||||
CommitHook.java \
|
collation_callback.java \
|
||||||
|
collation_needed_callback.java \
|
||||||
|
commit_hook_callback.java \
|
||||||
|
config_sqllog_callback.java \
|
||||||
|
preupdate_hook_callback.java \
|
||||||
|
progress_handler_callback.java \
|
||||||
|
rollback_hook_callback.java \
|
||||||
|
trace_v2_callback.java \
|
||||||
|
update_hook_callback.java \
|
||||||
NativePointerHolder.java \
|
NativePointerHolder.java \
|
||||||
NotNull.java \
|
NotNull.java \
|
||||||
Nullable.java \
|
Nullable.java \
|
||||||
OutputPointer.java \
|
OutputPointer.java \
|
||||||
package-info.java \
|
|
||||||
ProgressHandler.java \
|
|
||||||
ResultCode.java \
|
ResultCode.java \
|
||||||
RollbackHook.java \
|
|
||||||
SQLFunction.java \
|
SQLFunction.java \
|
||||||
SQLLog.java \
|
|
||||||
sqlite3_context.java \
|
|
||||||
sqlite3.java \
|
|
||||||
SQLite3Jni.java \
|
SQLite3Jni.java \
|
||||||
|
Tester1.java \
|
||||||
|
ValueHolder.java \
|
||||||
|
package-info.java \
|
||||||
|
sqlite3.java \
|
||||||
|
sqlite3_context.java \
|
||||||
sqlite3_stmt.java \
|
sqlite3_stmt.java \
|
||||||
sqlite3_value.java \
|
sqlite3_value.java \
|
||||||
Tester1.java \
|
sqlite3_xDestroy_callback.java \
|
||||||
Tracer.java \
|
|
||||||
UpdateHook.java \
|
|
||||||
ValueHolder.java \
|
|
||||||
)
|
)
|
||||||
ifeq (1,$(enable.fts5))
|
ifeq (1,$(enable.fts5))
|
||||||
JAVA_FILES.main += $(patsubst %,$(dir.src.jni)/%,\
|
JAVA_FILES.main += $(patsubst %,$(dir.src.jni)/%,\
|
||||||
|
@ -184,17 +184,6 @@ necessarily suppress any exceptions in order to maintain the C-style
|
|||||||
semantics of the APIs.
|
semantics of the APIs.
|
||||||
|
|
||||||
|
|
||||||
Awkward Callback Names
|
|
||||||
------------------------------------------------------------------------
|
|
||||||
|
|
||||||
In places where the Java interface uses callbacks (see below), those
|
|
||||||
callbacks often have what might fairly be labeled as awkward names,
|
|
||||||
e.g. `sqlScalarFunction.xFunc()` and `preupdateHook.xPreUpdate()`.
|
|
||||||
Those names were chosen because they match the corresponding arguments
|
|
||||||
in the C-level API docs. If they were renamed to be more Java-esque,
|
|
||||||
documentation transparency would suffer.
|
|
||||||
|
|
||||||
|
|
||||||
Unwieldy Constructs are Re-mapped
|
Unwieldy Constructs are Re-mapped
|
||||||
------------------------------------------------------------------------
|
------------------------------------------------------------------------
|
||||||
|
|
||||||
@ -246,18 +235,18 @@ follow that pattern use a slightly different Java interface:
|
|||||||
|
|
||||||
```java
|
```java
|
||||||
int sqlite3_create_collation(sqlite3 db, String name, int eTextRep,
|
int sqlite3_create_collation(sqlite3 db, String name, int eTextRep,
|
||||||
Collation collation);
|
SomeCallbackType collation);
|
||||||
```
|
```
|
||||||
|
|
||||||
Where the `Collation` class has an abstract `xCompare()` method and
|
Where the `Collation` class has an abstract `call()` method and
|
||||||
no-op `xDestroy()` method which can be overridden if needed, leading to
|
no-op `xDestroy()` method which can be overridden if needed, leading to
|
||||||
a much more Java-esque usage:
|
a much more Java-esque usage:
|
||||||
|
|
||||||
```java
|
```java
|
||||||
int rc = sqlite3_create_collation(db, "mycollation", SQLITE_UTF8, new Collation(){
|
int rc = sqlite3_create_collation(db, "mycollation", SQLITE_UTF8, new SomeCallbackType(){
|
||||||
|
|
||||||
// Required comparison function:
|
// Required comparison function:
|
||||||
@Override public int xCompare(byte[] lhs, byte[] rhs){ ... }
|
@Override public int call(byte[] lhs, byte[] rhs){ ... }
|
||||||
|
|
||||||
// Optional finalizer function:
|
// Optional finalizer function:
|
||||||
@Override public void xDestroy(){ ... }
|
@Override public void xDestroy(){ ... }
|
||||||
|
@ -519,7 +519,7 @@ struct S3JniGlobalType {
|
|||||||
} metrics;
|
} metrics;
|
||||||
/**
|
/**
|
||||||
The list of bound auto-extensions (Java-side:
|
The list of bound auto-extensions (Java-side:
|
||||||
org.sqlite.jni.AutoExtension objects).
|
org.sqlite.jni.auto_extension objects).
|
||||||
*/
|
*/
|
||||||
struct {
|
struct {
|
||||||
S3JniAutoExtension *pExt /* Head of the auto-extension list */;
|
S3JniAutoExtension *pExt /* Head of the auto-extension list */;
|
||||||
@ -925,7 +925,7 @@ static void S3JniDb_set_aside_unlocked(JNIEnv * env, S3JniDb * const s){
|
|||||||
UNHOOK(preUpdate, 0);
|
UNHOOK(preUpdate, 0);
|
||||||
#endif
|
#endif
|
||||||
UNHOOK(collation, 1);
|
UNHOOK(collation, 1);
|
||||||
UNHOOK(collationNeeded, 1);
|
UNHOOK(collationNeeded, 0);
|
||||||
UNHOOK(busyHandler, 1);
|
UNHOOK(busyHandler, 1);
|
||||||
#undef UNHOOK
|
#undef UNHOOK
|
||||||
UNREF_G(s->jDb);
|
UNREF_G(s->jDb);
|
||||||
@ -1158,12 +1158,12 @@ static int S3JniAutoExtension_init(JNIEnv *const env,
|
|||||||
jobject const jAutoExt){
|
jobject const jAutoExt){
|
||||||
jclass const klazz = (*env)->GetObjectClass(env, jAutoExt);
|
jclass const klazz = (*env)->GetObjectClass(env, jAutoExt);
|
||||||
|
|
||||||
ax->midFunc = (*env)->GetMethodID(env, klazz, "xEntryPoint",
|
ax->midFunc = (*env)->GetMethodID(env, klazz, "call",
|
||||||
"(Lorg/sqlite/jni/sqlite3;)I");
|
"(Lorg/sqlite/jni/sqlite3;)I");
|
||||||
UNREF_L(klazz);
|
UNREF_L(klazz);
|
||||||
S3JniExceptionWarnIgnore;
|
S3JniExceptionWarnIgnore;
|
||||||
if( !ax->midFunc ){
|
if( !ax->midFunc ){
|
||||||
MARKER(("Error getting xEntryPoint(sqlite3) from AutoExtension object."));
|
MARKER(("Error getting call(sqlite3) from AutoExtension object.\n"));
|
||||||
S3JniAutoExtension_clear(env, ax);
|
S3JniAutoExtension_clear(env, ax);
|
||||||
return SQLITE_ERROR;
|
return SQLITE_ERROR;
|
||||||
}
|
}
|
||||||
@ -2025,7 +2025,7 @@ S3JniApi(sqlite3_busy_handler(),jint,1busy_1handler)(
|
|||||||
S3JniHook_unref(env, pHook, 1);
|
S3JniHook_unref(env, pHook, 1);
|
||||||
pHook->jObj = REF_G(jBusy);
|
pHook->jObj = REF_G(jBusy);
|
||||||
klazz = (*env)->GetObjectClass(env, jBusy);
|
klazz = (*env)->GetObjectClass(env, jBusy);
|
||||||
pHook->midCallback = (*env)->GetMethodID(env, klazz, "xCallback", "(I)I");
|
pHook->midCallback = (*env)->GetMethodID(env, klazz, "call", "(I)I");
|
||||||
UNREF_L(klazz);
|
UNREF_L(klazz);
|
||||||
S3JniIfThrew {
|
S3JniIfThrew {
|
||||||
S3JniHook_unref(env, pHook, 0);
|
S3JniHook_unref(env, pHook, 0);
|
||||||
@ -2164,7 +2164,7 @@ S3JniApi(sqlite3_collation_needed(),jint,1collation_1needed)(
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
klazz = (*env)->GetObjectClass(env, jHook);
|
klazz = (*env)->GetObjectClass(env, jHook);
|
||||||
xCallback = (*env)->GetMethodID(env, klazz, "xCollationNeeded",
|
xCallback = (*env)->GetMethodID(env, klazz, "call",
|
||||||
"(Lorg/sqlite/jni/sqlite3;ILjava/lang/String;)I");
|
"(Lorg/sqlite/jni/sqlite3;ILjava/lang/String;)I");
|
||||||
UNREF_L(klazz);
|
UNREF_L(klazz);
|
||||||
S3JniIfThrew {
|
S3JniIfThrew {
|
||||||
@ -2289,8 +2289,7 @@ static jobject s3jni_commit_rollback_hook(int isCommit, JNIEnv * const env,
|
|||||||
return pOld;
|
return pOld;
|
||||||
}
|
}
|
||||||
klazz = (*env)->GetObjectClass(env, jHook);
|
klazz = (*env)->GetObjectClass(env, jHook);
|
||||||
xCallback = (*env)->GetMethodID(env, klazz,
|
xCallback = (*env)->GetMethodID(env, klazz, "call",
|
||||||
isCommit ? "xCommitHook" : "xRollbackHook",
|
|
||||||
isCommit ? "()I" : "()V");
|
isCommit ? "()I" : "()V");
|
||||||
UNREF_L(klazz);
|
UNREF_L(klazz);
|
||||||
S3JniIfThrew {
|
S3JniIfThrew {
|
||||||
@ -2400,7 +2399,7 @@ S3JniApi(sqlite3_config(/* for SQLLOG */),
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
klazz = (*env)->GetObjectClass(env, jLog);
|
klazz = (*env)->GetObjectClass(env, jLog);
|
||||||
hook->midCallback = (*env)->GetMethodID(env, klazz, "xSqllog",
|
hook->midCallback = (*env)->GetMethodID(env, klazz, "call",
|
||||||
"(Lorg/sqlite/jni/sqlite3;"
|
"(Lorg/sqlite/jni/sqlite3;"
|
||||||
"Ljava/lang/String;"
|
"Ljava/lang/String;"
|
||||||
"I)V");
|
"I)V");
|
||||||
@ -2444,7 +2443,7 @@ S3JniApi(sqlite3_create_collation() sqlite3_create_collation_v2(),
|
|||||||
|
|
||||||
if( !pHook ) return SQLITE_MISUSE;
|
if( !pHook ) return SQLITE_MISUSE;
|
||||||
klazz = (*env)->GetObjectClass(env, oCollation);
|
klazz = (*env)->GetObjectClass(env, oCollation);
|
||||||
pHook->midCallback = (*env)->GetMethodID(env, klazz, "xCompare",
|
pHook->midCallback = (*env)->GetMethodID(env, klazz, "call",
|
||||||
"([B[B)I");
|
"([B[B)I");
|
||||||
UNREF_L(klazz);
|
UNREF_L(klazz);
|
||||||
S3JniIfThrew{
|
S3JniIfThrew{
|
||||||
@ -3055,13 +3054,13 @@ static jobject s3jni_updatepre_hook(JNIEnv * env, int isPre, jobject jDb, jobjec
|
|||||||
}
|
}
|
||||||
klazz = (*env)->GetObjectClass(env, jHook);
|
klazz = (*env)->GetObjectClass(env, jHook);
|
||||||
xCallback = isPre
|
xCallback = isPre
|
||||||
? (*env)->GetMethodID(env, klazz, "xPreUpdate",
|
? (*env)->GetMethodID(env, klazz, "call",
|
||||||
"(Lorg/sqlite/jni/sqlite3;"
|
"(Lorg/sqlite/jni/sqlite3;"
|
||||||
"I"
|
"I"
|
||||||
"Ljava/lang/String;"
|
"Ljava/lang/String;"
|
||||||
"Ljava/lang/String;"
|
"Ljava/lang/String;"
|
||||||
"JJ)V")
|
"JJ)V")
|
||||||
: (*env)->GetMethodID(env, klazz, "xUpdateHook",
|
: (*env)->GetMethodID(env, klazz, "call",
|
||||||
"(ILjava/lang/String;Ljava/lang/String;J)V");
|
"(ILjava/lang/String;Ljava/lang/String;J)V");
|
||||||
UNREF_L(klazz);
|
UNREF_L(klazz);
|
||||||
S3JniIfThrew {
|
S3JniIfThrew {
|
||||||
@ -3167,7 +3166,7 @@ S3JniApi(sqlite3_progress_handler(),void,1progress_1handler)(
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
klazz = (*env)->GetObjectClass(env, jProgress);
|
klazz = (*env)->GetObjectClass(env, jProgress);
|
||||||
xCallback = (*env)->GetMethodID(env, klazz, "xCallback", "()I");
|
xCallback = (*env)->GetMethodID(env, klazz, "call", "()I");
|
||||||
UNREF_L(klazz);
|
UNREF_L(klazz);
|
||||||
S3JniIfThrew {
|
S3JniIfThrew {
|
||||||
S3JniExceptionClear;
|
S3JniExceptionClear;
|
||||||
@ -3476,7 +3475,7 @@ S3JniApi(sqlite3_set_authorizer(),jint,1set_1authorizer)(
|
|||||||
pHook->jObj = REF_G(jHook);
|
pHook->jObj = REF_G(jHook);
|
||||||
klazz = (*env)->GetObjectClass(env, jHook);
|
klazz = (*env)->GetObjectClass(env, jHook);
|
||||||
pHook->midCallback = (*env)->GetMethodID(env, klazz,
|
pHook->midCallback = (*env)->GetMethodID(env, klazz,
|
||||||
"xAuth",
|
"call",
|
||||||
"(I"
|
"(I"
|
||||||
"Ljava/lang/String;"
|
"Ljava/lang/String;"
|
||||||
"Ljava/lang/String;"
|
"Ljava/lang/String;"
|
||||||
@ -3667,25 +3666,26 @@ S3JniApi(sqlite3_trace_v2(),jint,1trace_1v2)(
|
|||||||
JniArgsEnvClass,jobject jDb, jint traceMask, jobject jTracer
|
JniArgsEnvClass,jobject jDb, jint traceMask, jobject jTracer
|
||||||
){
|
){
|
||||||
S3JniDb * const ps = S3JniDb_for_db(env, jDb, 0);
|
S3JniDb * const ps = S3JniDb_for_db(env, jDb, 0);
|
||||||
|
S3JniHook * const pHook = ps ? &ps->hooks.trace : 0;
|
||||||
jclass klazz;
|
jclass klazz;
|
||||||
|
|
||||||
if( !traceMask || !jTracer ){
|
if( !ps ) return SQLITE_MISUSE;
|
||||||
if( ps ){
|
else if( !traceMask || !jTracer ){
|
||||||
S3JniHook_unref(env, &ps->hooks.trace, 0);
|
S3JniHook_unref(env, pHook, 0);
|
||||||
}
|
|
||||||
return (jint)sqlite3_trace_v2(ps->pDb, 0, 0, 0);
|
return (jint)sqlite3_trace_v2(ps->pDb, 0, 0, 0);
|
||||||
}
|
}
|
||||||
if( !ps ) return SQLITE_NOMEM;
|
|
||||||
klazz = (*env)->GetObjectClass(env, jTracer);
|
klazz = (*env)->GetObjectClass(env, jTracer);
|
||||||
ps->hooks.trace.midCallback = (*env)->GetMethodID(env, klazz, "xCallback",
|
pHook->midCallback = (*env)->GetMethodID(
|
||||||
"(ILjava/lang/Object;Ljava/lang/Object;)I");
|
env, klazz, "call", "(ILjava/lang/Object;Ljava/lang/Object;)I"
|
||||||
|
);
|
||||||
UNREF_L(klazz);
|
UNREF_L(klazz);
|
||||||
S3JniIfThrew {
|
S3JniIfThrew {
|
||||||
S3JniExceptionClear;
|
S3JniExceptionClear;
|
||||||
|
S3JniHook_unref(env, pHook, 0);
|
||||||
return s3jni_db_error(ps->pDb, SQLITE_ERROR,
|
return s3jni_db_error(ps->pDb, SQLITE_ERROR,
|
||||||
"Cannot not find matching xCallback() on Tracer object.");
|
"Cannot not find matching xCallback() on Tracer object.");
|
||||||
}
|
}
|
||||||
ps->hooks.trace.jObj = REF_G(jTracer);
|
pHook->jObj = REF_G(jTracer);
|
||||||
return sqlite3_trace_v2(ps->pDb, (unsigned)traceMask, s3jni_trace_impl, ps);
|
return sqlite3_trace_v2(ps->pDb, (unsigned)traceMask, s3jni_trace_impl, ps);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -782,7 +782,7 @@ JNIEXPORT jlong JNICALL Java_org_sqlite_jni_SQLite3Jni_sqlite3_1aggregate_1conte
|
|||||||
/*
|
/*
|
||||||
* Class: org_sqlite_jni_SQLite3Jni
|
* Class: org_sqlite_jni_SQLite3Jni
|
||||||
* Method: sqlite3_auto_extension
|
* Method: sqlite3_auto_extension
|
||||||
* Signature: (Lorg/sqlite/jni/AutoExtension;)I
|
* Signature: (Lorg/sqlite/jni/auto_extension_callback;)I
|
||||||
*/
|
*/
|
||||||
JNIEXPORT jint JNICALL Java_org_sqlite_jni_SQLite3Jni_sqlite3_1auto_1extension
|
JNIEXPORT jint JNICALL Java_org_sqlite_jni_SQLite3Jni_sqlite3_1auto_1extension
|
||||||
(JNIEnv *, jclass, jobject);
|
(JNIEnv *, jclass, jobject);
|
||||||
@ -878,7 +878,7 @@ JNIEXPORT jint JNICALL Java_org_sqlite_jni_SQLite3Jni_sqlite3_1bind_1zeroblob64
|
|||||||
/*
|
/*
|
||||||
* Class: org_sqlite_jni_SQLite3Jni
|
* Class: org_sqlite_jni_SQLite3Jni
|
||||||
* Method: sqlite3_busy_handler
|
* Method: sqlite3_busy_handler
|
||||||
* Signature: (Lorg/sqlite/jni/sqlite3;Lorg/sqlite/jni/BusyHandler;)I
|
* Signature: (Lorg/sqlite/jni/sqlite3;Lorg/sqlite/jni/busy_handler_callback;)I
|
||||||
*/
|
*/
|
||||||
JNIEXPORT jint JNICALL Java_org_sqlite_jni_SQLite3Jni_sqlite3_1busy_1handler
|
JNIEXPORT jint JNICALL Java_org_sqlite_jni_SQLite3Jni_sqlite3_1busy_1handler
|
||||||
(JNIEnv *, jclass, jobject, jobject);
|
(JNIEnv *, jclass, jobject, jobject);
|
||||||
@ -894,7 +894,7 @@ JNIEXPORT jint JNICALL Java_org_sqlite_jni_SQLite3Jni_sqlite3_1busy_1timeout
|
|||||||
/*
|
/*
|
||||||
* Class: org_sqlite_jni_SQLite3Jni
|
* Class: org_sqlite_jni_SQLite3Jni
|
||||||
* Method: sqlite3_cancel_auto_extension
|
* Method: sqlite3_cancel_auto_extension
|
||||||
* Signature: (Lorg/sqlite/jni/AutoExtension;)Z
|
* Signature: (Lorg/sqlite/jni/auto_extension_callback;)Z
|
||||||
*/
|
*/
|
||||||
JNIEXPORT jboolean JNICALL Java_org_sqlite_jni_SQLite3Jni_sqlite3_1cancel_1auto_1extension
|
JNIEXPORT jboolean JNICALL Java_org_sqlite_jni_SQLite3Jni_sqlite3_1cancel_1auto_1extension
|
||||||
(JNIEnv *, jclass, jobject);
|
(JNIEnv *, jclass, jobject);
|
||||||
@ -1062,7 +1062,7 @@ JNIEXPORT jobject JNICALL Java_org_sqlite_jni_SQLite3Jni_sqlite3_1column_1value
|
|||||||
/*
|
/*
|
||||||
* Class: org_sqlite_jni_SQLite3Jni
|
* Class: org_sqlite_jni_SQLite3Jni
|
||||||
* Method: sqlite3_collation_needed
|
* Method: sqlite3_collation_needed
|
||||||
* Signature: (Lorg/sqlite/jni/sqlite3;Lorg/sqlite/jni/CollationNeeded;)I
|
* Signature: (Lorg/sqlite/jni/sqlite3;Lorg/sqlite/jni/collation_needed_callback;)I
|
||||||
*/
|
*/
|
||||||
JNIEXPORT jint JNICALL Java_org_sqlite_jni_SQLite3Jni_sqlite3_1collation_1needed
|
JNIEXPORT jint JNICALL Java_org_sqlite_jni_SQLite3Jni_sqlite3_1collation_1needed
|
||||||
(JNIEnv *, jclass, jobject, jobject);
|
(JNIEnv *, jclass, jobject, jobject);
|
||||||
@ -1078,7 +1078,7 @@ JNIEXPORT jobject JNICALL Java_org_sqlite_jni_SQLite3Jni_sqlite3_1context_1db_1h
|
|||||||
/*
|
/*
|
||||||
* Class: org_sqlite_jni_SQLite3Jni
|
* Class: org_sqlite_jni_SQLite3Jni
|
||||||
* Method: sqlite3_commit_hook
|
* Method: sqlite3_commit_hook
|
||||||
* Signature: (Lorg/sqlite/jni/sqlite3;Lorg/sqlite/jni/CommitHook;)Lorg/sqlite/jni/CommitHook;
|
* Signature: (Lorg/sqlite/jni/sqlite3;Lorg/sqlite/jni/commit_hook_callback;)Lorg/sqlite/jni/commit_hook_callback;
|
||||||
*/
|
*/
|
||||||
JNIEXPORT jobject JNICALL Java_org_sqlite_jni_SQLite3Jni_sqlite3_1commit_1hook
|
JNIEXPORT jobject JNICALL Java_org_sqlite_jni_SQLite3Jni_sqlite3_1commit_1hook
|
||||||
(JNIEnv *, jclass, jobject, jobject);
|
(JNIEnv *, jclass, jobject, jobject);
|
||||||
@ -1110,15 +1110,15 @@ JNIEXPORT jint JNICALL Java_org_sqlite_jni_SQLite3Jni_sqlite3_1config__I
|
|||||||
/*
|
/*
|
||||||
* Class: org_sqlite_jni_SQLite3Jni
|
* Class: org_sqlite_jni_SQLite3Jni
|
||||||
* Method: sqlite3_config
|
* Method: sqlite3_config
|
||||||
* Signature: (Lorg/sqlite/jni/SQLLog;)I
|
* Signature: (Lorg/sqlite/jni/config_sqllog_callback;)I
|
||||||
*/
|
*/
|
||||||
JNIEXPORT jint JNICALL Java_org_sqlite_jni_SQLite3Jni_sqlite3_1config__Lorg_sqlite_jni_SQLLog_2
|
JNIEXPORT jint JNICALL Java_org_sqlite_jni_SQLite3Jni_sqlite3_1config__Lorg_sqlite_jni_config_1sqllog_1callback_2
|
||||||
(JNIEnv *, jclass, jobject);
|
(JNIEnv *, jclass, jobject);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Class: org_sqlite_jni_SQLite3Jni
|
* Class: org_sqlite_jni_SQLite3Jni
|
||||||
* Method: sqlite3_create_collation
|
* Method: sqlite3_create_collation
|
||||||
* Signature: (Lorg/sqlite/jni/sqlite3;Ljava/lang/String;ILorg/sqlite/jni/Collation;)I
|
* Signature: (Lorg/sqlite/jni/sqlite3;Ljava/lang/String;ILorg/sqlite/jni/collation_callback;)I
|
||||||
*/
|
*/
|
||||||
JNIEXPORT jint JNICALL Java_org_sqlite_jni_SQLite3Jni_sqlite3_1create_1collation
|
JNIEXPORT jint JNICALL Java_org_sqlite_jni_SQLite3Jni_sqlite3_1create_1collation
|
||||||
(JNIEnv *, jclass, jobject, jstring, jint, jobject);
|
(JNIEnv *, jclass, jobject, jstring, jint, jobject);
|
||||||
@ -1350,7 +1350,7 @@ JNIEXPORT jint JNICALL Java_org_sqlite_jni_SQLite3Jni_sqlite3_1preupdate_1depth
|
|||||||
/*
|
/*
|
||||||
* Class: org_sqlite_jni_SQLite3Jni
|
* Class: org_sqlite_jni_SQLite3Jni
|
||||||
* Method: sqlite3_preupdate_hook
|
* Method: sqlite3_preupdate_hook
|
||||||
* Signature: (Lorg/sqlite/jni/sqlite3;Lorg/sqlite/jni/PreUpdateHook;)Lorg/sqlite/jni/PreUpdateHook;
|
* Signature: (Lorg/sqlite/jni/sqlite3;Lorg/sqlite/jni/preupdate_hook_callback;)Lorg/sqlite/jni/preupdate_hook_callback;
|
||||||
*/
|
*/
|
||||||
JNIEXPORT jobject JNICALL Java_org_sqlite_jni_SQLite3Jni_sqlite3_1preupdate_1hook
|
JNIEXPORT jobject JNICALL Java_org_sqlite_jni_SQLite3Jni_sqlite3_1preupdate_1hook
|
||||||
(JNIEnv *, jclass, jobject, jobject);
|
(JNIEnv *, jclass, jobject, jobject);
|
||||||
@ -1374,7 +1374,7 @@ JNIEXPORT jint JNICALL Java_org_sqlite_jni_SQLite3Jni_sqlite3_1preupdate_1old
|
|||||||
/*
|
/*
|
||||||
* Class: org_sqlite_jni_SQLite3Jni
|
* Class: org_sqlite_jni_SQLite3Jni
|
||||||
* Method: sqlite3_progress_handler
|
* Method: sqlite3_progress_handler
|
||||||
* Signature: (Lorg/sqlite/jni/sqlite3;ILorg/sqlite/jni/ProgressHandler;)V
|
* Signature: (Lorg/sqlite/jni/sqlite3;ILorg/sqlite/jni/progress_handler_callback;)V
|
||||||
*/
|
*/
|
||||||
JNIEXPORT void JNICALL Java_org_sqlite_jni_SQLite3Jni_sqlite3_1progress_1handler
|
JNIEXPORT void JNICALL Java_org_sqlite_jni_SQLite3Jni_sqlite3_1progress_1handler
|
||||||
(JNIEnv *, jclass, jobject, jint, jobject);
|
(JNIEnv *, jclass, jobject, jint, jobject);
|
||||||
@ -1550,7 +1550,7 @@ JNIEXPORT jint JNICALL Java_org_sqlite_jni_SQLite3Jni_sqlite3_1status64
|
|||||||
/*
|
/*
|
||||||
* Class: org_sqlite_jni_SQLite3Jni
|
* Class: org_sqlite_jni_SQLite3Jni
|
||||||
* Method: sqlite3_rollback_hook
|
* Method: sqlite3_rollback_hook
|
||||||
* Signature: (Lorg/sqlite/jni/sqlite3;Lorg/sqlite/jni/RollbackHook;)Lorg/sqlite/jni/RollbackHook;
|
* Signature: (Lorg/sqlite/jni/sqlite3;Lorg/sqlite/jni/rollback_hook_callback;)Lorg/sqlite/jni/rollback_hook_callback;
|
||||||
*/
|
*/
|
||||||
JNIEXPORT jobject JNICALL Java_org_sqlite_jni_SQLite3Jni_sqlite3_1rollback_1hook
|
JNIEXPORT jobject JNICALL Java_org_sqlite_jni_SQLite3Jni_sqlite3_1rollback_1hook
|
||||||
(JNIEnv *, jclass, jobject, jobject);
|
(JNIEnv *, jclass, jobject, jobject);
|
||||||
@ -1558,7 +1558,7 @@ JNIEXPORT jobject JNICALL Java_org_sqlite_jni_SQLite3Jni_sqlite3_1rollback_1hook
|
|||||||
/*
|
/*
|
||||||
* Class: org_sqlite_jni_SQLite3Jni
|
* Class: org_sqlite_jni_SQLite3Jni
|
||||||
* Method: sqlite3_set_authorizer
|
* Method: sqlite3_set_authorizer
|
||||||
* Signature: (Lorg/sqlite/jni/sqlite3;Lorg/sqlite/jni/Authorizer;)I
|
* Signature: (Lorg/sqlite/jni/sqlite3;Lorg/sqlite/jni/authorizer_callback;)I
|
||||||
*/
|
*/
|
||||||
JNIEXPORT jint JNICALL Java_org_sqlite_jni_SQLite3Jni_sqlite3_1set_1authorizer
|
JNIEXPORT jint JNICALL Java_org_sqlite_jni_SQLite3Jni_sqlite3_1set_1authorizer
|
||||||
(JNIEnv *, jclass, jobject, jobject);
|
(JNIEnv *, jclass, jobject, jobject);
|
||||||
@ -1646,7 +1646,7 @@ JNIEXPORT jlong JNICALL Java_org_sqlite_jni_SQLite3Jni_sqlite3_1total_1changes64
|
|||||||
/*
|
/*
|
||||||
* Class: org_sqlite_jni_SQLite3Jni
|
* Class: org_sqlite_jni_SQLite3Jni
|
||||||
* Method: sqlite3_trace_v2
|
* Method: sqlite3_trace_v2
|
||||||
* Signature: (Lorg/sqlite/jni/sqlite3;ILorg/sqlite/jni/Tracer;)I
|
* Signature: (Lorg/sqlite/jni/sqlite3;ILorg/sqlite/jni/trace_v2_callback;)I
|
||||||
*/
|
*/
|
||||||
JNIEXPORT jint JNICALL Java_org_sqlite_jni_SQLite3Jni_sqlite3_1trace_1v2
|
JNIEXPORT jint JNICALL Java_org_sqlite_jni_SQLite3Jni_sqlite3_1trace_1v2
|
||||||
(JNIEnv *, jclass, jobject, jint, jobject);
|
(JNIEnv *, jclass, jobject, jint, jobject);
|
||||||
@ -1654,7 +1654,7 @@ JNIEXPORT jint JNICALL Java_org_sqlite_jni_SQLite3Jni_sqlite3_1trace_1v2
|
|||||||
/*
|
/*
|
||||||
* Class: org_sqlite_jni_SQLite3Jni
|
* Class: org_sqlite_jni_SQLite3Jni
|
||||||
* Method: sqlite3_update_hook
|
* Method: sqlite3_update_hook
|
||||||
* Signature: (Lorg/sqlite/jni/sqlite3;Lorg/sqlite/jni/UpdateHook;)Lorg/sqlite/jni/UpdateHook;
|
* Signature: (Lorg/sqlite/jni/sqlite3;Lorg/sqlite/jni/update_hook_callback;)Lorg/sqlite/jni/update_hook_callback;
|
||||||
*/
|
*/
|
||||||
JNIEXPORT jobject JNICALL Java_org_sqlite_jni_SQLite3Jni_sqlite3_1update_1hook
|
JNIEXPORT jobject JNICALL Java_org_sqlite_jni_SQLite3Jni_sqlite3_1update_1hook
|
||||||
(JNIEnv *, jclass, jobject, jobject);
|
(JNIEnv *, jclass, jobject, jobject);
|
||||||
|
@ -1,29 +0,0 @@
|
|||||||
/*
|
|
||||||
** 2023-08-23
|
|
||||||
**
|
|
||||||
** The author disclaims copyright to this source code. In place of
|
|
||||||
** a legal notice, here is a blessing:
|
|
||||||
**
|
|
||||||
** May you do good and not evil.
|
|
||||||
** May you find forgiveness for yourself and forgive others.
|
|
||||||
** May you share freely, never taking more than you give.
|
|
||||||
**
|
|
||||||
*************************************************************************
|
|
||||||
** This file is part of the JNI bindings for the sqlite3 C API.
|
|
||||||
*/
|
|
||||||
package org.sqlite.jni;
|
|
||||||
|
|
||||||
/**
|
|
||||||
A callback for use with sqlite3_preupdate_hook().
|
|
||||||
*/
|
|
||||||
public interface PreUpdateHook {
|
|
||||||
/**
|
|
||||||
Must function as described for the sqlite3_preupdate_hook().
|
|
||||||
callback, with the slight signature change.
|
|
||||||
|
|
||||||
Must not throw. Any exceptions may emit debugging messages and
|
|
||||||
will be suppressed.
|
|
||||||
*/
|
|
||||||
void xPreUpdate(sqlite3 db, int op, String dbName, String dbTable,
|
|
||||||
long iKey1, long iKey2 );
|
|
||||||
}
|
|
@ -20,8 +20,9 @@ import java.lang.annotation.Documented;
|
|||||||
import java.lang.annotation.ElementType;
|
import java.lang.annotation.ElementType;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
This class contains the entire sqlite3 JNI API binding. For
|
This class contains the entire C-style sqlite3 JNI API binding,
|
||||||
client-side use, a static import is recommended:
|
minus a few bits and pieces declared in other files. For client-side
|
||||||
|
use, a static import is recommended:
|
||||||
|
|
||||||
<pre>{@code
|
<pre>{@code
|
||||||
import static org.sqlite.jni.SQLite3Jni.*;
|
import static org.sqlite.jni.SQLite3Jni.*;
|
||||||
@ -36,8 +37,8 @@ import java.lang.annotation.ElementType;
|
|||||||
|
|
||||||
<p><a href="https://sqlite.org/c3ref/intro.html">https://sqlite.org/c3ref/intro.html</a>
|
<p><a href="https://sqlite.org/c3ref/intro.html">https://sqlite.org/c3ref/intro.html</a>
|
||||||
|
|
||||||
<p>A handful of Java-specific APIs have been added.
|
<p>A handful of Java-specific APIs have been added which are documented
|
||||||
|
here.
|
||||||
|
|
||||||
<p>Notes regarding Java's Modified UTF-8 vs standard UTF-8:
|
<p>Notes regarding Java's Modified UTF-8 vs standard UTF-8:
|
||||||
|
|
||||||
@ -147,7 +148,7 @@ public final class SQLite3Jni {
|
|||||||
|
|
||||||
<p>See the AutoExtension class docs for more information.
|
<p>See the AutoExtension class docs for more information.
|
||||||
*/
|
*/
|
||||||
public static native int sqlite3_auto_extension(@NotNull AutoExtension callback);
|
public static native int sqlite3_auto_extension(@NotNull auto_extension_callback callback);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Results are undefined if data is not null and n<0 || n>=data.length.
|
Results are undefined if data is not null and n<0 || n>=data.length.
|
||||||
@ -259,7 +260,7 @@ public final class SQLite3Jni {
|
|||||||
/**
|
/**
|
||||||
Requires that data be null or in UTF-16 encoding in platform byte
|
Requires that data be null or in UTF-16 encoding in platform byte
|
||||||
order. Returns the result of the C-level sqlite3_bind_null() or
|
order. Returns the result of the C-level sqlite3_bind_null() or
|
||||||
sqlite3_bind_text().
|
sqlite3_bind_text16().
|
||||||
*/
|
*/
|
||||||
public static int sqlite3_bind_text16(
|
public static int sqlite3_bind_text16(
|
||||||
@NotNull sqlite3_stmt stmt, int ndx, @Nullable byte[] data
|
@NotNull sqlite3_stmt stmt, int ndx, @Nullable byte[] data
|
||||||
@ -278,12 +279,12 @@ public final class SQLite3Jni {
|
|||||||
);
|
);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
As for the C-level function of the same name, with a BusyHandler
|
As for the C-level function of the same name, with a busy_handler_callback
|
||||||
instance in place of a callback function. Pass it a null handler
|
instance in place of a callback function. Pass it a null handler
|
||||||
to clear the busy handler.
|
to clear the busy handler.
|
||||||
*/
|
*/
|
||||||
public static native int sqlite3_busy_handler(
|
public static native int sqlite3_busy_handler(
|
||||||
@NotNull sqlite3 db, @Nullable BusyHandler handler
|
@NotNull sqlite3 db, @Nullable busy_handler_callback handler
|
||||||
);
|
);
|
||||||
|
|
||||||
public static native int sqlite3_busy_timeout(
|
public static native int sqlite3_busy_timeout(
|
||||||
@ -291,7 +292,7 @@ public final class SQLite3Jni {
|
|||||||
);
|
);
|
||||||
|
|
||||||
public static native boolean sqlite3_cancel_auto_extension(
|
public static native boolean sqlite3_cancel_auto_extension(
|
||||||
@NotNull AutoExtension ax
|
@NotNull auto_extension_callback ax
|
||||||
);
|
);
|
||||||
|
|
||||||
public static native int sqlite3_changes(
|
public static native int sqlite3_changes(
|
||||||
@ -457,7 +458,7 @@ public final class SQLite3Jni {
|
|||||||
Java's string type is compatible with that interface.
|
Java's string type is compatible with that interface.
|
||||||
*/
|
*/
|
||||||
public static native int sqlite3_collation_needed(
|
public static native int sqlite3_collation_needed(
|
||||||
@NotNull sqlite3 db, @Nullable CollationNeeded callback
|
@NotNull sqlite3 db, @Nullable collation_needed_callback callback
|
||||||
);
|
);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -468,8 +469,8 @@ public final class SQLite3Jni {
|
|||||||
@NotNull sqlite3_context cx
|
@NotNull sqlite3_context cx
|
||||||
);
|
);
|
||||||
|
|
||||||
public static native CommitHook sqlite3_commit_hook(
|
public static native commit_hook_callback sqlite3_commit_hook(
|
||||||
@NotNull sqlite3 db, @Nullable CommitHook hook
|
@NotNull sqlite3 db, @Nullable commit_hook_callback hook
|
||||||
);
|
);
|
||||||
|
|
||||||
public static native String sqlite3_compileoption_get(
|
public static native String sqlite3_compileoption_get(
|
||||||
@ -503,11 +504,11 @@ public final class SQLite3Jni {
|
|||||||
** If not built with SQLITE_ENABLE_SQLLOG defined, this returns
|
** If not built with SQLITE_ENABLE_SQLLOG defined, this returns
|
||||||
** SQLITE_MISUSE.
|
** SQLITE_MISUSE.
|
||||||
*/
|
*/
|
||||||
public static native int sqlite3_config( @Nullable SQLLog logger );
|
public static native int sqlite3_config( @Nullable config_sqllog_callback logger );
|
||||||
|
|
||||||
public static native int sqlite3_create_collation(
|
public static native int sqlite3_create_collation(
|
||||||
@NotNull sqlite3 db, @NotNull String name, int eTextRep,
|
@NotNull sqlite3 db, @NotNull String name, int eTextRep,
|
||||||
@NotNull Collation col
|
@NotNull collation_callback col
|
||||||
);
|
);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -826,8 +827,9 @@ public final class SQLite3Jni {
|
|||||||
acts as a proxy for C's sqlite3_preupdate_hook(), else it returns null
|
acts as a proxy for C's sqlite3_preupdate_hook(), else it returns null
|
||||||
with no side effects.
|
with no side effects.
|
||||||
*/
|
*/
|
||||||
public static native PreUpdateHook sqlite3_preupdate_hook(@NotNull sqlite3 db,
|
public static native preupdate_hook_callback sqlite3_preupdate_hook(
|
||||||
@Nullable PreUpdateHook hook);
|
@NotNull sqlite3 db, @Nullable preupdate_hook_callback hook
|
||||||
|
);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
If the C API was built with SQLITE_ENABLE_PREUPDATE_HOOK defined,
|
If the C API was built with SQLITE_ENABLE_PREUPDATE_HOOK defined,
|
||||||
@ -866,11 +868,9 @@ public final class SQLite3Jni {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static native void sqlite3_progress_handler(
|
public static native void sqlite3_progress_handler(
|
||||||
@NotNull sqlite3 db, int n, @Nullable ProgressHandler h
|
@NotNull sqlite3 db, int n, @Nullable progress_handler_callback h
|
||||||
);
|
);
|
||||||
|
|
||||||
//TODO??? void *sqlite3_preupdate_hook(...) and friends
|
|
||||||
|
|
||||||
public static native int sqlite3_reset(@NotNull sqlite3_stmt stmt);
|
public static native int sqlite3_reset(@NotNull sqlite3_stmt stmt);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -1156,13 +1156,13 @@ public final class SQLite3Jni {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static native RollbackHook sqlite3_rollback_hook(
|
public static native rollback_hook_callback sqlite3_rollback_hook(
|
||||||
@NotNull sqlite3 db, @Nullable RollbackHook hook
|
@NotNull sqlite3 db, @Nullable rollback_hook_callback hook
|
||||||
);
|
);
|
||||||
|
|
||||||
//! Sets or unsets (if auth is null) the current authorizer.
|
//! Sets or unsets (if auth is null) the current authorizer.
|
||||||
public static native int sqlite3_set_authorizer(
|
public static native int sqlite3_set_authorizer(
|
||||||
@NotNull sqlite3 db, @Nullable Authorizer auth
|
@NotNull sqlite3 db, @Nullable authorizer_callback auth
|
||||||
);
|
);
|
||||||
|
|
||||||
public static native void sqlite3_set_last_insert_rowid(
|
public static native void sqlite3_set_last_insert_rowid(
|
||||||
@ -1229,11 +1229,11 @@ public final class SQLite3Jni {
|
|||||||
cannot be processed propertly (i.e. an internal error).
|
cannot be processed propertly (i.e. an internal error).
|
||||||
*/
|
*/
|
||||||
public static native int sqlite3_trace_v2(
|
public static native int sqlite3_trace_v2(
|
||||||
@NotNull sqlite3 db, int traceMask, @Nullable Tracer tracer
|
@NotNull sqlite3 db, int traceMask, @Nullable trace_v2_callback tracer
|
||||||
);
|
);
|
||||||
|
|
||||||
public static native UpdateHook sqlite3_update_hook(
|
public static native update_hook_callback sqlite3_update_hook(
|
||||||
sqlite3 db, UpdateHook hook
|
sqlite3 db, update_hook_callback hook
|
||||||
);
|
);
|
||||||
|
|
||||||
public static native byte[] sqlite3_value_blob(@NotNull sqlite3_value v);
|
public static native byte[] sqlite3_value_blob(@NotNull sqlite3_value v);
|
||||||
|
@ -489,12 +489,12 @@ public class Tester1 implements Runnable {
|
|||||||
final sqlite3 db = createNewDb();
|
final sqlite3 db = createNewDb();
|
||||||
execSql(db, "CREATE TABLE t(a); INSERT INTO t(a) VALUES('a'),('b'),('c')");
|
execSql(db, "CREATE TABLE t(a); INSERT INTO t(a) VALUES('a'),('b'),('c')");
|
||||||
final ValueHolder<Boolean> xDestroyCalled = new ValueHolder<>(false);
|
final ValueHolder<Boolean> xDestroyCalled = new ValueHolder<>(false);
|
||||||
final Collation myCollation = new Collation() {
|
final collation_callback myCollation = new collation_callback() {
|
||||||
private String myState =
|
private String myState =
|
||||||
"this is local state. There is much like it, but this is mine.";
|
"this is local state. There is much like it, but this is mine.";
|
||||||
@Override
|
@Override
|
||||||
// Reverse-sorts its inputs...
|
// Reverse-sorts its inputs...
|
||||||
public int xCompare(byte[] lhs, byte[] rhs){
|
public int call(byte[] lhs, byte[] rhs){
|
||||||
int len = lhs.length > rhs.length ? rhs.length : lhs.length;
|
int len = lhs.length > rhs.length ? rhs.length : lhs.length;
|
||||||
int c = 0, i = 0;
|
int c = 0, i = 0;
|
||||||
for(i = 0; i < len; ++i){
|
for(i = 0; i < len; ++i){
|
||||||
@ -513,8 +513,9 @@ public class Tester1 implements Runnable {
|
|||||||
xDestroyCalled.value = true;
|
xDestroyCalled.value = true;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
final CollationNeeded collLoader = new CollationNeeded(){
|
final collation_needed_callback collLoader = new collation_needed_callback(){
|
||||||
public int xCollationNeeded(sqlite3 dbArg, int eTextRep, String collationName){
|
@Override
|
||||||
|
public int call(sqlite3 dbArg, int eTextRep, String collationName){
|
||||||
affirm(dbArg == db/* as opposed to a temporary object*/);
|
affirm(dbArg == db/* as opposed to a temporary object*/);
|
||||||
return sqlite3_create_collation(dbArg, "reversi", eTextRep, myCollation);
|
return sqlite3_create_collation(dbArg, "reversi", eTextRep, myCollation);
|
||||||
}
|
}
|
||||||
@ -877,11 +878,11 @@ public class Tester1 implements Runnable {
|
|||||||
from Java to sqlite3 and back to Java. (At no small efficiency
|
from Java to sqlite3 and back to Java. (At no small efficiency
|
||||||
penalty.) */
|
penalty.) */
|
||||||
final String nonBmpChar = "😃";
|
final String nonBmpChar = "😃";
|
||||||
sqlite3_trace_v2(
|
int rc = sqlite3_trace_v2(
|
||||||
db, SQLITE_TRACE_STMT | SQLITE_TRACE_PROFILE
|
db, SQLITE_TRACE_STMT | SQLITE_TRACE_PROFILE
|
||||||
| SQLITE_TRACE_ROW | SQLITE_TRACE_CLOSE,
|
| SQLITE_TRACE_ROW | SQLITE_TRACE_CLOSE,
|
||||||
new Tracer(){
|
new trace_v2_callback(){
|
||||||
public int xCallback(int traceFlag, Object pNative, Object x){
|
@Override public int call(int traceFlag, Object pNative, Object x){
|
||||||
++counter.value;
|
++counter.value;
|
||||||
//outln("TRACE "+traceFlag+" pNative = "+pNative.getClass().getName());
|
//outln("TRACE "+traceFlag+" pNative = "+pNative.getClass().getName());
|
||||||
switch(traceFlag){
|
switch(traceFlag){
|
||||||
@ -912,6 +913,7 @@ public class Tester1 implements Runnable {
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
affirm( 0==rc );
|
||||||
execSql(db, "SELECT coalesce(null,null,'"+nonBmpChar+"'); "+
|
execSql(db, "SELECT coalesce(null,null,'"+nonBmpChar+"'); "+
|
||||||
"SELECT 'w"+nonBmpChar+"orld'");
|
"SELECT 'w"+nonBmpChar+"orld'");
|
||||||
affirm( 6 == counter.value );
|
affirm( 6 == counter.value );
|
||||||
@ -940,8 +942,8 @@ public class Tester1 implements Runnable {
|
|||||||
|
|
||||||
final ValueHolder<Boolean> xDestroyed = new ValueHolder<>(false);
|
final ValueHolder<Boolean> xDestroyed = new ValueHolder<>(false);
|
||||||
final ValueHolder<Integer> xBusyCalled = new ValueHolder<>(0);
|
final ValueHolder<Integer> xBusyCalled = new ValueHolder<>(0);
|
||||||
BusyHandler handler = new BusyHandler(){
|
busy_handler_callback handler = new busy_handler_callback(){
|
||||||
@Override public int xCallback(int n){
|
@Override public int call(int n){
|
||||||
//outln("busy handler #"+n);
|
//outln("busy handler #"+n);
|
||||||
return n > 2 ? 0 : ++xBusyCalled.value;
|
return n > 2 ? 0 : ++xBusyCalled.value;
|
||||||
}
|
}
|
||||||
@ -974,8 +976,8 @@ public class Tester1 implements Runnable {
|
|||||||
private void testProgress(){
|
private void testProgress(){
|
||||||
final sqlite3 db = createNewDb();
|
final sqlite3 db = createNewDb();
|
||||||
final ValueHolder<Integer> counter = new ValueHolder<>(0);
|
final ValueHolder<Integer> counter = new ValueHolder<>(0);
|
||||||
sqlite3_progress_handler(db, 1, new ProgressHandler(){
|
sqlite3_progress_handler(db, 1, new progress_handler_callback(){
|
||||||
public int xCallback(){
|
@Override public int call(){
|
||||||
++counter.value;
|
++counter.value;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -993,13 +995,13 @@ public class Tester1 implements Runnable {
|
|||||||
final sqlite3 db = createNewDb();
|
final sqlite3 db = createNewDb();
|
||||||
final ValueHolder<Integer> counter = new ValueHolder<>(0);
|
final ValueHolder<Integer> counter = new ValueHolder<>(0);
|
||||||
final ValueHolder<Integer> hookResult = new ValueHolder<>(0);
|
final ValueHolder<Integer> hookResult = new ValueHolder<>(0);
|
||||||
final CommitHook theHook = new CommitHook(){
|
final commit_hook_callback theHook = new commit_hook_callback(){
|
||||||
public int xCommitHook(){
|
@Override public int call(){
|
||||||
++counter.value;
|
++counter.value;
|
||||||
return hookResult.value;
|
return hookResult.value;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
CommitHook oldHook = sqlite3_commit_hook(db, theHook);
|
commit_hook_callback oldHook = sqlite3_commit_hook(db, theHook);
|
||||||
affirm( null == oldHook );
|
affirm( null == oldHook );
|
||||||
execSql(db, "CREATE TABLE t(a); INSERT INTO t(a) VALUES('a'),('b'),('c')");
|
execSql(db, "CREATE TABLE t(a); INSERT INTO t(a) VALUES('a'),('b'),('c')");
|
||||||
affirm( 2 == counter.value );
|
affirm( 2 == counter.value );
|
||||||
@ -1020,8 +1022,8 @@ public class Tester1 implements Runnable {
|
|||||||
execSql(db, "BEGIN; update t set a='g' where a='f'; COMMIT;");
|
execSql(db, "BEGIN; update t set a='g' where a='f'; COMMIT;");
|
||||||
affirm( 4 == counter.value );
|
affirm( 4 == counter.value );
|
||||||
|
|
||||||
final CommitHook newHook = new CommitHook(){
|
final commit_hook_callback newHook = new commit_hook_callback(){
|
||||||
public int xCommitHook(){return 0;}
|
@Override public int call(){return 0;}
|
||||||
};
|
};
|
||||||
oldHook = sqlite3_commit_hook(db, newHook);
|
oldHook = sqlite3_commit_hook(db, newHook);
|
||||||
affirm( null == oldHook );
|
affirm( null == oldHook );
|
||||||
@ -1042,17 +1044,16 @@ public class Tester1 implements Runnable {
|
|||||||
final sqlite3 db = createNewDb();
|
final sqlite3 db = createNewDb();
|
||||||
final ValueHolder<Integer> counter = new ValueHolder<>(0);
|
final ValueHolder<Integer> counter = new ValueHolder<>(0);
|
||||||
final ValueHolder<Integer> expectedOp = new ValueHolder<>(0);
|
final ValueHolder<Integer> expectedOp = new ValueHolder<>(0);
|
||||||
final UpdateHook theHook = new UpdateHook(){
|
final update_hook_callback theHook = new update_hook_callback(){
|
||||||
@SuppressWarnings("unchecked")
|
|
||||||
@Override
|
@Override
|
||||||
public void xUpdateHook(int opId, String dbName, String tableName, long rowId){
|
public void call(int opId, String dbName, String tableName, long rowId){
|
||||||
++counter.value;
|
++counter.value;
|
||||||
if( 0!=expectedOp.value ){
|
if( 0!=expectedOp.value ){
|
||||||
affirm( expectedOp.value == opId );
|
affirm( expectedOp.value == opId );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
UpdateHook oldHook = sqlite3_update_hook(db, theHook);
|
update_hook_callback oldHook = sqlite3_update_hook(db, theHook);
|
||||||
affirm( null == oldHook );
|
affirm( null == oldHook );
|
||||||
expectedOp.value = SQLITE_INSERT;
|
expectedOp.value = SQLITE_INSERT;
|
||||||
execSql(db, "CREATE TABLE t(a); INSERT INTO t(a) VALUES('a'),('b'),('c')");
|
execSql(db, "CREATE TABLE t(a); INSERT INTO t(a) VALUES('a'),('b'),('c')");
|
||||||
@ -1072,8 +1073,8 @@ public class Tester1 implements Runnable {
|
|||||||
oldHook = sqlite3_update_hook(db, null);
|
oldHook = sqlite3_update_hook(db, null);
|
||||||
affirm( null == oldHook );
|
affirm( null == oldHook );
|
||||||
|
|
||||||
final UpdateHook newHook = new UpdateHook(){
|
final update_hook_callback newHook = new update_hook_callback(){
|
||||||
public void xUpdateHook(int opId, String dbName, String tableName, long rowId){
|
@Override public void call(int opId, String dbName, String tableName, long rowId){
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
oldHook = sqlite3_update_hook(db, newHook);
|
oldHook = sqlite3_update_hook(db, newHook);
|
||||||
@ -1100,11 +1101,10 @@ public class Tester1 implements Runnable {
|
|||||||
final sqlite3 db = createNewDb();
|
final sqlite3 db = createNewDb();
|
||||||
final ValueHolder<Integer> counter = new ValueHolder<>(0);
|
final ValueHolder<Integer> counter = new ValueHolder<>(0);
|
||||||
final ValueHolder<Integer> expectedOp = new ValueHolder<>(0);
|
final ValueHolder<Integer> expectedOp = new ValueHolder<>(0);
|
||||||
final PreUpdateHook theHook = new PreUpdateHook(){
|
final preupdate_hook_callback theHook = new preupdate_hook_callback(){
|
||||||
@SuppressWarnings("unchecked")
|
|
||||||
@Override
|
@Override
|
||||||
public void xPreUpdate(sqlite3 db, int opId, String dbName, String dbTable,
|
public void call(sqlite3 db, int opId, String dbName, String dbTable,
|
||||||
long iKey1, long iKey2 ){
|
long iKey1, long iKey2 ){
|
||||||
++counter.value;
|
++counter.value;
|
||||||
switch( opId ){
|
switch( opId ){
|
||||||
case SQLITE_UPDATE:
|
case SQLITE_UPDATE:
|
||||||
@ -1126,7 +1126,7 @@ public class Tester1 implements Runnable {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
PreUpdateHook oldHook = sqlite3_preupdate_hook(db, theHook);
|
preupdate_hook_callback oldHook = sqlite3_preupdate_hook(db, theHook);
|
||||||
affirm( null == oldHook );
|
affirm( null == oldHook );
|
||||||
expectedOp.value = SQLITE_INSERT;
|
expectedOp.value = SQLITE_INSERT;
|
||||||
execSql(db, "CREATE TABLE t(a); INSERT INTO t(a) VALUES('a'),('b'),('c')");
|
execSql(db, "CREATE TABLE t(a); INSERT INTO t(a) VALUES('a'),('b'),('c')");
|
||||||
@ -1146,10 +1146,10 @@ public class Tester1 implements Runnable {
|
|||||||
oldHook = sqlite3_preupdate_hook(db, null);
|
oldHook = sqlite3_preupdate_hook(db, null);
|
||||||
affirm( null == oldHook );
|
affirm( null == oldHook );
|
||||||
|
|
||||||
final PreUpdateHook newHook = new PreUpdateHook(){
|
final preupdate_hook_callback newHook = new preupdate_hook_callback(){
|
||||||
@Override
|
@Override
|
||||||
public void xPreUpdate(sqlite3 db, int opId, String dbName,
|
public void call(sqlite3 db, int opId, String dbName,
|
||||||
String tableName, long iKey1, long iKey2){
|
String tableName, long iKey1, long iKey2){
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
oldHook = sqlite3_preupdate_hook(db, newHook);
|
oldHook = sqlite3_preupdate_hook(db, newHook);
|
||||||
@ -1168,20 +1168,20 @@ public class Tester1 implements Runnable {
|
|||||||
private void testRollbackHook(){
|
private void testRollbackHook(){
|
||||||
final sqlite3 db = createNewDb();
|
final sqlite3 db = createNewDb();
|
||||||
final ValueHolder<Integer> counter = new ValueHolder<>(0);
|
final ValueHolder<Integer> counter = new ValueHolder<>(0);
|
||||||
final RollbackHook theHook = new RollbackHook(){
|
final rollback_hook_callback theHook = new rollback_hook_callback(){
|
||||||
public void xRollbackHook(){
|
@Override public void call(){
|
||||||
++counter.value;
|
++counter.value;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
RollbackHook oldHook = sqlite3_rollback_hook(db, theHook);
|
rollback_hook_callback oldHook = sqlite3_rollback_hook(db, theHook);
|
||||||
affirm( null == oldHook );
|
affirm( null == oldHook );
|
||||||
execSql(db, "CREATE TABLE t(a); INSERT INTO t(a) VALUES('a'),('b'),('c')");
|
execSql(db, "CREATE TABLE t(a); INSERT INTO t(a) VALUES('a'),('b'),('c')");
|
||||||
affirm( 0 == counter.value );
|
affirm( 0 == counter.value );
|
||||||
execSql(db, false, "BEGIN; SELECT 1; SELECT 2; ROLLBACK;");
|
execSql(db, false, "BEGIN; SELECT 1; SELECT 2; ROLLBACK;");
|
||||||
affirm( 1 == counter.value /* contra to commit hook, is invoked if no changes are made */ );
|
affirm( 1 == counter.value /* contra to commit hook, is invoked if no changes are made */ );
|
||||||
|
|
||||||
final RollbackHook newHook = new RollbackHook(){
|
final rollback_hook_callback newHook = new rollback_hook_callback(){
|
||||||
public void xRollbackHook(){return;}
|
@Override public void call(){return;}
|
||||||
};
|
};
|
||||||
oldHook = sqlite3_rollback_hook(db, newHook);
|
oldHook = sqlite3_rollback_hook(db, newHook);
|
||||||
affirm( theHook == oldHook );
|
affirm( theHook == oldHook );
|
||||||
@ -1237,8 +1237,8 @@ public class Tester1 implements Runnable {
|
|||||||
final sqlite3 db = createNewDb();
|
final sqlite3 db = createNewDb();
|
||||||
final ValueHolder<Integer> counter = new ValueHolder<>(0);
|
final ValueHolder<Integer> counter = new ValueHolder<>(0);
|
||||||
final ValueHolder<Integer> authRc = new ValueHolder<>(0);
|
final ValueHolder<Integer> authRc = new ValueHolder<>(0);
|
||||||
final Authorizer auth = new Authorizer(){
|
final authorizer_callback auth = new authorizer_callback(){
|
||||||
public int xAuth(int op, String s0, String s1, String s2, String s3){
|
public int call(int op, String s0, String s1, String s2, String s3){
|
||||||
++counter.value;
|
++counter.value;
|
||||||
//outln("xAuth(): "+s0+" "+s1+" "+s2+" "+s3);
|
//outln("xAuth(): "+s0+" "+s1+" "+s2+" "+s3);
|
||||||
return authRc.value;
|
return authRc.value;
|
||||||
@ -1260,8 +1260,8 @@ public class Tester1 implements Runnable {
|
|||||||
private synchronized void testAutoExtension(){
|
private synchronized void testAutoExtension(){
|
||||||
final ValueHolder<Integer> val = new ValueHolder<>(0);
|
final ValueHolder<Integer> val = new ValueHolder<>(0);
|
||||||
final ValueHolder<String> toss = new ValueHolder<>(null);
|
final ValueHolder<String> toss = new ValueHolder<>(null);
|
||||||
final AutoExtension ax = new AutoExtension(){
|
final auto_extension_callback ax = new auto_extension_callback(){
|
||||||
public synchronized int xEntryPoint(sqlite3 db){
|
@Override public synchronized int call(sqlite3 db){
|
||||||
++val.value;
|
++val.value;
|
||||||
if( null!=toss.value ){
|
if( null!=toss.value ){
|
||||||
throw new RuntimeException(toss.value);
|
throw new RuntimeException(toss.value);
|
||||||
@ -1300,7 +1300,7 @@ public class Tester1 implements Runnable {
|
|||||||
rc = sqlite3_auto_extension( ax );
|
rc = sqlite3_auto_extension( ax );
|
||||||
affirm( 0==rc );
|
affirm( 0==rc );
|
||||||
Exception err = null;
|
Exception err = null;
|
||||||
toss.value = "Throwing from AutoExtension.";
|
toss.value = "Throwing from auto_extension.";
|
||||||
try{
|
try{
|
||||||
sqlite3_close(createNewDb());
|
sqlite3_close(createNewDb());
|
||||||
}catch(Exception e){
|
}catch(Exception e){
|
||||||
@ -1311,8 +1311,8 @@ public class Tester1 implements Runnable {
|
|||||||
toss.value = null;
|
toss.value = null;
|
||||||
|
|
||||||
val.value = 0;
|
val.value = 0;
|
||||||
final AutoExtension ax2 = new AutoExtension(){
|
final auto_extension_callback ax2 = new auto_extension_callback(){
|
||||||
public synchronized int xEntryPoint(sqlite3 db){
|
@Override public synchronized int call(sqlite3 db){
|
||||||
++val.value;
|
++val.value;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -1507,8 +1507,8 @@ public class Tester1 implements Runnable {
|
|||||||
|
|
||||||
if( sqlLog ){
|
if( sqlLog ){
|
||||||
if( sqlite3_compileoption_used("ENABLE_SQLLOG") ){
|
if( sqlite3_compileoption_used("ENABLE_SQLLOG") ){
|
||||||
int rc = sqlite3_config( new SQLLog() {
|
int rc = sqlite3_config( new config_sqllog_callback() {
|
||||||
@Override public void xSqllog(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;
|
||||||
case 1: outln(db,": ",msg); break;
|
case 1: outln(db,": ",msg); break;
|
||||||
|
@ -1,25 +0,0 @@
|
|||||||
/*
|
|
||||||
** 2023-07-22
|
|
||||||
**
|
|
||||||
** The author disclaims copyright to this source code. In place of
|
|
||||||
** a legal notice, here is a blessing:
|
|
||||||
**
|
|
||||||
** May you do good and not evil.
|
|
||||||
** May you find forgiveness for yourself and forgive others.
|
|
||||||
** May you share freely, never taking more than you give.
|
|
||||||
**
|
|
||||||
*************************************************************************
|
|
||||||
** This file is part of the JNI bindings for the sqlite3 C API.
|
|
||||||
*/
|
|
||||||
package org.sqlite.jni;
|
|
||||||
|
|
||||||
/**
|
|
||||||
Callback proxy for use with sqlite3_update_hook().
|
|
||||||
*/
|
|
||||||
public interface UpdateHook {
|
|
||||||
/**
|
|
||||||
Works as documented for the sqlite3_update_hook() callback.
|
|
||||||
Must not throw.
|
|
||||||
*/
|
|
||||||
void xUpdateHook(int opId, String dbName, String tableName, long rowId);
|
|
||||||
}
|
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
** 2023-08-05
|
** 2023-08-25
|
||||||
**
|
**
|
||||||
** The author disclaims copyright to this source code. In place of
|
** The author disclaims copyright to this source code. In place of
|
||||||
** a legal notice, here is a blessing:
|
** a legal notice, here is a blessing:
|
||||||
@ -14,15 +14,16 @@
|
|||||||
package org.sqlite.jni;
|
package org.sqlite.jni;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
A callback for use with sqlite3_set_authorizer().
|
Callback for use with sqlite3_set_authorizer().
|
||||||
*/
|
*/
|
||||||
public interface Authorizer {
|
public interface authorizer_callback extends sqlite3_callback_proxy {
|
||||||
/**
|
/**
|
||||||
Must function as described for the sqlite3_set_authorizer()
|
Must function as described for the C-level
|
||||||
callback.
|
sqlite3_set_authorizer() callback.
|
||||||
|
|
||||||
Must not throw.
|
Must not throw.
|
||||||
*/
|
*/
|
||||||
int xAuth(int opId, @Nullable String s1, @Nullable String s2,
|
int call(int opId, @Nullable String s1, @Nullable String s2,
|
||||||
@Nullable String s3, @Nullable String s4);
|
@Nullable String s3, @Nullable String s4);
|
||||||
|
|
||||||
}
|
}
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
** 2023-08-05
|
** 2023-08-25
|
||||||
**
|
**
|
||||||
** The author disclaims copyright to this source code. In place of
|
** The author disclaims copyright to this source code. In place of
|
||||||
** a legal notice, here is a blessing:
|
** a legal notice, here is a blessing:
|
||||||
@ -17,24 +17,25 @@ package org.sqlite.jni;
|
|||||||
A callback for use with the sqlite3_auto_extension() family of
|
A callback for use with the sqlite3_auto_extension() family of
|
||||||
APIs.
|
APIs.
|
||||||
*/
|
*/
|
||||||
public interface AutoExtension {
|
public interface auto_extension_callback extends sqlite3_callback_proxy {
|
||||||
/**
|
/**
|
||||||
Must function as described for a sqlite3_auto_extension()
|
Must function as described for a C-level
|
||||||
callback, with the caveat that the signature is shorter.
|
sqlite3_auto_extension() callback, with the caveat that the
|
||||||
|
signature is shorter.
|
||||||
|
|
||||||
AutoExtensions may throw and the exception's error message
|
This callback may throw and the exception's error message will
|
||||||
will be set as the db's error string.
|
be set as the db's error string.
|
||||||
|
|
||||||
Tips for implementations:
|
Tips for implementations:
|
||||||
|
|
||||||
- Opening a database from an auto-extension handler will lead to
|
- Opening a database from an auto-extension handler will lead to
|
||||||
an endless recursion of the auto-handler triggering itself
|
an endless recursion of the auto-handler triggering itself
|
||||||
indirectly for each newly-opened database.
|
indirectly for each newly-opened database.
|
||||||
|
|
||||||
- If this routine is stateful, it may be useful to make the
|
- If this routine is stateful, it may be useful to make the
|
||||||
overridden method synchronized.
|
overridden method synchronized.
|
||||||
|
|
||||||
- Results are undefined if db is closed by an auto-extension.
|
- Results are undefined if db is closed by an auto-extension.
|
||||||
*/
|
*/
|
||||||
int xEntryPoint(sqlite3 db);
|
int call(sqlite3 db);
|
||||||
}
|
}
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
** 2023-07-22
|
** 2023-08-25
|
||||||
**
|
**
|
||||||
** The author disclaims copyright to this source code. In place of
|
** The author disclaims copyright to this source code. In place of
|
||||||
** a legal notice, here is a blessing:
|
** a legal notice, here is a blessing:
|
||||||
@ -13,33 +13,35 @@
|
|||||||
*/
|
*/
|
||||||
package org.sqlite.jni;
|
package org.sqlite.jni;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Callback proxy for use with sqlite3_busy_handler().
|
Callback for use with sqlite3_busy_handler()
|
||||||
*/
|
*/
|
||||||
public abstract class BusyHandler {
|
public abstract class busy_handler_callback
|
||||||
|
implements sqlite3_callback_proxy, sqlite3_xDestroy_callback {
|
||||||
/**
|
/**
|
||||||
Must function as documented for the sqlite3_busy_handler()
|
Must function as documented for the C-level
|
||||||
callback argument, minus the (void*) argument the C-level
|
sqlite3_busy_handler() callback argument, minus the (void*)
|
||||||
function requires.
|
argument the C-level function requires.
|
||||||
|
|
||||||
Any exceptions thrown by this callback are suppressed in order to
|
Any exceptions thrown by this callback are suppressed in order to
|
||||||
retain the C-style API semantics of the JNI bindings.
|
retain the C-style API semantics of the JNI bindings.
|
||||||
*/
|
*/
|
||||||
public abstract int xCallback(int n);
|
public abstract int call(int n);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Optionally override to perform any cleanup when this busy
|
Optionally override to perform any cleanup when this busy
|
||||||
handler is destroyed. It is destroyed when:
|
handler is destroyed. It is destroyed when:
|
||||||
|
|
||||||
- The associated db is passed to sqlite3_close() or
|
- The associated db is passed to sqlite3_close() or
|
||||||
sqlite3_close_v2().
|
sqlite3_close_v2().
|
||||||
|
|
||||||
- sqlite3_busy_handler() is called to replace the handler,
|
- sqlite3_busy_handler() is called to replace the handler,
|
||||||
whether it's passed a null handler or any other instance of
|
whether it's passed a null handler or any other instance of
|
||||||
this class.
|
this class.
|
||||||
|
|
||||||
- sqlite3_busy_timeout() is called, which implicitly installs
|
- sqlite3_busy_timeout() is called, which implicitly installs
|
||||||
a busy handler.
|
a busy handler.
|
||||||
*/
|
*/
|
||||||
public void xDestroy(){}
|
public void xDestroy(){}
|
||||||
}
|
}
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
** 2023-07-22
|
** 2023-08-25
|
||||||
**
|
**
|
||||||
** The author disclaims copyright to this source code. In place of
|
** The author disclaims copyright to this source code. In place of
|
||||||
** a legal notice, here is a blessing:
|
** a legal notice, here is a blessing:
|
||||||
@ -14,15 +14,18 @@
|
|||||||
package org.sqlite.jni;
|
package org.sqlite.jni;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
Callback for use with sqlite3_create_collation()
|
||||||
*/
|
*/
|
||||||
public abstract class Collation {
|
public abstract class collation_callback
|
||||||
|
implements sqlite3_callback_proxy, sqlite3_xDestroy_callback {
|
||||||
/**
|
/**
|
||||||
Must compare the given byte arrays using memcmp() semantics.
|
Must compare the given byte arrays using memcmp() semantics.
|
||||||
*/
|
*/
|
||||||
public abstract int xCompare(byte[] lhs, byte[] rhs);
|
public abstract int call(byte[] lhs, byte[] rhs);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Called by SQLite when the collation is destroyed. If a Collation
|
Called by SQLite when the collation is destroyed. If a collation
|
||||||
requires custom cleanup, override this method.
|
requires custom cleanup, override this method.
|
||||||
*/
|
*/
|
||||||
public void xDestroy() {}
|
public void xDestroy(){}
|
||||||
}
|
}
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
** 2023-07-30
|
** 2023-08-25
|
||||||
**
|
**
|
||||||
** The author disclaims copyright to this source code. In place of
|
** The author disclaims copyright to this source code. In place of
|
||||||
** a legal notice, here is a blessing:
|
** a legal notice, here is a blessing:
|
||||||
@ -14,15 +14,15 @@
|
|||||||
package org.sqlite.jni;
|
package org.sqlite.jni;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Callback proxy for use with sqlite3_collation_needed().
|
Callback for use with sqlite3_collation_needed().
|
||||||
*/
|
*/
|
||||||
public interface CollationNeeded {
|
public interface collation_needed_callback extends sqlite3_callback_proxy {
|
||||||
/**
|
/**
|
||||||
Has the same semantics as the C-level sqlite3_create_collation()
|
Has the same semantics as the C-level sqlite3_create_collation()
|
||||||
callback.
|
callback.
|
||||||
|
|
||||||
If it throws, the exception message is passed on to the db and
|
<p>If it throws, the exception message is passed on to the db and
|
||||||
the exception is suppressed.
|
the exception is suppressed.
|
||||||
*/
|
*/
|
||||||
int xCollationNeeded(sqlite3 db, int eTextRep, String collationName);
|
int call(sqlite3 db, int eTextRep, String collationName);
|
||||||
}
|
}
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
** 2023-07-22
|
** 2023-08-25
|
||||||
**
|
**
|
||||||
** The author disclaims copyright to this source code. In place of
|
** The author disclaims copyright to this source code. In place of
|
||||||
** a legal notice, here is a blessing:
|
** a legal notice, here is a blessing:
|
||||||
@ -14,12 +14,12 @@
|
|||||||
package org.sqlite.jni;
|
package org.sqlite.jni;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Callback proxy for use with sqlite3_commit_hook().
|
Callback for use with sqlite3_commit_hook()
|
||||||
*/
|
*/
|
||||||
public interface CommitHook {
|
public interface commit_hook_callback extends sqlite3_callback_proxy {
|
||||||
/**
|
/**
|
||||||
Works as documented for the sqlite3_commit_hook() callback.
|
Works as documented for the C-level sqlite3_commit_hook()
|
||||||
Must not throw.
|
callback. Must not throw.
|
||||||
*/
|
*/
|
||||||
int xCommitHook();
|
int call();
|
||||||
}
|
}
|
@ -14,12 +14,12 @@
|
|||||||
package org.sqlite.jni;
|
package org.sqlite.jni;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
A callback for use with sqlite3_config(SQLLog).
|
A callback for use with sqlite3_config().
|
||||||
*/
|
*/
|
||||||
public interface SQLLog {
|
public interface config_sqllog_callback {
|
||||||
/**
|
/**
|
||||||
Must function as described for sqlite3_config(SQLITE_CONFIG_SQLLOG)
|
Must function as described for sqlite3_config(SQLITE_CONFIG_SQLLOG)
|
||||||
callback, with the slight signature change.
|
callback, with the slight signature change.
|
||||||
*/
|
*/
|
||||||
void xSqllog(sqlite3 db, String msg, int msgType );
|
void call(sqlite3 db, String msg, int msgType );
|
||||||
}
|
}
|
26
ext/jni/src/org/sqlite/jni/preupdate_hook_callback.java
Normal file
26
ext/jni/src/org/sqlite/jni/preupdate_hook_callback.java
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
/*
|
||||||
|
** 2023-08-25
|
||||||
|
**
|
||||||
|
** The author disclaims copyright to this source code. In place of
|
||||||
|
** a legal notice, here is a blessing:
|
||||||
|
**
|
||||||
|
** May you do good and not evil.
|
||||||
|
** May you find forgiveness for yourself and forgive others.
|
||||||
|
** May you share freely, never taking more than you give.
|
||||||
|
**
|
||||||
|
*************************************************************************
|
||||||
|
** This file is part of the JNI bindings for the sqlite3 C API.
|
||||||
|
*/
|
||||||
|
package org.sqlite.jni;
|
||||||
|
|
||||||
|
/**
|
||||||
|
Callback for use with sqlite3_preupdate_hook().
|
||||||
|
*/
|
||||||
|
public interface preupdate_hook_callback extends sqlite3_callback_proxy {
|
||||||
|
/**
|
||||||
|
Must function as described for the C-level sqlite3_preupdate_hook()
|
||||||
|
callback. Must not throw.
|
||||||
|
*/
|
||||||
|
void call(sqlite3 db, int op, String dbName, String dbTable,
|
||||||
|
long iKey1, long iKey2 );
|
||||||
|
}
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
** 2023-07-22
|
** 2023-08-25
|
||||||
**
|
**
|
||||||
** The author disclaims copyright to this source code. In place of
|
** The author disclaims copyright to this source code. In place of
|
||||||
** a legal notice, here is a blessing:
|
** a legal notice, here is a blessing:
|
||||||
@ -14,14 +14,14 @@
|
|||||||
package org.sqlite.jni;
|
package org.sqlite.jni;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Callback proxy for use with sqlite3_progress_handler().
|
Callback for use with sqlite3_progress_handler()
|
||||||
*/
|
*/
|
||||||
public interface ProgressHandler {
|
public interface progress_handler_callback extends sqlite3_callback_proxy {
|
||||||
/**
|
/**
|
||||||
Works as documented for the sqlite3_progress_handler() callback.
|
Works as documented for the C-level sqlite3_progress_handler() callback.
|
||||||
|
|
||||||
If it throws, the exception message is passed on to the db and
|
If it throws, the exception message is passed on to the db and
|
||||||
the exception is suppressed.
|
the exception is suppressed.
|
||||||
*/
|
*/
|
||||||
int xCallback();
|
int call();
|
||||||
}
|
}
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
** 2023-07-22
|
** 2023-08-25
|
||||||
**
|
**
|
||||||
** The author disclaims copyright to this source code. In place of
|
** The author disclaims copyright to this source code. In place of
|
||||||
** a legal notice, here is a blessing:
|
** a legal notice, here is a blessing:
|
||||||
@ -14,12 +14,12 @@
|
|||||||
package org.sqlite.jni;
|
package org.sqlite.jni;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Callback proxy for use with sqlite3_rollback_hook().
|
Callback for use with sqlite3_rollback_hook()
|
||||||
*/
|
*/
|
||||||
public interface RollbackHook {
|
public interface rollback_hook_callback extends sqlite3_callback_proxy {
|
||||||
/**
|
/**
|
||||||
Works as documented for the sqlite3_rollback_hook() callback.
|
Works as documented for the C-level sqlite3_rollback_hook()
|
||||||
Must not throw.
|
callback. Must not throw.
|
||||||
*/
|
*/
|
||||||
void xRollbackHook();
|
void call();
|
||||||
}
|
}
|
34
ext/jni/src/org/sqlite/jni/sqlite3_callback_proxy.java
Normal file
34
ext/jni/src/org/sqlite/jni/sqlite3_callback_proxy.java
Normal file
@ -0,0 +1,34 @@
|
|||||||
|
/*
|
||||||
|
** 2023-08-25
|
||||||
|
**
|
||||||
|
** The author disclaims copyright to this source code. In place of
|
||||||
|
** a legal notice, here is a blessing:
|
||||||
|
**
|
||||||
|
** May you do good and not evil.
|
||||||
|
** May you find forgiveness for yourself and forgive others.
|
||||||
|
** May you share freely, never taking more than you give.
|
||||||
|
**
|
||||||
|
*************************************************************************
|
||||||
|
** This file is part of the JNI bindings for the sqlite3 C API.
|
||||||
|
*/
|
||||||
|
package org.sqlite.jni;
|
||||||
|
/**
|
||||||
|
This marker interface exists soley for use as a documentation and
|
||||||
|
class-grouping tool. It should be applied to interfaces or
|
||||||
|
classes which have a call() method implementing some specific
|
||||||
|
callback interface on behalf of the C library.
|
||||||
|
|
||||||
|
<p>Callbacks of this style follow a common naming convention:
|
||||||
|
|
||||||
|
<p>1) They almost all have the same class or interface name as the
|
||||||
|
C function they are proxying a callback for, minus the sqlite3_
|
||||||
|
prefix, plus a _callback suffix. e.g. sqlite3_busy_handler()'s
|
||||||
|
callback is named busy_handler_callback. Exceptions are made where
|
||||||
|
that would potentially be ambiguous, e.g. config_sqllog_callback
|
||||||
|
instead of config_callback because the sqlite3_config() interface
|
||||||
|
may need to support more callback types in the future.
|
||||||
|
|
||||||
|
<p>2) They all have a call() method but its signature is
|
||||||
|
callback-specific.
|
||||||
|
*/
|
||||||
|
public interface sqlite3_callback_proxy {}
|
28
ext/jni/src/org/sqlite/jni/sqlite3_xDestroy_callback.java
Normal file
28
ext/jni/src/org/sqlite/jni/sqlite3_xDestroy_callback.java
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
/*
|
||||||
|
** 2023-07-21
|
||||||
|
**
|
||||||
|
** The author disclaims copyright to this source code. In place of
|
||||||
|
** a legal notice, here is a blessing:
|
||||||
|
**
|
||||||
|
** May you do good and not evil.
|
||||||
|
** May you find forgiveness for yourself and forgive others.
|
||||||
|
** May you share freely, never taking more than you give.
|
||||||
|
**
|
||||||
|
*************************************************************************
|
||||||
|
** This file declares JNI bindings for the sqlite3 C API.
|
||||||
|
*/
|
||||||
|
package org.sqlite.jni;
|
||||||
|
|
||||||
|
/**
|
||||||
|
Callback for a hook called by SQLite when certain client-provided
|
||||||
|
state are destroyed. It gets its name from the pervasive use of
|
||||||
|
the symbol name xDestroy() for this purpose in the C API
|
||||||
|
documentation.
|
||||||
|
*/
|
||||||
|
public interface sqlite3_xDestroy_callback {
|
||||||
|
/**
|
||||||
|
Must perform any cleanup required by this object. Must not
|
||||||
|
throw.
|
||||||
|
*/
|
||||||
|
public void xDestroy();
|
||||||
|
}
|
@ -609,9 +609,9 @@ public class SQLTester {
|
|||||||
}
|
}
|
||||||
t.addTestScript(a);
|
t.addTestScript(a);
|
||||||
}
|
}
|
||||||
final AutoExtension ax = new AutoExtension() {
|
final auto_extension_callback ax = new auto_extension_callback() {
|
||||||
private final SQLTester tester = t;
|
private final SQLTester tester = t;
|
||||||
public int xEntryPoint(sqlite3 db){
|
@Override public int call(sqlite3 db){
|
||||||
final String init = tester.getDbInitSql();
|
final String init = tester.getDbInitSql();
|
||||||
if( !init.isEmpty() ){
|
if( !init.isEmpty() ){
|
||||||
tester.execSql(db, true, ResultBufferMode.NONE, null, init);
|
tester.execSql(db, true, ResultBufferMode.NONE, null, init);
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
** 2023-07-22
|
** 2023-08-25
|
||||||
**
|
**
|
||||||
** The author disclaims copyright to this source code. In place of
|
** The author disclaims copyright to this source code. In place of
|
||||||
** a legal notice, here is a blessing:
|
** a legal notice, here is a blessing:
|
||||||
@ -16,18 +16,14 @@ package org.sqlite.jni;
|
|||||||
/**
|
/**
|
||||||
Callback proxy for use with sqlite3_trace_v2().
|
Callback proxy for use with sqlite3_trace_v2().
|
||||||
*/
|
*/
|
||||||
public interface Tracer {
|
public interface trace_v2_callback extends sqlite3_callback_proxy {
|
||||||
/**
|
/**
|
||||||
Achtung: this interface is subject to change because the current
|
|
||||||
approach to mapping the passed-in natives back to Java is
|
|
||||||
uncomfortably quirky.
|
|
||||||
|
|
||||||
Called by sqlite3 for various tracing operations, as per
|
Called by sqlite3 for various tracing operations, as per
|
||||||
sqlite3_trace_v2(). Note that this interface elides the 2nd
|
sqlite3_trace_v2(). Note that this interface elides the 2nd
|
||||||
argument to the native trace callback, as that role is better
|
argument to the native trace callback, as that role is better
|
||||||
filled by instance-local state.
|
filled by instance-local state.
|
||||||
|
|
||||||
The 2nd argument to this function, if non-0, will be a native
|
<p>The 2nd argument to this function, if non-0, will be a native
|
||||||
pointer to either an sqlite3 or sqlite3_stmt object, depending on
|
pointer to either an sqlite3 or sqlite3_stmt object, depending on
|
||||||
the first argument (see below). Client code can pass it to the
|
the first argument (see below). Client code can pass it to the
|
||||||
sqlite3 resp. sqlite3_stmt constructor to create a wrapping
|
sqlite3 resp. sqlite3_stmt constructor to create a wrapping
|
||||||
@ -36,27 +32,27 @@ public interface Tracer {
|
|||||||
each call is comparatively expensive, and the objects are
|
each call is comparatively expensive, and the objects are
|
||||||
probably only seldom useful.
|
probably only seldom useful.
|
||||||
|
|
||||||
The final argument to this function is the "X" argument
|
<p>The final argument to this function is the "X" argument
|
||||||
documented for sqlite3_trace() and sqlite3_trace_v2(). Its type
|
documented for sqlite3_trace() and sqlite3_trace_v2(). Its type
|
||||||
depends on value of the first argument:
|
depends on value of the first argument:
|
||||||
|
|
||||||
- SQLITE_TRACE_STMT: pNative is a sqlite3_stmt. pX is a string
|
<p>- SQLITE_TRACE_STMT: pNative is a sqlite3_stmt. pX is a string
|
||||||
containing the prepared SQL, with one caveat: JNI only provides
|
containing the prepared SQL, with one caveat: JNI only provides
|
||||||
us with the ability to convert that string to MUTF-8, as
|
us with the ability to convert that string to MUTF-8, as
|
||||||
opposed to standard UTF-8, and is cannot be ruled out that that
|
opposed to standard UTF-8, and is cannot be ruled out that that
|
||||||
difference may be significant for certain inputs. The
|
difference may be significant for certain inputs. The
|
||||||
alternative would be that we first convert it to UTF-16 before
|
alternative would be that we first convert it to UTF-16 before
|
||||||
passing it on, but there's no readily-available way to do that
|
passing it on, but there's no readily-available way to do that
|
||||||
without calling back into the db to peform the conversion
|
without calling back into the db to peform the conversion
|
||||||
(which would lead to further tracing).
|
(which would lead to further tracing).
|
||||||
|
|
||||||
- SQLITE_TRACE_PROFILE: pNative is a sqlite3_stmt. pX is a Long
|
<p>- SQLITE_TRACE_PROFILE: pNative is a sqlite3_stmt. pX is a Long
|
||||||
holding an approximate number of nanoseconds the statement took
|
holding an approximate number of nanoseconds the statement took
|
||||||
to run.
|
to run.
|
||||||
|
|
||||||
- SQLITE_TRACE_ROW: pNative is a sqlite3_stmt. pX is null.
|
<p>- SQLITE_TRACE_ROW: pNative is a sqlite3_stmt. pX is null.
|
||||||
|
|
||||||
- SQLITE_TRACE_CLOSE: pNative is a sqlite3. pX is null.
|
<p>- SQLITE_TRACE_CLOSE: pNative is a sqlite3. pX is null.
|
||||||
*/
|
*/
|
||||||
int xCallback(int traceFlag, Object pNative, Object pX);
|
int call(int traceFlag, Object pNative, Object pX);
|
||||||
}
|
}
|
25
ext/jni/src/org/sqlite/jni/update_hook_callback.java
Normal file
25
ext/jni/src/org/sqlite/jni/update_hook_callback.java
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
/*
|
||||||
|
** 2023-08-25
|
||||||
|
**
|
||||||
|
** The author disclaims copyright to this source code. In place of
|
||||||
|
** a legal notice, here is a blessing:
|
||||||
|
**
|
||||||
|
** May you do good and not evil.
|
||||||
|
** May you find forgiveness for yourself and forgive others.
|
||||||
|
** May you share freely, never taking more than you give.
|
||||||
|
**
|
||||||
|
*************************************************************************
|
||||||
|
** This file is part of the JNI bindings for the sqlite3 C API.
|
||||||
|
*/
|
||||||
|
package org.sqlite.jni;
|
||||||
|
|
||||||
|
/**
|
||||||
|
Callback for use with sqlite3_update_hook().
|
||||||
|
*/
|
||||||
|
public interface update_hook_callback extends sqlite3_callback_proxy {
|
||||||
|
/**
|
||||||
|
Must function as described for the C-level sqlite3_update_hook()
|
||||||
|
callback. Must not throw.
|
||||||
|
*/
|
||||||
|
void call(int opId, String dbName, String tableName, long rowId);
|
||||||
|
}
|
50
manifest
50
manifest
@ -1,5 +1,5 @@
|
|||||||
C javadoc\sadditions.
|
C Replace\sall\sof\sthe\sJNI\sXyzHook/Handler\sclasses\swith\ssnake_cased\sones\swhich\sfollow\sunified\snaming\sconventions\sto\smake\sthem\seasier\sto\sapply.
|
||||||
D 2023-08-25T00:27:28.089
|
D 2023-08-25T02:57:30.049
|
||||||
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
|
||||||
@ -233,17 +233,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 642624b421936807eeed2fe7d0f9df898837ad0e4be4d9e32af06b0e5ef2c5b6
|
F ext/jni/GNUmakefile fb73086e6f8ee40f3c79e32b8e0a27725b2680f9cf8ae41bde2556eb8e3fad2a
|
||||||
F ext/jni/README.md 9d3caa2e038bfe5e8356a9e8ff66f93ca0647ac278339eeea296f10017f5cf35
|
F ext/jni/README.md 1332b1fa27918bd5d9ca2d0d4f3ac3a6ab86b9e3699dc5bfe32904a027f3d2a9
|
||||||
F ext/jni/jar-dist.make 030aaa4ae71dd86e4ec5e7c1e6cd86f9dfa47c4592c070d2e35157e42498e1fa
|
F ext/jni/jar-dist.make 030aaa4ae71dd86e4ec5e7c1e6cd86f9dfa47c4592c070d2e35157e42498e1fa
|
||||||
F ext/jni/src/c/sqlite3-jni.c e4bdcd17e8f8e825f206e1c6ab5adf7f507d70b64b0f795c0cde141077fb68b2
|
F ext/jni/src/c/sqlite3-jni.c 2e9cabce55f0a4c0a56b29bbaa367c133959e94a390ec0129b4054832d0421f9
|
||||||
F ext/jni/src/c/sqlite3-jni.h 91c2eeee22d3594e6652d51edcce0cd94d258a768802fcfac13a78f900127b72
|
F ext/jni/src/c/sqlite3-jni.h 3d8cdacce26d20fd967d67a2e8539d38fc2e9fe13598147399db4b2c303a89c8
|
||||||
F ext/jni/src/org/sqlite/jni/Authorizer.java e6cbc6605d4d254be892d5197dea6290180efb7c5dbb3060f8487563bb11bb65
|
|
||||||
F ext/jni/src/org/sqlite/jni/AutoExtension.java bcc1849b2fccbe5e2d7ac9e9ac7f8d05a6d7088a8fedbaad90e39569745a61e6
|
|
||||||
F ext/jni/src/org/sqlite/jni/BusyHandler.java 1b1d3e5c86cd796a0580c81b6af6550ad943baa25e47ada0dcca3aff3ebe978c
|
|
||||||
F ext/jni/src/org/sqlite/jni/Collation.java 8dffbb00938007ad0967b2ab424d3c908413af1bbd3d212b9c9899910f1218d1
|
|
||||||
F ext/jni/src/org/sqlite/jni/CollationNeeded.java ad67843b6dd1c06b6b0a1dc72887b7c48e2a98042fcf6cacf14d42444037eab8
|
|
||||||
F ext/jni/src/org/sqlite/jni/CommitHook.java 87c6a8e5138c61a8eeff018fe16d23f29219150239746032687f245938baca1a
|
|
||||||
F ext/jni/src/org/sqlite/jni/Fts5.java a45cd890202d72c3bfe8aea69b57b02b6dd588361af81d8b921954c37940b2f7
|
F ext/jni/src/org/sqlite/jni/Fts5.java a45cd890202d72c3bfe8aea69b57b02b6dd588361af81d8b921954c37940b2f7
|
||||||
F ext/jni/src/org/sqlite/jni/Fts5Context.java 0a5a02047a6a1dd3e4a38b0e542a8dd2de365033ba30e6ae019a676305959890
|
F ext/jni/src/org/sqlite/jni/Fts5Context.java 0a5a02047a6a1dd3e4a38b0e542a8dd2de365033ba30e6ae019a676305959890
|
||||||
F ext/jni/src/org/sqlite/jni/Fts5ExtensionApi.java 10cb2e0eb4dc5cf4241a7ccc0442a680f14a3ce6ecbb726552f2b5e026e521e0
|
F ext/jni/src/org/sqlite/jni/Fts5ExtensionApi.java 10cb2e0eb4dc5cf4241a7ccc0442a680f14a3ce6ecbb726552f2b5e026e521e0
|
||||||
@ -254,28 +248,36 @@ F ext/jni/src/org/sqlite/jni/NativePointerHolder.java 564087036449a16df148dcf0a0
|
|||||||
F ext/jni/src/org/sqlite/jni/NotNull.java a4016df436f454e8d6786dd8421484edd6fc604043cf7fd8ec94cf922ba61604
|
F ext/jni/src/org/sqlite/jni/NotNull.java a4016df436f454e8d6786dd8421484edd6fc604043cf7fd8ec94cf922ba61604
|
||||||
F ext/jni/src/org/sqlite/jni/Nullable.java b2f8755970e9dd0e917a505638d036ccc699c8422f1a69fe9d98c0804beaea17
|
F ext/jni/src/org/sqlite/jni/Nullable.java b2f8755970e9dd0e917a505638d036ccc699c8422f1a69fe9d98c0804beaea17
|
||||||
F ext/jni/src/org/sqlite/jni/OutputPointer.java 8d7b2c865217d3b7a47dccaddc4a24748463b770eecca90873402a38c0b2d819
|
F ext/jni/src/org/sqlite/jni/OutputPointer.java 8d7b2c865217d3b7a47dccaddc4a24748463b770eecca90873402a38c0b2d819
|
||||||
F ext/jni/src/org/sqlite/jni/PreUpdateHook.java dec00a706b58c67989f0ff56c4f0a703821d25b45c62dd7fed1b462049f15c26
|
|
||||||
F ext/jni/src/org/sqlite/jni/ProgressHandler.java 6f62053a828a572de809828b1ee495380677e87daa29a1c57a0e2c06b0a131dc
|
|
||||||
F ext/jni/src/org/sqlite/jni/ResultCode.java ba701f20213a5f259e94cfbfdd36eb7ac7ce7797f2c6c7fca2004ff12ce20f86
|
F ext/jni/src/org/sqlite/jni/ResultCode.java ba701f20213a5f259e94cfbfdd36eb7ac7ce7797f2c6c7fca2004ff12ce20f86
|
||||||
F ext/jni/src/org/sqlite/jni/RollbackHook.java b04c8abcc6ade44a8a57129e33765793f69df0ba909e49ba18d73f4268d92564
|
|
||||||
F ext/jni/src/org/sqlite/jni/SQLFunction.java 4d6291fa14fcca1a040609378f9f00a193145d79c3abbda98ba32c340904cbeb
|
F ext/jni/src/org/sqlite/jni/SQLFunction.java 4d6291fa14fcca1a040609378f9f00a193145d79c3abbda98ba32c340904cbeb
|
||||||
F ext/jni/src/org/sqlite/jni/SQLLog.java c60610b35208416940822e834d61f08fbbe5d6e06b374b541b49e41fd56c9798
|
F ext/jni/src/org/sqlite/jni/SQLite3Jni.java cb848377b214562c968934dc1749c5493d42254cbc825e44e2d2c34085c2ec5e
|
||||||
F ext/jni/src/org/sqlite/jni/SQLite3Jni.java af2d1a673f48bed8bb39ad9f7fe79c3d904cb2c6c875254a0e8c7e7db6539725
|
F ext/jni/src/org/sqlite/jni/Tester1.java 3bfbcbf0720f9b71e461eb016b8bc30289a7ceaab1aa5da13e319fd303bf19fd
|
||||||
F ext/jni/src/org/sqlite/jni/Tester1.java e9b82c561ec8771b3e4ea537ebd7c16dd096928b6b8221967a4726104c7c6cb2
|
|
||||||
F ext/jni/src/org/sqlite/jni/TesterFts5.java 6f135c60e24c89e8eecb9fe61dde0f3bb2906de668ca6c9186bcf34bdaf94629
|
F ext/jni/src/org/sqlite/jni/TesterFts5.java 6f135c60e24c89e8eecb9fe61dde0f3bb2906de668ca6c9186bcf34bdaf94629
|
||||||
F ext/jni/src/org/sqlite/jni/Tracer.java a5cece9f947b0af27669b8baec300b6dd7ff859c3e6a6e4a1bd8b50f9714775d
|
|
||||||
F ext/jni/src/org/sqlite/jni/UpdateHook.java e58645a1727f8a9bbe72dc072ec5b40d9f9362cb0aa24acfe93f49ff56a9016d
|
|
||||||
F ext/jni/src/org/sqlite/jni/ValueHolder.java f022873abaabf64f3dd71ab0d6037c6e71cece3b8819fa10bf26a5461dc973ee
|
F ext/jni/src/org/sqlite/jni/ValueHolder.java f022873abaabf64f3dd71ab0d6037c6e71cece3b8819fa10bf26a5461dc973ee
|
||||||
|
F ext/jni/src/org/sqlite/jni/authorizer_callback.java 1d2d7fd584f917afa507820644d95504bcc9c5d7363a7afeb58de3b256851bfe w ext/jni/src/org/sqlite/jni/Authorizer.java
|
||||||
|
F ext/jni/src/org/sqlite/jni/auto_extension_callback.java c8754ffabe3b75bd8f209bf1451d6a180ec52e99b11c11b2e3642f1891eb2635 w ext/jni/src/org/sqlite/jni/AutoExtension.java
|
||||||
|
F ext/jni/src/org/sqlite/jni/busy_handler_callback.java c9b046631646a9c123f26f7b0056f274d1e85c02475981603271f6feefa9bfee w ext/jni/src/org/sqlite/jni/BusyHandler.java
|
||||||
|
F ext/jni/src/org/sqlite/jni/collation_callback.java 44ddecceafd1a099027a06bb53cbe825613255398990f58a57fcc9d9fb4c2ce2 w ext/jni/src/org/sqlite/jni/Collation.java
|
||||||
|
F ext/jni/src/org/sqlite/jni/collation_needed_callback.java 0d5cbac245db9ff22b67c92c06f2e31ed557cd018f1c4670ae970e6f16f22cee w ext/jni/src/org/sqlite/jni/CollationNeeded.java
|
||||||
|
F ext/jni/src/org/sqlite/jni/commit_hook_callback.java 88462783826026e61e522d9aae7a9b4cb0c30f7d56519e08a5de42213a0087bc w ext/jni/src/org/sqlite/jni/CommitHook.java
|
||||||
|
F ext/jni/src/org/sqlite/jni/config_sqllog_callback.java d8b9b4e0f9a522fd40a88b4f9f87308fff1be255523ad6cff8493bf3bbca2ec8 w ext/jni/src/org/sqlite/jni/SQLLog.java
|
||||||
F ext/jni/src/org/sqlite/jni/fts5_api.java 5198be71c162e3e0cb1f4962a7cdf0d7596e8af53f70c4af6db24aab8d53d9ba
|
F ext/jni/src/org/sqlite/jni/fts5_api.java 5198be71c162e3e0cb1f4962a7cdf0d7596e8af53f70c4af6db24aab8d53d9ba
|
||||||
F ext/jni/src/org/sqlite/jni/fts5_extension_function.java ac825035d7d83fc7fd960347abfa6803e1614334a21533302041823ad5fc894c
|
F ext/jni/src/org/sqlite/jni/fts5_extension_function.java ac825035d7d83fc7fd960347abfa6803e1614334a21533302041823ad5fc894c
|
||||||
F ext/jni/src/org/sqlite/jni/fts5_tokenizer.java e530b36e6437fcc500e95d5d75fbffe272bdea20d2fac6be2e1336c578fba98b
|
F ext/jni/src/org/sqlite/jni/fts5_tokenizer.java e530b36e6437fcc500e95d5d75fbffe272bdea20d2fac6be2e1336c578fba98b
|
||||||
F ext/jni/src/org/sqlite/jni/package-info.java 5652d1bcaaf3ccb06d26c174e6d0b60571a545a0a3354dd8303960677be05e14
|
F ext/jni/src/org/sqlite/jni/package-info.java 5652d1bcaaf3ccb06d26c174e6d0b60571a545a0a3354dd8303960677be05e14
|
||||||
|
F ext/jni/src/org/sqlite/jni/preupdate_hook_callback.java 2bcc61a9320a7af6be36e5a814d133dd610d8ead79622efd84e7444aabe25f6c w ext/jni/src/org/sqlite/jni/PreUpdateHook.java
|
||||||
|
F ext/jni/src/org/sqlite/jni/progress_handler_callback.java eae32bd36639b12552becf82a0481bb4c09d22655920007b62e49130ce97a850 w ext/jni/src/org/sqlite/jni/ProgressHandler.java
|
||||||
|
F ext/jni/src/org/sqlite/jni/rollback_hook_callback.java 25663dbad4f9da50019d0c68fc815d31155a04eaeb293f27fdc6f9b20a424760 w ext/jni/src/org/sqlite/jni/RollbackHook.java
|
||||||
F ext/jni/src/org/sqlite/jni/sqlite3.java 62b1b81935ccf3393472d17cb883dc5ff39c388ec3bc1de547f098a0217158fc
|
F ext/jni/src/org/sqlite/jni/sqlite3.java 62b1b81935ccf3393472d17cb883dc5ff39c388ec3bc1de547f098a0217158fc
|
||||||
|
F ext/jni/src/org/sqlite/jni/sqlite3_callback_proxy.java 4b3369faab47d787594c0544000dbac751d69641cac866f82f9be0e13c4b2ce5
|
||||||
F ext/jni/src/org/sqlite/jni/sqlite3_context.java dca23e54f368f8ea37c112c1d2f74dc9522d5da2fdf67d6fd6b2ec9603d8514c
|
F ext/jni/src/org/sqlite/jni/sqlite3_context.java dca23e54f368f8ea37c112c1d2f74dc9522d5da2fdf67d6fd6b2ec9603d8514c
|
||||||
F ext/jni/src/org/sqlite/jni/sqlite3_stmt.java 78e6d1b95ac600a9475e9db4623f69449322b0c93d1bd4e1616e76ed547ed9fc
|
F ext/jni/src/org/sqlite/jni/sqlite3_stmt.java 78e6d1b95ac600a9475e9db4623f69449322b0c93d1bd4e1616e76ed547ed9fc
|
||||||
F ext/jni/src/org/sqlite/jni/sqlite3_value.java 3d1d4903e267bc0bc81d57d21f5e85978eff389a1a6ed46726dbe75f85e6914a
|
F ext/jni/src/org/sqlite/jni/sqlite3_value.java 3d1d4903e267bc0bc81d57d21f5e85978eff389a1a6ed46726dbe75f85e6914a
|
||||||
F ext/jni/src/org/sqlite/jni/tester/SQLTester.java bc3d6797a2f6cb7d443a0b72af84e5a45e0416b96af52e432d28e123db1970c3
|
F ext/jni/src/org/sqlite/jni/sqlite3_xDestroy_callback.java 90470ef3e901e8f4863adacf361b0afcd5c7633166ed6c747630a30659224c20
|
||||||
|
F ext/jni/src/org/sqlite/jni/tester/SQLTester.java e560303ada834363b615e5863050d1488bf5c83f0627b966fb1a0a6a4355029f
|
||||||
F ext/jni/src/org/sqlite/jni/tester/test-script-interpreter.md f9f25126127045d051e918fe59004a1485311c50a13edbf18c79a6ff9160030e
|
F ext/jni/src/org/sqlite/jni/tester/test-script-interpreter.md f9f25126127045d051e918fe59004a1485311c50a13edbf18c79a6ff9160030e
|
||||||
|
F ext/jni/src/org/sqlite/jni/trace_v2_callback.java b3365dbfa1c9b0d18541ae530055a8ff55fc5b8494d30c03a12eafd9c8cb4e8c w ext/jni/src/org/sqlite/jni/Tracer.java
|
||||||
|
F ext/jni/src/org/sqlite/jni/update_hook_callback.java 616dbc9f99bdfbde190af3d8a44a8ad418fdc5f8c63acb0a0d679bd063848da8 w ext/jni/src/org/sqlite/jni/UpdateHook.java
|
||||||
F ext/jni/src/tests/000-000-sanity.test cfe6dc1b950751d6096e3f5695becaadcdaa048bfe9567209d6eb676e693366d
|
F ext/jni/src/tests/000-000-sanity.test cfe6dc1b950751d6096e3f5695becaadcdaa048bfe9567209d6eb676e693366d
|
||||||
F ext/jni/src/tests/000-001-ignored.test e17e874c6ab3c437f1293d88093cf06286083b65bf162317f91bbfd92f961b70
|
F ext/jni/src/tests/000-001-ignored.test e17e874c6ab3c437f1293d88093cf06286083b65bf162317f91bbfd92f961b70
|
||||||
F ext/lsm1/Makefile a553b728bba6c11201b795188c5708915cc4290f02b7df6ba7e8c4c943fd5cd9
|
F ext/lsm1/Makefile a553b728bba6c11201b795188c5708915cc4290f02b7df6ba7e8c4c943fd5cd9
|
||||||
@ -2098,8 +2100,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 7232b033954fae40df3db43e489e0e5a703c03308f500a1ae36fd9d707632d7f
|
P bedf33d403677d243a1505ce549166850ab55671700b143278db5feb84883ab3
|
||||||
R 2acb197dd02e88e8595f80978f7eae58
|
R 3d4d16fca03c716fac15f71f35ecf6fd
|
||||||
U stephan
|
U stephan
|
||||||
Z c7c0446afbe0f68b470086328d8c934a
|
Z 276c090c642360abc3be58550d893d5e
|
||||||
# Remove this line to create a well-formed Fossil manifest.
|
# Remove this line to create a well-formed Fossil manifest.
|
||||||
|
@ -1 +1 @@
|
|||||||
bedf33d403677d243a1505ce549166850ab55671700b143278db5feb84883ab3
|
76e62a381249b3b4262b22bdffe7fc2816c820115c9df266956ab8817b127aca
|
Reference in New Issue
Block a user