1
0
mirror of https://github.com/sqlite/sqlite.git synced 2025-07-29 08:01:23 +03:00

Minor JNI cleanups.

FossilOrigin-Name: b88910aaaaaaa0936974379bb3eb8a5a3a634395b14e67cc9030f8a520f471f1
This commit is contained in:
stephan
2023-08-21 23:45:19 +00:00
parent 1089277105
commit 484f9bed4e
7 changed files with 35 additions and 26 deletions

View File

@ -3735,6 +3735,7 @@ JDECLFtsApi(jint,xCreateFunction)(JENV_OSELF, jstring jName,
int rc;
char const * zName;
Fts5JniAux * pAux;
assert(pApi);
zName = JSTR_TOC(jName);
if(!zName) return SQLITE_NOMEM;
@ -3756,15 +3757,15 @@ JDECLFtsApi(jint,xCreateFunction)(JENV_OSELF, jstring jName,
}
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);
@ -3777,7 +3778,7 @@ static void s3jni_fts5AuxData_xDestroy(void *x){
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 ){
@ -3966,6 +3967,7 @@ JDECLFtsXA(jint,xQueryPhrase)(JENV_OSELF,jobject jFcx, jint iPhrase,
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;
@ -3997,7 +3999,7 @@ JDECLFtsXA(jlong,xRowid)(JENV_OSELF,jobject jCtx){
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){
@ -4010,7 +4012,7 @@ JDECLFtsXA(int,xSetAuxdata)(JENV_OSELF,jobject jCtx, jobject jAux){
pAux->env = env;
pAux->jObj = REF_G(jAux);
rc = fext->xSetAuxdata(PtrGet_Fts5Context(jCtx), pAux,
s3jni_fts5AuxData_xDestroy);
S3JniFts5AuxData_xDestroy);
return rc;
}
@ -4055,6 +4057,7 @@ static jint s3jni_fts5_xTokenize(JENV_OSELF, S3NphRef const *pRef,
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;

View File

@ -27,7 +27,7 @@ public final class Fts5 {
//! 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;

View File

@ -82,5 +82,5 @@ public final class Fts5ExtensionApi extends NativePointerHolder<Fts5ExtensionApi
public native Object xUserData(Fts5Context cx);
//^^^ returns the pointer passed as the 3rd arg to the C-level
// fts5_api::xCreateFunction.
// fts5_api::xCreateFunction().
}

View File

@ -1245,18 +1245,23 @@ public class Tester1 implements Runnable {
++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();
}

View File

@ -73,12 +73,13 @@ public class TesterFts5 {
}
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");
}