int rc;
char const * zName;
Fts5JniAux * pAux;
+
assert(pApi);
zName = JSTR_TOC(jName);
if(!zName) return SQLITE_NOMEM;
}
-typedef struct s3jni_fts5AuxData s3jni_fts5AuxData;
-struct s3jni_fts5AuxData {
+typedef struct S3JniFts5AuxData S3JniFts5AuxData;
+struct S3JniFts5AuxData {
JNIEnv *env;
jobject jObj;
};
-static void s3jni_fts5AuxData_xDestroy(void *x){
+static void S3JniFts5AuxData_xDestroy(void *x){
if(x){
- s3jni_fts5AuxData * const p = x;
+ S3JniFts5AuxData * const p = x;
if(p->jObj){
JNIEnv *env = p->env;
s3jni_call_xDestroy(env, p->jObj, 0);
JDECLFtsXA(jobject,xGetAuxdata)(JENV_OSELF,jobject jCtx, jboolean bClear){
Fts5ExtDecl;
jobject rv = 0;
- s3jni_fts5AuxData * const pAux = fext->xGetAuxdata(PtrGet_Fts5Context(jCtx), bClear);
+ S3JniFts5AuxData * const pAux = fext->xGetAuxdata(PtrGet_Fts5Context(jCtx), bClear);
if(pAux){
if(bClear){
if( pAux->jObj ){
S3JniEnv * const jc = S3JniGlobal_env_cache(env);
struct s3jni_xQueryPhraseState s;
jclass klazz = jCallback ? (*env)->GetObjectClass(env, jCallback) : NULL;
+
if( !klazz ) return SQLITE_MISUSE;
s.env = env;
s.jc = jc;
JDECLFtsXA(int,xSetAuxdata)(JENV_OSELF,jobject jCtx, jobject jAux){
Fts5ExtDecl;
int rc;
- s3jni_fts5AuxData * pAux;
+ S3JniFts5AuxData * pAux;
pAux = sqlite3_malloc(sizeof(*pAux));
if(!pAux){
if(jAux){
pAux->env = env;
pAux->jObj = REF_G(jAux);
rc = fext->xSetAuxdata(PtrGet_Fts5Context(jCtx), pAux,
- s3jni_fts5AuxData_xDestroy);
+ S3JniFts5AuxData_xDestroy);
return rc;
}
jbyte * const pText = jCallback ? JBA_TOC(jbaText) : 0;
jsize nText = pText ? (*env)->GetArrayLength(env, jbaText) : 0;
jclass const klazz = jCallback ? (*env)->GetObjectClass(env, jCallback) : NULL;
+
if( !klazz ) return SQLITE_MISUSE;
memset(&s, 0, sizeof(s));
s.env = env;
//! Callback type for use with xTokenize() variants
public static interface xTokenizeCallback {
- int xToken(int tFlags, byte txt[], int iStart, int iEnd);
+ int xToken(int tFlags, byte[] txt, int iStart, int iEnd);
}
public static final int FTS5_TOKENIZE_QUERY = 0x0001;
public native Object xUserData(Fts5Context cx);
//^^^ returns the pointer passed as the 3rd arg to the C-level
- // fts5_api::xCreateFunction.
+ // fts5_api::xCreateFunction().
}
++nLoop;
outln("Running loop #",nLoop," over ",nThread," threads.");
for( int i = 0; i < nThread; ++i ){
- ex.submit( new Tester1(i) );
+ ex.submit( new Tester1(i), i );
}
ex.shutdown();
- ex.awaitTermination(nThread*200, java.util.concurrent.TimeUnit.MILLISECONDS);
- ex.shutdownNow();
+ try {
+ ex.awaitTermination(nThread*200, java.util.concurrent.TimeUnit.MILLISECONDS);
+ ex.shutdownNow();
+ } catch (InterruptedException ie) {
+ ex.shutdownNow();
+ Thread.currentThread().interrupt();
+ }
}
}
+
final long timeEnd = System.currentTimeMillis();
outln("Tests done. Metrics:");
outln("\tAssertions checked: "+affirmCount);
outln("\tDatabases opened: "+metrics.dbOpen);
-
if( doSomethingForDev ){
sqlite3_do_something_for_developer();
}
}
public TesterFts5(){
- int oldAffirmCount = Tester1.affirmCount;
final long timeStart = System.currentTimeMillis();
+ final int oldAffirmCount = Tester1.affirmCount;
test1();
+ final int affirmCount = Tester1.affirmCount - oldAffirmCount;
final long timeEnd = System.currentTimeMillis();
outln("FTS5 Tests done. Metrics:");
- outln("\tAssertions checked: "+Tester1.affirmCount);
+ outln("\tAssertions checked: ",affirmCount);
outln("\tTotal time = "
+(timeEnd - timeStart)+"ms");
}
-C JNI\scleanups.
-D 2023-08-19T14:49:08.030
+C Minor\sJNI\scleanups.
+D 2023-08-21T23:45:19.079
F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724
F ext/jni/GNUmakefile 4849b0ac41c3a92777aebf0ec3d51c2be7c78d3ea9b91ece03ade6f9fa13d99a
F ext/jni/README.md 975b35173debbbf3a4ab7166e14d2ffa2bacff9b6850414f09cc919805e81ba4
F ext/jni/jar-dist.make 9a03d10dbb5a74c724bfec4b76fd9e4c9865cbbc858d731cb48f38ac897d73a3
-F ext/jni/src/c/sqlite3-jni.c fc9ab59b3d966219f20fdc93fae7bc5ce19900f7c979b84489be4384c8532120
+F ext/jni/src/c/sqlite3-jni.c 77ff2a7d608737aef5734d60881cd167d4b5916bcca8669067aa13afd641ba6e
F ext/jni/src/c/sqlite3-jni.h 8b0ab1a3f0f92b75d4ff50db4a88b66a137cfb561268eb15bb3993ed174dbb74
F ext/jni/src/org/sqlite/jni/Authorizer.java 1308988f7f40579ea0e4deeaec3c6be971630566bd021c31367fe3f5140db892
F ext/jni/src/org/sqlite/jni/AutoExtension.java 18e83f6f463e306df60b2dceb65247d32af1f78af4bbbae9155411a8c6cdb093
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 13844685231e8b4840a706db3bed84d5dfcf15be0ae7e809eac40420dba24901
+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/Fts5ExtensionApi.java 7ecfce8075381999fcdfb94467535be9c63df0332e63bf57cbcb072036e1d113
+F ext/jni/src/org/sqlite/jni/Fts5ExtensionApi.java 10cb2e0eb4dc5cf4241a7ccc0442a680f14a3ce6ecbb726552f2b5e026e521e0
F ext/jni/src/org/sqlite/jni/Fts5Function.java 65cde7151e441fee012250a5e03277de7babcd11a0c308a832b7940574259bcc
F ext/jni/src/org/sqlite/jni/Fts5PhraseIter.java 6642beda341c0b1b46af4e2d7f6f9ab03a7aede43277b2c92859176d6bce3be9
F ext/jni/src/org/sqlite/jni/Fts5Tokenizer.java 91489893596b6528c0df5cd7180bd5b55809c26e2b797fb321dfcdbc1298c060
F ext/jni/src/org/sqlite/jni/RollbackHook.java b04c8abcc6ade44a8a57129e33765793f69df0ba909e49ba18d73f4268d92564
F ext/jni/src/org/sqlite/jni/SQLFunction.java 8c1ad92c35bcc1b2f7256cf6e229b31340ed6d1a404d487f0a9adb28ba7fc332
F ext/jni/src/org/sqlite/jni/SQLite3Jni.java 5c469585946b63592cafe134b01af0b9144a12131f22ea352e12f4c3ec70efb2
-F ext/jni/src/org/sqlite/jni/Tester1.java d1e59c7601100e60f5467e52a04f032881344246436601912eafc5f61aeea134
-F ext/jni/src/org/sqlite/jni/TesterFts5.java bd4b6316ef83e2c85b5f1f9729383c736c1771652339d1135493b5217c9d1bb3
+F ext/jni/src/org/sqlite/jni/Tester1.java a3eef17c60b4770c6fcf70d6efc2273e74470f7c8067c0748d12f393bf260d34
+F ext/jni/src/org/sqlite/jni/TesterFts5.java c729d5b3cb91888b7e2a3a3ef450852f184697df78721574f6c0bf9043e4b84c
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 vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc
F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e
F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0
-P 8254479c6ff1ea3cc9e56de1698db8405c03da90b9bf4c401182e47e0842baf8
-R 846f6f71bef64f8d4f48e59243174d3b
+P 0a84131008a2e7886dac64a3545dea634811f6eac2b90885ec9c61ed1e6544c3
+R e61cca732e3141bc7655ea7dcc403579
U stephan
-Z 63d30481f30daf5779abda92ef1829f2
+Z 1c9a32335d26ec39640641e263699a74
# Remove this line to create a well-formed Fossil manifest.
-0a84131008a2e7886dac64a3545dea634811f6eac2b90885ec9c61ed1e6544c3
\ No newline at end of file
+b88910aaaaaaa0936974379bb3eb8a5a3a634395b14e67cc9030f8a520f471f1
\ No newline at end of file