1
0
mirror of https://github.com/sqlite/sqlite.git synced 2025-07-30 19:03:16 +03:00

Move Java-side FTS5 bits into the fts5 subpackage to (A) make it easy to optionally bundle it (or not) and (B) set a precedent for puting extension APIs in their own package.

FossilOrigin-Name: 4c773e1f331cd5854d4c6e8825197933c0bb6827b7437e56ac0ad650d1ddf55e
This commit is contained in:
stephan
2023-09-06 07:39:25 +00:00
parent f31b9fcf86
commit 7c1588b3ad
15 changed files with 168 additions and 168 deletions

View File

@ -383,11 +383,11 @@ static const struct {
RefO(13, "OutputPointer$String", "Ljava/lang/String;"),
#ifdef SQLITE_ENABLE_FTS5
RefO(14, "OutputPointer$ByteArray", "[B"),
RefN(15, "Fts5Context"),
RefN(16, "Fts5ExtensionApi"),
RefN(17, "fts5_api"),
RefN(18, "fts5_tokenizer"),
RefN(19, "Fts5Tokenizer")
RefN(15, "fts5/Fts5Context"),
RefN(16, "fts5/Fts5ExtensionApi"),
RefN(17, "fts5/fts5_api"),
RefN(18, "fts5/fts5_tokenizer"),
RefN(19, "fts5/Fts5Tokenizer")
#endif
#undef MkRef
#undef RefN
@ -4793,11 +4793,11 @@ JniDecl(void,1jni_1internal_1details)(JniArgsEnvClass){
/* Creates a verbose JNI Fts5 function name. */
#define JniFuncNameFtsXA(Suffix) \
Java_org_sqlite_jni_Fts5ExtensionApi_ ## Suffix
Java_org_sqlite_jni_fts5_Fts5ExtensionApi_ ## Suffix
#define JniFuncNameFtsApi(Suffix) \
Java_org_sqlite_jni_fts5_1api_ ## Suffix
Java_org_sqlite_jni_fts5_fts5_1api_ ## Suffix
#define JniFuncNameFtsTok(Suffix) \
Java_org_sqlite_jni_fts5_tokenizer_ ## Suffix
Java_org_sqlite_jni_fts5_fts5_tokenizer_ ## Suffix
#define JniDeclFtsXA(ReturnType,Suffix) \
JNIEXPORT ReturnType JNICALL \
@ -4855,8 +4855,8 @@ static Fts5JniAux * Fts5JniAux_alloc(JNIEnv * const env, jobject jObj){
s->jObj = S3JniRefGlobal(jObj);
klazz = (*env)->GetObjectClass(env, jObj);
s->jmid = (*env)->GetMethodID(env, klazz, "call",
"(Lorg/sqlite/jni/Fts5ExtensionApi;"
"Lorg/sqlite/jni/Fts5Context;"
"(Lorg/sqlite/jni/fts5/Fts5ExtensionApi;"
"Lorg/sqlite/jni/fts5/Fts5Context;"
"Lorg/sqlite/jni/sqlite3_context;"
"[Lorg/sqlite/jni/sqlite3_value;)V");
S3JniUnrefLocal(klazz);
@ -5651,7 +5651,7 @@ Java_org_sqlite_jni_SQLite3Jni_init(JniArgsEnvClass){
}
#ifdef SQLITE_ENABLE_FTS5
klazz = (*env)->FindClass(env, "org/sqlite/jni/Fts5PhraseIter");
klazz = (*env)->FindClass(env, "org/sqlite/jni/fts5/Fts5PhraseIter");
S3JniExceptionIsFatal("Error getting reference to org.sqlite.jni.Fts5PhraseIter.");
SJG.fts5.jPhraseIter.fidA = (*env)->GetFieldID(env, klazz, "a", "J");
S3JniExceptionIsFatal("Cannot get Fts5PhraseIter.a field.");

View File

@ -2097,171 +2097,171 @@ JNIEXPORT void JNICALL Java_org_sqlite_jni_SQLite3Jni_sqlite3_1jni_1internal_1de
#endif
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class org_sqlite_jni_Fts5ExtensionApi */
/* Header for class org_sqlite_jni_fts5_Fts5ExtensionApi */
#ifndef _Included_org_sqlite_jni_Fts5ExtensionApi
#define _Included_org_sqlite_jni_Fts5ExtensionApi
#ifndef _Included_org_sqlite_jni_fts5_Fts5ExtensionApi
#define _Included_org_sqlite_jni_fts5_Fts5ExtensionApi
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: org_sqlite_jni_Fts5ExtensionApi
* Class: org_sqlite_jni_fts5_Fts5ExtensionApi
* Method: getInstance
* Signature: ()Lorg/sqlite/jni/Fts5ExtensionApi;
* Signature: ()Lorg/sqlite/jni/fts5/Fts5ExtensionApi;
*/
JNIEXPORT jobject JNICALL Java_org_sqlite_jni_Fts5ExtensionApi_getInstance
JNIEXPORT jobject JNICALL Java_org_sqlite_jni_fts5_Fts5ExtensionApi_getInstance
(JNIEnv *, jclass);
/*
* Class: org_sqlite_jni_Fts5ExtensionApi
* Class: org_sqlite_jni_fts5_Fts5ExtensionApi
* Method: xColumnCount
* Signature: (Lorg/sqlite/jni/Fts5Context;)I
* Signature: (Lorg/sqlite/jni/fts5/Fts5Context;)I
*/
JNIEXPORT jint JNICALL Java_org_sqlite_jni_Fts5ExtensionApi_xColumnCount
JNIEXPORT jint JNICALL Java_org_sqlite_jni_fts5_Fts5ExtensionApi_xColumnCount
(JNIEnv *, jobject, jobject);
/*
* Class: org_sqlite_jni_Fts5ExtensionApi
* Class: org_sqlite_jni_fts5_Fts5ExtensionApi
* Method: xColumnSize
* Signature: (Lorg/sqlite/jni/Fts5Context;ILorg/sqlite/jni/OutputPointer/Int32;)I
* Signature: (Lorg/sqlite/jni/fts5/Fts5Context;ILorg/sqlite/jni/OutputPointer/Int32;)I
*/
JNIEXPORT jint JNICALL Java_org_sqlite_jni_Fts5ExtensionApi_xColumnSize
JNIEXPORT jint JNICALL Java_org_sqlite_jni_fts5_Fts5ExtensionApi_xColumnSize
(JNIEnv *, jobject, jobject, jint, jobject);
/*
* Class: org_sqlite_jni_Fts5ExtensionApi
* Class: org_sqlite_jni_fts5_Fts5ExtensionApi
* Method: xColumnText
* Signature: (Lorg/sqlite/jni/Fts5Context;ILorg/sqlite/jni/OutputPointer/String;)I
* Signature: (Lorg/sqlite/jni/fts5/Fts5Context;ILorg/sqlite/jni/OutputPointer/String;)I
*/
JNIEXPORT jint JNICALL Java_org_sqlite_jni_Fts5ExtensionApi_xColumnText
JNIEXPORT jint JNICALL Java_org_sqlite_jni_fts5_Fts5ExtensionApi_xColumnText
(JNIEnv *, jobject, jobject, jint, jobject);
/*
* Class: org_sqlite_jni_Fts5ExtensionApi
* Class: org_sqlite_jni_fts5_Fts5ExtensionApi
* Method: xColumnTotalSize
* Signature: (Lorg/sqlite/jni/Fts5Context;ILorg/sqlite/jni/OutputPointer/Int64;)I
* Signature: (Lorg/sqlite/jni/fts5/Fts5Context;ILorg/sqlite/jni/OutputPointer/Int64;)I
*/
JNIEXPORT jint JNICALL Java_org_sqlite_jni_Fts5ExtensionApi_xColumnTotalSize
JNIEXPORT jint JNICALL Java_org_sqlite_jni_fts5_Fts5ExtensionApi_xColumnTotalSize
(JNIEnv *, jobject, jobject, jint, jobject);
/*
* Class: org_sqlite_jni_Fts5ExtensionApi
* Class: org_sqlite_jni_fts5_Fts5ExtensionApi
* Method: xGetAuxdata
* Signature: (Lorg/sqlite/jni/Fts5Context;Z)Ljava/lang/Object;
* Signature: (Lorg/sqlite/jni/fts5/Fts5Context;Z)Ljava/lang/Object;
*/
JNIEXPORT jobject JNICALL Java_org_sqlite_jni_Fts5ExtensionApi_xGetAuxdata
JNIEXPORT jobject JNICALL Java_org_sqlite_jni_fts5_Fts5ExtensionApi_xGetAuxdata
(JNIEnv *, jobject, jobject, jboolean);
/*
* Class: org_sqlite_jni_Fts5ExtensionApi
* Class: org_sqlite_jni_fts5_Fts5ExtensionApi
* Method: xInst
* Signature: (Lorg/sqlite/jni/Fts5Context;ILorg/sqlite/jni/OutputPointer/Int32;Lorg/sqlite/jni/OutputPointer/Int32;Lorg/sqlite/jni/OutputPointer/Int32;)I
* Signature: (Lorg/sqlite/jni/fts5/Fts5Context;ILorg/sqlite/jni/OutputPointer/Int32;Lorg/sqlite/jni/OutputPointer/Int32;Lorg/sqlite/jni/OutputPointer/Int32;)I
*/
JNIEXPORT jint JNICALL Java_org_sqlite_jni_Fts5ExtensionApi_xInst
JNIEXPORT jint JNICALL Java_org_sqlite_jni_fts5_Fts5ExtensionApi_xInst
(JNIEnv *, jobject, jobject, jint, jobject, jobject, jobject);
/*
* Class: org_sqlite_jni_Fts5ExtensionApi
* Class: org_sqlite_jni_fts5_Fts5ExtensionApi
* Method: xInstCount
* Signature: (Lorg/sqlite/jni/Fts5Context;Lorg/sqlite/jni/OutputPointer/Int32;)I
* Signature: (Lorg/sqlite/jni/fts5/Fts5Context;Lorg/sqlite/jni/OutputPointer/Int32;)I
*/
JNIEXPORT jint JNICALL Java_org_sqlite_jni_Fts5ExtensionApi_xInstCount
JNIEXPORT jint JNICALL Java_org_sqlite_jni_fts5_Fts5ExtensionApi_xInstCount
(JNIEnv *, jobject, jobject, jobject);
/*
* Class: org_sqlite_jni_Fts5ExtensionApi
* Class: org_sqlite_jni_fts5_Fts5ExtensionApi
* Method: xPhraseCount
* Signature: (Lorg/sqlite/jni/Fts5Context;)I
* Signature: (Lorg/sqlite/jni/fts5/Fts5Context;)I
*/
JNIEXPORT jint JNICALL Java_org_sqlite_jni_Fts5ExtensionApi_xPhraseCount
JNIEXPORT jint JNICALL Java_org_sqlite_jni_fts5_Fts5ExtensionApi_xPhraseCount
(JNIEnv *, jobject, jobject);
/*
* Class: org_sqlite_jni_Fts5ExtensionApi
* Class: org_sqlite_jni_fts5_Fts5ExtensionApi
* Method: xPhraseFirst
* Signature: (Lorg/sqlite/jni/Fts5Context;ILorg/sqlite/jni/Fts5PhraseIter;Lorg/sqlite/jni/OutputPointer/Int32;Lorg/sqlite/jni/OutputPointer/Int32;)I
* Signature: (Lorg/sqlite/jni/fts5/Fts5Context;ILorg/sqlite/jni/fts5/Fts5PhraseIter;Lorg/sqlite/jni/OutputPointer/Int32;Lorg/sqlite/jni/OutputPointer/Int32;)I
*/
JNIEXPORT jint JNICALL Java_org_sqlite_jni_Fts5ExtensionApi_xPhraseFirst
JNIEXPORT jint JNICALL Java_org_sqlite_jni_fts5_Fts5ExtensionApi_xPhraseFirst
(JNIEnv *, jobject, jobject, jint, jobject, jobject, jobject);
/*
* Class: org_sqlite_jni_Fts5ExtensionApi
* Class: org_sqlite_jni_fts5_Fts5ExtensionApi
* Method: xPhraseFirstColumn
* Signature: (Lorg/sqlite/jni/Fts5Context;ILorg/sqlite/jni/Fts5PhraseIter;Lorg/sqlite/jni/OutputPointer/Int32;)I
* Signature: (Lorg/sqlite/jni/fts5/Fts5Context;ILorg/sqlite/jni/fts5/Fts5PhraseIter;Lorg/sqlite/jni/OutputPointer/Int32;)I
*/
JNIEXPORT jint JNICALL Java_org_sqlite_jni_Fts5ExtensionApi_xPhraseFirstColumn
JNIEXPORT jint JNICALL Java_org_sqlite_jni_fts5_Fts5ExtensionApi_xPhraseFirstColumn
(JNIEnv *, jobject, jobject, jint, jobject, jobject);
/*
* Class: org_sqlite_jni_Fts5ExtensionApi
* Class: org_sqlite_jni_fts5_Fts5ExtensionApi
* Method: xPhraseNext
* Signature: (Lorg/sqlite/jni/Fts5Context;Lorg/sqlite/jni/Fts5PhraseIter;Lorg/sqlite/jni/OutputPointer/Int32;Lorg/sqlite/jni/OutputPointer/Int32;)V
* Signature: (Lorg/sqlite/jni/fts5/Fts5Context;Lorg/sqlite/jni/fts5/Fts5PhraseIter;Lorg/sqlite/jni/OutputPointer/Int32;Lorg/sqlite/jni/OutputPointer/Int32;)V
*/
JNIEXPORT void JNICALL Java_org_sqlite_jni_Fts5ExtensionApi_xPhraseNext
JNIEXPORT void JNICALL Java_org_sqlite_jni_fts5_Fts5ExtensionApi_xPhraseNext
(JNIEnv *, jobject, jobject, jobject, jobject, jobject);
/*
* Class: org_sqlite_jni_Fts5ExtensionApi
* Class: org_sqlite_jni_fts5_Fts5ExtensionApi
* Method: xPhraseNextColumn
* Signature: (Lorg/sqlite/jni/Fts5Context;Lorg/sqlite/jni/Fts5PhraseIter;Lorg/sqlite/jni/OutputPointer/Int32;)V
* Signature: (Lorg/sqlite/jni/fts5/Fts5Context;Lorg/sqlite/jni/fts5/Fts5PhraseIter;Lorg/sqlite/jni/OutputPointer/Int32;)V
*/
JNIEXPORT void JNICALL Java_org_sqlite_jni_Fts5ExtensionApi_xPhraseNextColumn
JNIEXPORT void JNICALL Java_org_sqlite_jni_fts5_Fts5ExtensionApi_xPhraseNextColumn
(JNIEnv *, jobject, jobject, jobject, jobject);
/*
* Class: org_sqlite_jni_Fts5ExtensionApi
* Class: org_sqlite_jni_fts5_Fts5ExtensionApi
* Method: xPhraseSize
* Signature: (Lorg/sqlite/jni/Fts5Context;I)I
* Signature: (Lorg/sqlite/jni/fts5/Fts5Context;I)I
*/
JNIEXPORT jint JNICALL Java_org_sqlite_jni_Fts5ExtensionApi_xPhraseSize
JNIEXPORT jint JNICALL Java_org_sqlite_jni_fts5_Fts5ExtensionApi_xPhraseSize
(JNIEnv *, jobject, jobject, jint);
/*
* Class: org_sqlite_jni_Fts5ExtensionApi
* Class: org_sqlite_jni_fts5_Fts5ExtensionApi
* Method: xQueryPhrase
* Signature: (Lorg/sqlite/jni/Fts5Context;ILorg/sqlite/jni/Fts5ExtensionApi/XQueryPhraseCallback;)I
* Signature: (Lorg/sqlite/jni/fts5/Fts5Context;ILorg/sqlite/jni/fts5/Fts5ExtensionApi/XQueryPhraseCallback;)I
*/
JNIEXPORT jint JNICALL Java_org_sqlite_jni_Fts5ExtensionApi_xQueryPhrase
JNIEXPORT jint JNICALL Java_org_sqlite_jni_fts5_Fts5ExtensionApi_xQueryPhrase
(JNIEnv *, jobject, jobject, jint, jobject);
/*
* Class: org_sqlite_jni_Fts5ExtensionApi
* Class: org_sqlite_jni_fts5_Fts5ExtensionApi
* Method: xRowCount
* Signature: (Lorg/sqlite/jni/Fts5Context;Lorg/sqlite/jni/OutputPointer/Int64;)I
* Signature: (Lorg/sqlite/jni/fts5/Fts5Context;Lorg/sqlite/jni/OutputPointer/Int64;)I
*/
JNIEXPORT jint JNICALL Java_org_sqlite_jni_Fts5ExtensionApi_xRowCount
JNIEXPORT jint JNICALL Java_org_sqlite_jni_fts5_Fts5ExtensionApi_xRowCount
(JNIEnv *, jobject, jobject, jobject);
/*
* Class: org_sqlite_jni_Fts5ExtensionApi
* Class: org_sqlite_jni_fts5_Fts5ExtensionApi
* Method: xRowid
* Signature: (Lorg/sqlite/jni/Fts5Context;)J
* Signature: (Lorg/sqlite/jni/fts5/Fts5Context;)J
*/
JNIEXPORT jlong JNICALL Java_org_sqlite_jni_Fts5ExtensionApi_xRowid
JNIEXPORT jlong JNICALL Java_org_sqlite_jni_fts5_Fts5ExtensionApi_xRowid
(JNIEnv *, jobject, jobject);
/*
* Class: org_sqlite_jni_Fts5ExtensionApi
* Class: org_sqlite_jni_fts5_Fts5ExtensionApi
* Method: xSetAuxdata
* Signature: (Lorg/sqlite/jni/Fts5Context;Ljava/lang/Object;)I
* Signature: (Lorg/sqlite/jni/fts5/Fts5Context;Ljava/lang/Object;)I
*/
JNIEXPORT jint JNICALL Java_org_sqlite_jni_Fts5ExtensionApi_xSetAuxdata
JNIEXPORT jint JNICALL Java_org_sqlite_jni_fts5_Fts5ExtensionApi_xSetAuxdata
(JNIEnv *, jobject, jobject, jobject);
/*
* Class: org_sqlite_jni_Fts5ExtensionApi
* Class: org_sqlite_jni_fts5_Fts5ExtensionApi
* Method: xTokenize
* Signature: (Lorg/sqlite/jni/Fts5Context;[BLorg/sqlite/jni/Fts5/XTokenizeCallback;)I
* Signature: (Lorg/sqlite/jni/fts5/Fts5Context;[BLorg/sqlite/jni/fts5/Fts5/XTokenizeCallback;)I
*/
JNIEXPORT jint JNICALL Java_org_sqlite_jni_Fts5ExtensionApi_xTokenize
JNIEXPORT jint JNICALL Java_org_sqlite_jni_fts5_Fts5ExtensionApi_xTokenize
(JNIEnv *, jobject, jobject, jbyteArray, jobject);
/*
* Class: org_sqlite_jni_Fts5ExtensionApi
* Class: org_sqlite_jni_fts5_Fts5ExtensionApi
* Method: xUserData
* Signature: (Lorg/sqlite/jni/Fts5Context;)Ljava/lang/Object;
* Signature: (Lorg/sqlite/jni/fts5/Fts5Context;)Ljava/lang/Object;
*/
JNIEXPORT jobject JNICALL Java_org_sqlite_jni_Fts5ExtensionApi_xUserData
JNIEXPORT jobject JNICALL Java_org_sqlite_jni_fts5_Fts5ExtensionApi_xUserData
(JNIEnv *, jobject, jobject);
#ifdef __cplusplus
@ -2270,29 +2270,29 @@ JNIEXPORT jobject JNICALL Java_org_sqlite_jni_Fts5ExtensionApi_xUserData
#endif
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class org_sqlite_jni_fts5_api */
/* Header for class org_sqlite_jni_fts5_fts5_api */
#ifndef _Included_org_sqlite_jni_fts5_api
#define _Included_org_sqlite_jni_fts5_api
#ifndef _Included_org_sqlite_jni_fts5_fts5_api
#define _Included_org_sqlite_jni_fts5_fts5_api
#ifdef __cplusplus
extern "C" {
#endif
#undef org_sqlite_jni_fts5_api_iVersion
#define org_sqlite_jni_fts5_api_iVersion 2L
#undef org_sqlite_jni_fts5_fts5_api_iVersion
#define org_sqlite_jni_fts5_fts5_api_iVersion 2L
/*
* Class: org_sqlite_jni_fts5_api
* Class: org_sqlite_jni_fts5_fts5_api
* Method: getInstanceForDb
* Signature: (Lorg/sqlite/jni/sqlite3;)Lorg/sqlite/jni/fts5_api;
* Signature: (Lorg/sqlite/jni/sqlite3;)Lorg/sqlite/jni/fts5/fts5_api;
*/
JNIEXPORT jobject JNICALL Java_org_sqlite_jni_fts5_1api_getInstanceForDb
JNIEXPORT jobject JNICALL Java_org_sqlite_jni_fts5_fts5_1api_getInstanceForDb
(JNIEnv *, jclass, jobject);
/*
* Class: org_sqlite_jni_fts5_api
* Class: org_sqlite_jni_fts5_fts5_api
* Method: xCreateFunction
* Signature: (Ljava/lang/String;Ljava/lang/Object;Lorg/sqlite/jni/fts5_extension_function;)I
* Signature: (Ljava/lang/String;Ljava/lang/Object;Lorg/sqlite/jni/fts5/fts5_extension_function;)I
*/
JNIEXPORT jint JNICALL Java_org_sqlite_jni_fts5_1api_xCreateFunction
JNIEXPORT jint JNICALL Java_org_sqlite_jni_fts5_fts5_1api_xCreateFunction
(JNIEnv *, jobject, jstring, jobject, jobject);
#ifdef __cplusplus
@ -2301,19 +2301,19 @@ JNIEXPORT jint JNICALL Java_org_sqlite_jni_fts5_1api_xCreateFunction
#endif
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class org_sqlite_jni_fts5_tokenizer */
/* Header for class org_sqlite_jni_fts5_fts5_tokenizer */
#ifndef _Included_org_sqlite_jni_fts5_tokenizer
#define _Included_org_sqlite_jni_fts5_tokenizer
#ifndef _Included_org_sqlite_jni_fts5_fts5_tokenizer
#define _Included_org_sqlite_jni_fts5_fts5_tokenizer
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: org_sqlite_jni_fts5_tokenizer
* Class: org_sqlite_jni_fts5_fts5_tokenizer
* Method: xTokenize
* Signature: (Lorg/sqlite/jni/Fts5Tokenizer;I[BLorg/sqlite/jni/Fts5/XTokenizeCallback;)I
* Signature: (Lorg/sqlite/jni/fts5/Fts5Tokenizer;I[BLorg/sqlite/jni/fts5/Fts5/XTokenizeCallback;)I
*/
JNIEXPORT jint JNICALL Java_org_sqlite_jni_fts5_1tokenizer_xTokenize
JNIEXPORT jint JNICALL Java_org_sqlite_jni_fts5_fts5_1tokenizer_xTokenize
(JNIEnv *, jobject, jobject, jint, jbyteArray, jobject);
#ifdef __cplusplus

View File

@ -79,33 +79,33 @@ public class Tester1 implements Runnable {
static final Metrics metrics = new Metrics();
public synchronized static void outln(){
public static synchronized void outln(){
if( !quietMode ){
System.out.println("");
}
}
public synchronized static void outPrefix(){
public static synchronized void outPrefix(){
if( !quietMode ){
System.out.print(Thread.currentThread().getName()+": ");
}
}
public synchronized static void outln(Object val){
public static synchronized void outln(Object val){
if( !quietMode ){
outPrefix();
System.out.println(val);
}
}
public synchronized static void out(Object val){
public static synchronized void out(Object val){
if( !quietMode ){
System.out.print(val);
}
}
@SuppressWarnings("unchecked")
public synchronized static void out(Object... vals){
public static synchronized void out(Object... vals){
if( !quietMode ){
outPrefix();
for(Object v : vals) out(v);
@ -113,20 +113,21 @@ public class Tester1 implements Runnable {
}
@SuppressWarnings("unchecked")
public synchronized static void outln(Object... vals){
public static synchronized void outln(Object... vals){
if( !quietMode ){
out(vals); out("\n");
}
}
static volatile int affirmCount = 0;
public synchronized static void affirm(Boolean v, String comment){
public static synchronized int affirm(Boolean v, String comment){
++affirmCount;
if( false ) assert( v /* prefer assert over exception if it's enabled because
the JNI layer sometimes has to suppress exceptions,
so they might be squelched on their way back to the
top. */);
if( !v ) throw new RuntimeException(comment);
return affirmCount;
}
public static void affirm(Boolean v){
@ -138,7 +139,7 @@ public class Tester1 implements Runnable {
affirm(sqlite3_libversion_number() == SQLITE_VERSION_NUMBER);
}
static sqlite3 createNewDb(){
public static sqlite3 createNewDb(){
final OutputPointer.sqlite3 out = new OutputPointer.sqlite3();
int rc = sqlite3_open(":memory:", out);
++metrics.dbOpen;
@ -156,11 +157,11 @@ public class Tester1 implements Runnable {
return db;
}
static void execSql(sqlite3 db, String[] sql){
public static void execSql(sqlite3 db, String[] sql){
execSql(db, String.join("", sql));
}
static int execSql(sqlite3 db, boolean throwOnError, String sql){
public static int execSql(sqlite3 db, boolean throwOnError, String sql){
OutputPointer.Int32 oTail = new OutputPointer.Int32();
final byte[] sqlUtf8 = sql.getBytes(StandardCharsets.UTF_8);
int pos = 0, n = 1;
@ -201,11 +202,11 @@ public class Tester1 implements Runnable {
return rc;
}
static void execSql(sqlite3 db, String sql){
public static void execSql(sqlite3 db, String sql){
execSql(db, true, sql);
}
static sqlite3_stmt prepare(sqlite3 db, boolean throwOnError, String sql){
public static sqlite3_stmt prepare(sqlite3 db, boolean throwOnError, String sql){
final OutputPointer.sqlite3_stmt outStmt = new OutputPointer.sqlite3_stmt();
int rc = sqlite3_prepare_v2(db, sql, outStmt);
if( throwOnError ){
@ -219,7 +220,7 @@ public class Tester1 implements Runnable {
return rv;
}
static sqlite3_stmt prepare(sqlite3 db, String sql){
public static sqlite3_stmt prepare(sqlite3 db, String sql){
return prepare(db, true, sql);
}
@ -1275,10 +1276,13 @@ public class Tester1 implements Runnable {
}
Exception err = null;
try {
Class t = Class.forName("org.sqlite.jni.TesterFts5");
Class t = Class.forName("org.sqlite.jni.fts5.TesterFts5");
java.lang.reflect.Constructor ctor = t.getConstructor();
ctor.setAccessible(true);
final long timeStart = System.currentTimeMillis();
ctor.newInstance() /* will run all tests */;
final long timeEnd = System.currentTimeMillis();
outln("FTS5 Tests done in ",(timeEnd - timeStart),"ms");
}catch(ClassNotFoundException e){
outln("FTS5 classes not loaded.");
err = e;

View File

@ -11,7 +11,7 @@
*************************************************************************
** This file is part of the JNI bindings for the sqlite3 C API.
*/
package org.sqlite.jni;
package org.sqlite.jni.fts5;
/**
INCOMPLETE AND COMPLETELY UNTESTED.

View File

@ -11,7 +11,8 @@
*************************************************************************
** This file is part of the JNI bindings for the sqlite3 C API.
*/
package org.sqlite.jni;
package org.sqlite.jni.fts5;
import org.sqlite.jni.*;
/**
A wrapper for communicating C-level (Fts5Context*) instances with

View File

@ -11,8 +11,9 @@
*************************************************************************
** This file is part of the JNI bindings for the sqlite3 C API.
*/
package org.sqlite.jni;
package org.sqlite.jni.fts5;
import java.nio.charset.StandardCharsets;
import org.sqlite.jni.*;
import org.sqlite.jni.annotation.*;
/**

View File

@ -11,7 +11,8 @@
*************************************************************************
** This file is part of the JNI bindings for the sqlite3 C API.
*/
package org.sqlite.jni;
package org.sqlite.jni.fts5;
import org.sqlite.jni.NativePointerHolder;
/**
A wrapper for C-level Fts5PhraseIter. They are only modified and

View File

@ -11,7 +11,8 @@
*************************************************************************
** This file is part of the JNI bindings for the sqlite3 C API.
*/
package org.sqlite.jni;
package org.sqlite.jni.fts5;
import org.sqlite.jni.NativePointerHolder;
/**
INCOMPLETE AND COMPLETELY UNTESTED.

View File

@ -11,9 +11,10 @@
*************************************************************************
** This file contains a set of tests for the sqlite3 JNI bindings.
*/
package org.sqlite.jni;
package org.sqlite.jni.fts5;
import static org.sqlite.jni.SQLite3Jni.*;
import static org.sqlite.jni.Tester1.*;
import org.sqlite.jni.*;
public class TesterFts5 {
@ -35,8 +36,7 @@ public class TesterFts5 {
});
final String pUserData = "This is pUserData";
ValueHolder<Boolean> xDestroyCalled = new ValueHolder<>(false);
ValueHolder<Integer> xFuncCount = new ValueHolder<>(0);
final int outputs[] = {0, 0};
final fts5_extension_function func = new fts5_extension_function(){
@Override public void call(Fts5ExtensionApi ext, Fts5Context fCx,
sqlite3_context pCx, sqlite3_value argv[]){
@ -58,42 +58,29 @@ public class TesterFts5 {
rc = ext.xColumnTotalSize(fCx, i, colTotalSz);
affirm( 0==rc );
}
++xFuncCount.value;
++outputs[0];
}
public void xDestroy(){
xDestroyCalled.value = true;
outputs[1] = 1;
}
};
int rc = fApi.xCreateFunction("myaux", pUserData, func);
affirm( 0==rc );
affirm( 0==xFuncCount.value );
affirm( 0==outputs[0] );
execSql(db, "select myaux(ft,a,b) from ft;");
affirm( 2==xFuncCount.value );
affirm( !xDestroyCalled.value );
affirm( 2==outputs[0] );
affirm( 0==outputs[1] );
sqlite3_close_v2(db);
affirm( xDestroyCalled.value );
affirm( 1==outputs[1] );
}
private void runTests(){
private static synchronized void runTests(){
test1();
}
public TesterFts5(boolean verbose){
if(verbose){
synchronized(Tester1.class) {
final long timeStart = System.currentTimeMillis();
final int oldAffirmCount = Tester1.affirmCount;
runTests();
final int affirmCount = Tester1.affirmCount - oldAffirmCount;
final long timeEnd = System.currentTimeMillis();
outln("FTS5 Tests done. Assertions checked = ",affirmCount,
", Total time = ",(timeEnd - timeStart),"ms");
}
}else{
runTests();
}
public TesterFts5(){
runTests();
}
public TesterFts5(){ this(true); }
}

View File

@ -11,8 +11,9 @@
*************************************************************************
** This file is part of the JNI bindings for the sqlite3 C API.
*/
package org.sqlite.jni;
package org.sqlite.jni.fts5;
import org.sqlite.jni.annotation.*;
import org.sqlite.jni.*;
/**
INCOMPLETE AND COMPLETELY UNTESTED.

View File

@ -11,7 +11,9 @@
*************************************************************************
** This file is part of the JNI bindings for the sqlite3 C API.
*/
package org.sqlite.jni;
package org.sqlite.jni.fts5;
import org.sqlite.jni.sqlite3_context;
import org.sqlite.jni.sqlite3_value;
/**
JNI-level wrapper for C's fts5_extension_function type.

View File

@ -11,8 +11,9 @@
*************************************************************************
** This file is part of the JNI bindings for the sqlite3 C API.
*/
package org.sqlite.jni;
import org.sqlite.jni.annotation.*;
package org.sqlite.jni.fts5;
import org.sqlite.jni.NativePointerHolder;
import org.sqlite.jni.annotation.NotNull;
/**
INCOMPLETE AND COMPLETELY UNTESTED.