mirror of
https://github.com/sqlite/sqlite.git
synced 2025-07-30 19:03:16 +03:00
Internal API renaming for clarity's sake.
FossilOrigin-Name: 911e4fc5aaf9478214095a65f74af3ebca883922c36cf7a8d911116c42cf9de8
This commit is contained in:
@ -329,7 +329,8 @@ enum {
|
|||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
Cache entry for NativePointerHolder lookups.
|
Cache entry for NativePointerHolder subclasses and OutputPointer
|
||||||
|
types.
|
||||||
*/
|
*/
|
||||||
typedef struct S3JniNphCache S3JniNphCache;
|
typedef struct S3JniNphCache S3JniNphCache;
|
||||||
struct S3JniNphCache {
|
struct S3JniNphCache {
|
||||||
@ -358,8 +359,8 @@ struct S3JniNphCache {
|
|||||||
|
|
||||||
Whereas we cache new refs for each thread.
|
Whereas we cache new refs for each thread.
|
||||||
*/
|
*/
|
||||||
typedef struct S3JniEnvCache S3JniEnvCache;
|
typedef struct S3JniEnv S3JniEnv;
|
||||||
struct S3JniEnvCache {
|
struct S3JniEnv {
|
||||||
JNIEnv *env /* env in which this cache entry was created */;
|
JNIEnv *env /* env in which this cache entry was created */;
|
||||||
//! The various refs to global classes might be cacheable a single
|
//! The various refs to global classes might be cacheable a single
|
||||||
// time globally. Information online seems inconsistent on that
|
// time globally. Information online seems inconsistent on that
|
||||||
@ -377,20 +378,15 @@ struct S3JniEnvCache {
|
|||||||
jobject jFtsExt /* Global ref to Java singleton for the
|
jobject jFtsExt /* Global ref to Java singleton for the
|
||||||
Fts5ExtensionApi instance. */;
|
Fts5ExtensionApi instance. */;
|
||||||
struct {
|
struct {
|
||||||
jclass klazz;
|
jclass klazz /* Global ref to the Fts5Phrase iter class */;
|
||||||
jfieldID fidA;
|
jfieldID fidA /* Fts5Phrase::a member */;
|
||||||
jfieldID fidB;
|
jfieldID fidB /* Fts5Phrase::b member */;
|
||||||
} jPhraseIter;
|
} jPhraseIter;
|
||||||
#endif
|
#endif
|
||||||
S3JniEnvCache * pPrev /* Previous entry in the linked list */;
|
S3JniEnv * pPrev /* Previous entry in the linked list */;
|
||||||
S3JniEnvCache * pNext /* Next entry in the linked list */;
|
S3JniEnv * pNext /* Next entry in the linked list */;
|
||||||
/** TODO?: S3JniNphCache *pNphHit;
|
/**
|
||||||
|
Cache of Java refs/IDs for NativePointerHolder subclasses.
|
||||||
and always set it to the most recent cache search result.
|
|
||||||
|
|
||||||
The intent would be to help fast-track cache lookups and would
|
|
||||||
speed up, e.g., the sqlite3_value-to-Java-array loop in a
|
|
||||||
multi-threaded app.
|
|
||||||
*/
|
*/
|
||||||
S3JniNphCache nph[NphCache_SIZE];
|
S3JniNphCache nph[NphCache_SIZE];
|
||||||
};
|
};
|
||||||
@ -493,8 +489,8 @@ static struct {
|
|||||||
*/
|
*/
|
||||||
JavaVM * jvm;
|
JavaVM * jvm;
|
||||||
struct {
|
struct {
|
||||||
S3JniEnvCache * aHead /* Linked list of in-use instances */;
|
S3JniEnv * aHead /* Linked list of in-use instances */;
|
||||||
S3JniEnvCache * aFree /* Linked list of free instances */;
|
S3JniEnv * aFree /* Linked list of free instances */;
|
||||||
sqlite3_mutex * mutex /* mutex for aHead and aFree */;
|
sqlite3_mutex * mutex /* mutex for aHead and aFree */;
|
||||||
void const * locker /* env mutex is held on this object's behalf
|
void const * locker /* env mutex is held on this object's behalf
|
||||||
(used only for sanity checking). */;
|
(used only for sanity checking). */;
|
||||||
@ -607,8 +603,8 @@ static void * s3jni_malloc(JNIEnv * const env, size_t n){
|
|||||||
insofar as possible. Calls (*env)->FatalError() if allocation of
|
insofar as possible. Calls (*env)->FatalError() if allocation of
|
||||||
an entry fails. That's hypothetically possible but "shouldn't happen."
|
an entry fails. That's hypothetically possible but "shouldn't happen."
|
||||||
*/
|
*/
|
||||||
static S3JniEnvCache * S3JniGlobal_env_cache(JNIEnv * const env){
|
static S3JniEnv * S3JniGlobal_env_cache(JNIEnv * const env){
|
||||||
struct S3JniEnvCache * row;
|
struct S3JniEnv * row;
|
||||||
MUTEX_ENTER_ENV;
|
MUTEX_ENTER_ENV;
|
||||||
row = S3JniGlobal.envCache.aHead;
|
row = S3JniGlobal.envCache.aHead;
|
||||||
for( ; row; row = row->pNext ){
|
for( ; row; row = row->pNext ){
|
||||||
@ -625,7 +621,7 @@ static S3JniEnvCache * S3JniGlobal_env_cache(JNIEnv * const env){
|
|||||||
S3JniGlobal.envCache.aFree = row->pNext;
|
S3JniGlobal.envCache.aFree = row->pNext;
|
||||||
if( row->pNext ) row->pNext->pPrev = 0;
|
if( row->pNext ) row->pNext->pPrev = 0;
|
||||||
}else{
|
}else{
|
||||||
row = sqlite3_malloc(sizeof(S3JniEnvCache));
|
row = sqlite3_malloc(sizeof(S3JniEnv));
|
||||||
OOM_CHECK(row);
|
OOM_CHECK(row);
|
||||||
}
|
}
|
||||||
memset(row, 0, sizeof(*row));
|
memset(row, 0, sizeof(*row));
|
||||||
@ -721,7 +717,7 @@ static jbyteArray s3jni_new_jbyteArray(JNIEnv * const env, const unsigned char *
|
|||||||
standard UTF-8 to a Java string, but JNI offers only algorithms for
|
standard UTF-8 to a Java string, but JNI offers only algorithms for
|
||||||
working with MUTF-8, not UTF-8.
|
working with MUTF-8, not UTF-8.
|
||||||
*/
|
*/
|
||||||
static jstring s3jni_utf8_to_jstring(S3JniEnvCache * const jc,
|
static jstring s3jni_utf8_to_jstring(S3JniEnv * const jc,
|
||||||
const char * const z, int n){
|
const char * const z, int n){
|
||||||
jstring rv = NULL;
|
jstring rv = NULL;
|
||||||
JNIEnv * const env = jc->env;
|
JNIEnv * const env = jc->env;
|
||||||
@ -758,7 +754,7 @@ static jstring s3jni_utf8_to_jstring(S3JniEnvCache * const jc,
|
|||||||
The returned memory is allocated from sqlite3_malloc() and
|
The returned memory is allocated from sqlite3_malloc() and
|
||||||
ownership is transferred to the caller.
|
ownership is transferred to the caller.
|
||||||
*/
|
*/
|
||||||
static char * s3jni_jstring_to_utf8(S3JniEnvCache * const jc,
|
static char * s3jni_jstring_to_utf8(S3JniEnv * const jc,
|
||||||
jstring jstr, int *nLen){
|
jstring jstr, int *nLen){
|
||||||
JNIEnv * const env = jc->env;
|
JNIEnv * const env = jc->env;
|
||||||
jbyteArray jba;
|
jbyteArray jba;
|
||||||
@ -813,7 +809,7 @@ static jstring s3jni_text16_to_jstring(JNIEnv * const env, const void * const p,
|
|||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
static char * s3jni_exception_error_msg(JNIEnv * const env, jthrowable jx ){
|
static char * s3jni_exception_error_msg(JNIEnv * const env, jthrowable jx ){
|
||||||
S3JniEnvCache * const jc = S3JniGlobal_env_cache(env);
|
S3JniEnv * const jc = S3JniGlobal_env_cache(env);
|
||||||
jmethodID mid;
|
jmethodID mid;
|
||||||
jstring msg;
|
jstring msg;
|
||||||
char * zMsg;
|
char * zMsg;
|
||||||
@ -981,7 +977,7 @@ static void S3JniDb_free_for_env(JNIEnv *env){
|
|||||||
what would otherwise be stale references.
|
what would otherwise be stale references.
|
||||||
*/
|
*/
|
||||||
static int S3JniGlobal_env_uncache(JNIEnv * const env){
|
static int S3JniGlobal_env_uncache(JNIEnv * const env){
|
||||||
struct S3JniEnvCache * row;
|
struct S3JniEnv * row;
|
||||||
int i;
|
int i;
|
||||||
assert( 0!=S3JniGlobal.envCache.mutex && "Env mutex misuse.");
|
assert( 0!=S3JniGlobal.envCache.mutex && "Env mutex misuse.");
|
||||||
row = S3JniGlobal.envCache.aHead;
|
row = S3JniGlobal.envCache.aHead;
|
||||||
@ -1011,7 +1007,7 @@ static int S3JniGlobal_env_uncache(JNIEnv * const env){
|
|||||||
for( i = 0; i < NphCache_SIZE; ++i ){
|
for( i = 0; i < NphCache_SIZE; ++i ){
|
||||||
S3JniNphCache_clear(env, &row->nph[i]);
|
S3JniNphCache_clear(env, &row->nph[i]);
|
||||||
}
|
}
|
||||||
memset(row, 0, sizeof(S3JniEnvCache));
|
memset(row, 0, sizeof(S3JniEnv));
|
||||||
row->pNext = S3JniGlobal.envCache.aFree;
|
row->pNext = S3JniGlobal.envCache.aFree;
|
||||||
if( row->pNext ) row->pNext->pPrev = row;
|
if( row->pNext ) row->pNext->pPrev = row;
|
||||||
S3JniGlobal.envCache.aFree = row;
|
S3JniGlobal.envCache.aFree = row;
|
||||||
@ -1054,7 +1050,7 @@ static S3JniNphCache * S3JniGlobal_nph_cache(JNIEnv * const env, const char *zCl
|
|||||||
because all nph entries are per-thread and envCache.mutex already
|
because all nph entries are per-thread and envCache.mutex already
|
||||||
guards the fetching of envRow.
|
guards the fetching of envRow.
|
||||||
*/
|
*/
|
||||||
struct S3JniEnvCache * const envRow = S3JniGlobal_env_cache(env);
|
struct S3JniEnv * const envRow = S3JniGlobal_env_cache(env);
|
||||||
S3JniNphCache * freeSlot = 0;
|
S3JniNphCache * freeSlot = 0;
|
||||||
S3JniNphCache * pCache = 0;
|
S3JniNphCache * pCache = 0;
|
||||||
int i;
|
int i;
|
||||||
@ -1438,6 +1434,7 @@ static void OutputPointer_set_ByteArray(JNIEnv * const env, jobject const jOut,
|
|||||||
EXCEPTION_IS_FATAL("Cannot set OutputPointer.ByteArray.value");
|
EXCEPTION_IS_FATAL("Cannot set OutputPointer.ByteArray.value");
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Sets the value property of the OutputPointer.String jOut object
|
/* Sets the value property of the OutputPointer.String jOut object
|
||||||
to v. */
|
to v. */
|
||||||
static void OutputPointer_set_String(JNIEnv * const env, jobject const jOut,
|
static void OutputPointer_set_String(JNIEnv * const env, jobject const jOut,
|
||||||
@ -1964,7 +1961,7 @@ JDECL(jint,1auto_1extension)(JENV_OSELF, jobject jAutoExt){
|
|||||||
return ax ? 0 : SQLITE_NOMEM;
|
return ax ? 0 : SQLITE_NOMEM;
|
||||||
}
|
}
|
||||||
|
|
||||||
FIXME_THREADING(S3JniEnvCache)
|
FIXME_THREADING(S3JniEnv)
|
||||||
JDECL(jint,1bind_1blob)(JENV_CSELF, jobject jpStmt,
|
JDECL(jint,1bind_1blob)(JENV_CSELF, jobject jpStmt,
|
||||||
jint ndx, jbyteArray baData, jint nMax){
|
jint ndx, jbyteArray baData, jint nMax){
|
||||||
int rc;
|
int rc;
|
||||||
@ -1979,31 +1976,31 @@ JDECL(jint,1bind_1blob)(JENV_CSELF, jobject jpStmt,
|
|||||||
return (jint)rc;
|
return (jint)rc;
|
||||||
}
|
}
|
||||||
|
|
||||||
FIXME_THREADING(S3JniEnvCache)
|
FIXME_THREADING(S3JniEnv)
|
||||||
JDECL(jint,1bind_1double)(JENV_CSELF, jobject jpStmt,
|
JDECL(jint,1bind_1double)(JENV_CSELF, jobject jpStmt,
|
||||||
jint ndx, jdouble val){
|
jint ndx, jdouble val){
|
||||||
return (jint)sqlite3_bind_double(PtrGet_sqlite3_stmt(jpStmt), (int)ndx, (double)val);
|
return (jint)sqlite3_bind_double(PtrGet_sqlite3_stmt(jpStmt), (int)ndx, (double)val);
|
||||||
}
|
}
|
||||||
|
|
||||||
FIXME_THREADING(S3JniEnvCache)
|
FIXME_THREADING(S3JniEnv)
|
||||||
JDECL(jint,1bind_1int)(JENV_CSELF, jobject jpStmt,
|
JDECL(jint,1bind_1int)(JENV_CSELF, jobject jpStmt,
|
||||||
jint ndx, jint val){
|
jint ndx, jint val){
|
||||||
return (jint)sqlite3_bind_int(PtrGet_sqlite3_stmt(jpStmt), (int)ndx, (int)val);
|
return (jint)sqlite3_bind_int(PtrGet_sqlite3_stmt(jpStmt), (int)ndx, (int)val);
|
||||||
}
|
}
|
||||||
|
|
||||||
FIXME_THREADING(S3JniEnvCache)
|
FIXME_THREADING(S3JniEnv)
|
||||||
JDECL(jint,1bind_1int64)(JENV_CSELF, jobject jpStmt,
|
JDECL(jint,1bind_1int64)(JENV_CSELF, jobject jpStmt,
|
||||||
jint ndx, jlong val){
|
jint ndx, jlong val){
|
||||||
return (jint)sqlite3_bind_int64(PtrGet_sqlite3_stmt(jpStmt), (int)ndx, (sqlite3_int64)val);
|
return (jint)sqlite3_bind_int64(PtrGet_sqlite3_stmt(jpStmt), (int)ndx, (sqlite3_int64)val);
|
||||||
}
|
}
|
||||||
|
|
||||||
FIXME_THREADING(S3JniEnvCache)
|
FIXME_THREADING(S3JniEnv)
|
||||||
JDECL(jint,1bind_1null)(JENV_CSELF, jobject jpStmt,
|
JDECL(jint,1bind_1null)(JENV_CSELF, jobject jpStmt,
|
||||||
jint ndx){
|
jint ndx){
|
||||||
return (jint)sqlite3_bind_null(PtrGet_sqlite3_stmt(jpStmt), (int)ndx);
|
return (jint)sqlite3_bind_null(PtrGet_sqlite3_stmt(jpStmt), (int)ndx);
|
||||||
}
|
}
|
||||||
|
|
||||||
FIXME_THREADING(S3JniEnvCache)
|
FIXME_THREADING(S3JniEnv)
|
||||||
JDECL(jint,1bind_1parameter_1index)(JENV_CSELF, jobject jpStmt, jbyteArray jName){
|
JDECL(jint,1bind_1parameter_1index)(JENV_CSELF, jobject jpStmt, jbyteArray jName){
|
||||||
int rc = 0;
|
int rc = 0;
|
||||||
jbyte * const pBuf = JBA_TOC(jName);
|
jbyte * const pBuf = JBA_TOC(jName);
|
||||||
@ -2015,7 +2012,7 @@ JDECL(jint,1bind_1parameter_1index)(JENV_CSELF, jobject jpStmt, jbyteArray jName
|
|||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
|
|
||||||
FIXME_THREADING(S3JniEnvCache)
|
FIXME_THREADING(S3JniEnv)
|
||||||
JDECL(jint,1bind_1text)(JENV_CSELF, jobject jpStmt,
|
JDECL(jint,1bind_1text)(JENV_CSELF, jobject jpStmt,
|
||||||
jint ndx, jbyteArray baData, jint nMax){
|
jint ndx, jbyteArray baData, jint nMax){
|
||||||
if(baData){
|
if(baData){
|
||||||
@ -2029,13 +2026,13 @@ JDECL(jint,1bind_1text)(JENV_CSELF, jobject jpStmt,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
FIXME_THREADING(S3JniEnvCache)
|
FIXME_THREADING(S3JniEnv)
|
||||||
JDECL(jint,1bind_1zeroblob)(JENV_CSELF, jobject jpStmt,
|
JDECL(jint,1bind_1zeroblob)(JENV_CSELF, jobject jpStmt,
|
||||||
jint ndx, jint n){
|
jint ndx, jint n){
|
||||||
return (jint)sqlite3_bind_zeroblob(PtrGet_sqlite3_stmt(jpStmt), (int)ndx, (int)n);
|
return (jint)sqlite3_bind_zeroblob(PtrGet_sqlite3_stmt(jpStmt), (int)ndx, (int)n);
|
||||||
}
|
}
|
||||||
|
|
||||||
FIXME_THREADING(S3JniEnvCache)
|
FIXME_THREADING(S3JniEnv)
|
||||||
JDECL(jint,1bind_1zeroblob64)(JENV_CSELF, jobject jpStmt,
|
JDECL(jint,1bind_1zeroblob64)(JENV_CSELF, jobject jpStmt,
|
||||||
jint ndx, jlong n){
|
jint ndx, jlong n){
|
||||||
return (jint)sqlite3_bind_zeroblob(PtrGet_sqlite3_stmt(jpStmt), (int)ndx, (sqlite3_uint64)n);
|
return (jint)sqlite3_bind_zeroblob(PtrGet_sqlite3_stmt(jpStmt), (int)ndx, (sqlite3_uint64)n);
|
||||||
@ -2057,7 +2054,7 @@ static int s3jni_busy_handler(void* pState, int n){
|
|||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
|
|
||||||
FIXME_THREADING(S3JniEnvCache)
|
FIXME_THREADING(S3JniEnv)
|
||||||
JDECL(jint,1busy_1handler)(JENV_CSELF, jobject jDb, jobject jBusy){
|
JDECL(jint,1busy_1handler)(JENV_CSELF, jobject jDb, jobject jBusy){
|
||||||
S3JniDb * const ps = S3JniDb_for_db(env, jDb, 0);
|
S3JniDb * const ps = S3JniDb_for_db(env, jDb, 0);
|
||||||
int rc = 0;
|
int rc = 0;
|
||||||
@ -2087,7 +2084,7 @@ JDECL(jint,1busy_1handler)(JENV_CSELF, jobject jDb, jobject jBusy){
|
|||||||
: sqlite3_busy_handler(ps->pDb, 0, 0);
|
: sqlite3_busy_handler(ps->pDb, 0, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
FIXME_THREADING(S3JniEnvCache)
|
FIXME_THREADING(S3JniEnv)
|
||||||
FIXME_THREADING(perDb)
|
FIXME_THREADING(perDb)
|
||||||
JDECL(jint,1busy_1timeout)(JENV_CSELF, jobject jDb, jint ms){
|
JDECL(jint,1busy_1timeout)(JENV_CSELF, jobject jDb, jint ms){
|
||||||
S3JniDb * const ps = S3JniDb_for_db(env, jDb, 0);
|
S3JniDb * const ps = S3JniDb_for_db(env, jDb, 0);
|
||||||
@ -2136,13 +2133,13 @@ static jint s3jni_close_db(JNIEnv * const env, jobject jDb, int version){
|
|||||||
return (jint)rc;
|
return (jint)rc;
|
||||||
}
|
}
|
||||||
|
|
||||||
FIXME_THREADING(S3JniEnvCache)
|
FIXME_THREADING(S3JniEnv)
|
||||||
FIXME_THREADING(perDb)
|
FIXME_THREADING(perDb)
|
||||||
JDECL(jint,1close_1v2)(JENV_CSELF, jobject pDb){
|
JDECL(jint,1close_1v2)(JENV_CSELF, jobject pDb){
|
||||||
return s3jni_close_db(env, pDb, 2);
|
return s3jni_close_db(env, pDb, 2);
|
||||||
}
|
}
|
||||||
|
|
||||||
FIXME_THREADING(S3JniEnvCache)
|
FIXME_THREADING(S3JniEnv)
|
||||||
FIXME_THREADING(perDb)
|
FIXME_THREADING(perDb)
|
||||||
JDECL(jint,1close)(JENV_CSELF, jobject pDb){
|
JDECL(jint,1close)(JENV_CSELF, jobject pDb){
|
||||||
return s3jni_close_db(env, pDb, 1);
|
return s3jni_close_db(env, pDb, 1);
|
||||||
@ -2182,7 +2179,7 @@ static void s3jni_collation_needed_impl16(void *pState, sqlite3 *pDb,
|
|||||||
UNREF_L(jName);
|
UNREF_L(jName);
|
||||||
}
|
}
|
||||||
|
|
||||||
FIXME_THREADING(S3JniEnvCache)
|
FIXME_THREADING(S3JniEnv)
|
||||||
FIXME_THREADING(perDb)
|
FIXME_THREADING(perDb)
|
||||||
JDECL(jint,1collation_1needed)(JENV_CSELF, jobject jDb, jobject jHook){
|
JDECL(jint,1collation_1needed)(JENV_CSELF, jobject jDb, jobject jHook){
|
||||||
S3JniDb * const ps = S3JniDb_for_db(env, jDb, 0);
|
S3JniDb * const ps = S3JniDb_for_db(env, jDb, 0);
|
||||||
@ -2220,7 +2217,7 @@ JDECL(jint,1collation_1needed)(JENV_CSELF, jobject jDb, jobject jHook){
|
|||||||
return rc;
|
return rc;
|
||||||
}
|
}
|
||||||
|
|
||||||
FIXME_THREADING(S3JniEnvCache)
|
FIXME_THREADING(S3JniEnv)
|
||||||
JDECL(jbyteArray,1column_1blob)(JENV_CSELF, jobject jpStmt,
|
JDECL(jbyteArray,1column_1blob)(JENV_CSELF, jobject jpStmt,
|
||||||
jint ndx){
|
jint ndx){
|
||||||
sqlite3_stmt * const pStmt = PtrGet_sqlite3_stmt(jpStmt);
|
sqlite3_stmt * const pStmt = PtrGet_sqlite3_stmt(jpStmt);
|
||||||
@ -2234,25 +2231,25 @@ JDECL(jbyteArray,1column_1blob)(JENV_CSELF, jobject jpStmt,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
FIXME_THREADING(S3JniEnvCache)
|
FIXME_THREADING(S3JniEnv)
|
||||||
JDECL(jdouble,1column_1double)(JENV_CSELF, jobject jpStmt,
|
JDECL(jdouble,1column_1double)(JENV_CSELF, jobject jpStmt,
|
||||||
jint ndx){
|
jint ndx){
|
||||||
return (jdouble)sqlite3_column_double(PtrGet_sqlite3_stmt(jpStmt), (int)ndx);
|
return (jdouble)sqlite3_column_double(PtrGet_sqlite3_stmt(jpStmt), (int)ndx);
|
||||||
}
|
}
|
||||||
|
|
||||||
FIXME_THREADING(S3JniEnvCache)
|
FIXME_THREADING(S3JniEnv)
|
||||||
JDECL(jint,1column_1int)(JENV_CSELF, jobject jpStmt,
|
JDECL(jint,1column_1int)(JENV_CSELF, jobject jpStmt,
|
||||||
jint ndx){
|
jint ndx){
|
||||||
return (jint)sqlite3_column_int(PtrGet_sqlite3_stmt(jpStmt), (int)ndx);
|
return (jint)sqlite3_column_int(PtrGet_sqlite3_stmt(jpStmt), (int)ndx);
|
||||||
}
|
}
|
||||||
|
|
||||||
FIXME_THREADING(S3JniEnvCache)
|
FIXME_THREADING(S3JniEnv)
|
||||||
JDECL(jlong,1column_1int64)(JENV_CSELF, jobject jpStmt,
|
JDECL(jlong,1column_1int64)(JENV_CSELF, jobject jpStmt,
|
||||||
jint ndx){
|
jint ndx){
|
||||||
return (jlong)sqlite3_column_int64(PtrGet_sqlite3_stmt(jpStmt), (int)ndx);
|
return (jlong)sqlite3_column_int64(PtrGet_sqlite3_stmt(jpStmt), (int)ndx);
|
||||||
}
|
}
|
||||||
|
|
||||||
FIXME_THREADING(S3JniEnvCache)
|
FIXME_THREADING(S3JniEnv)
|
||||||
JDECL(jbyteArray,1column_1text)(JENV_CSELF, jobject jpStmt,
|
JDECL(jbyteArray,1column_1text)(JENV_CSELF, jobject jpStmt,
|
||||||
jint ndx){
|
jint ndx){
|
||||||
sqlite3_stmt * const stmt = PtrGet_sqlite3_stmt(jpStmt);
|
sqlite3_stmt * const stmt = PtrGet_sqlite3_stmt(jpStmt);
|
||||||
@ -2261,7 +2258,7 @@ JDECL(jbyteArray,1column_1text)(JENV_CSELF, jobject jpStmt,
|
|||||||
return s3jni_new_jbyteArray(env, p, n);
|
return s3jni_new_jbyteArray(env, p, n);
|
||||||
}
|
}
|
||||||
|
|
||||||
FIXME_THREADING(S3JniEnvCache)
|
FIXME_THREADING(S3JniEnv)
|
||||||
JDECL(jstring,1column_1text16)(JENV_CSELF, jobject jpStmt,
|
JDECL(jstring,1column_1text16)(JENV_CSELF, jobject jpStmt,
|
||||||
jint ndx){
|
jint ndx){
|
||||||
sqlite3_stmt * const stmt = PtrGet_sqlite3_stmt(jpStmt);
|
sqlite3_stmt * const stmt = PtrGet_sqlite3_stmt(jpStmt);
|
||||||
@ -2270,7 +2267,7 @@ JDECL(jstring,1column_1text16)(JENV_CSELF, jobject jpStmt,
|
|||||||
return s3jni_text16_to_jstring(env, p, n);
|
return s3jni_text16_to_jstring(env, p, n);
|
||||||
}
|
}
|
||||||
|
|
||||||
FIXME_THREADING(S3JniEnvCache)
|
FIXME_THREADING(S3JniEnv)
|
||||||
JDECL(jobject,1column_1value)(JENV_CSELF, jobject jpStmt,
|
JDECL(jobject,1column_1value)(JENV_CSELF, jobject jpStmt,
|
||||||
jint ndx){
|
jint ndx){
|
||||||
sqlite3_value * const sv = sqlite3_column_value(PtrGet_sqlite3_stmt(jpStmt), (int)ndx);
|
sqlite3_value * const sv = sqlite3_column_value(PtrGet_sqlite3_stmt(jpStmt), (int)ndx);
|
||||||
@ -2554,7 +2551,7 @@ JDECL(jint,1db_1config__Lorg_sqlite_jni_sqlite3_2IILorg_sqlite_jni_OutputPointer
|
|||||||
|
|
||||||
JDECL(jstring,1db_1filename)(JENV_CSELF, jobject jDb, jstring jDbName){
|
JDECL(jstring,1db_1filename)(JENV_CSELF, jobject jDb, jstring jDbName){
|
||||||
S3JniDb * const ps = S3JniDb_for_db(env, jDb, 0);
|
S3JniDb * const ps = S3JniDb_for_db(env, jDb, 0);
|
||||||
S3JniEnvCache * const jc = S3JniGlobal_env_cache(env);
|
S3JniEnv * const jc = S3JniGlobal_env_cache(env);
|
||||||
char *zDbName;
|
char *zDbName;
|
||||||
jstring jRv = 0;
|
jstring jRv = 0;
|
||||||
int nStr = 0;
|
int nStr = 0;
|
||||||
@ -2594,7 +2591,7 @@ JDECL(jint,1errcode)(JENV_CSELF, jobject jpDb){
|
|||||||
|
|
||||||
JDECL(jstring,1errmsg)(JENV_CSELF, jobject jpDb){
|
JDECL(jstring,1errmsg)(JENV_CSELF, jobject jpDb){
|
||||||
sqlite3 * const pDb = PtrGet_sqlite3(jpDb);
|
sqlite3 * const pDb = PtrGet_sqlite3(jpDb);
|
||||||
S3JniEnvCache * const jc = pDb ? S3JniGlobal_env_cache(env) : 0;
|
S3JniEnv * const jc = pDb ? S3JniGlobal_env_cache(env) : 0;
|
||||||
return jc ? s3jni_utf8_to_jstring(jc, sqlite3_errmsg(pDb), -1) : 0;
|
return jc ? s3jni_utf8_to_jstring(jc, sqlite3_errmsg(pDb), -1) : 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2608,7 +2605,7 @@ JDECL(jstring,1expanded_1sql)(JENV_CSELF, jobject jpStmt){
|
|||||||
sqlite3_stmt * const pStmt = PtrGet_sqlite3_stmt(jpStmt);
|
sqlite3_stmt * const pStmt = PtrGet_sqlite3_stmt(jpStmt);
|
||||||
jstring rv = 0;
|
jstring rv = 0;
|
||||||
if( pStmt ){
|
if( pStmt ){
|
||||||
S3JniEnvCache * const jc = S3JniGlobal_env_cache(env);
|
S3JniEnv * const jc = S3JniGlobal_env_cache(env);
|
||||||
char * zSql = sqlite3_expanded_sql(pStmt);
|
char * zSql = sqlite3_expanded_sql(pStmt);
|
||||||
OOM_CHECK(zSql);
|
OOM_CHECK(zSql);
|
||||||
if( zSql ){
|
if( zSql ){
|
||||||
@ -2659,7 +2656,7 @@ JDECL(jlong,1last_1insert_1rowid)(JENV_CSELF, jobject jpDb){
|
|||||||
}
|
}
|
||||||
|
|
||||||
//! Pre-open() code common to sqlite3_open(_v2)().
|
//! Pre-open() code common to sqlite3_open(_v2)().
|
||||||
static int s3jni_open_pre(JNIEnv * const env, S3JniEnvCache **jc,
|
static int s3jni_open_pre(JNIEnv * const env, S3JniEnv **jc,
|
||||||
jstring jDbName, char **zDbName,
|
jstring jDbName, char **zDbName,
|
||||||
S3JniDb ** ps, jobject *jDb){
|
S3JniDb ** ps, jobject *jDb){
|
||||||
int rc = 0;
|
int rc = 0;
|
||||||
@ -2735,7 +2732,7 @@ JDECL(jint,1open)(JENV_CSELF, jstring strName, jobject jOut){
|
|||||||
char *zName = 0;
|
char *zName = 0;
|
||||||
jobject jDb = 0;
|
jobject jDb = 0;
|
||||||
S3JniDb * ps = 0;
|
S3JniDb * ps = 0;
|
||||||
S3JniEnvCache * jc = 0;
|
S3JniEnv * jc = 0;
|
||||||
S3JniDb * const prevOpening = S3JniGlobal.autoExt.pdbOpening;
|
S3JniDb * const prevOpening = S3JniGlobal.autoExt.pdbOpening;
|
||||||
int rc= s3jni_open_pre(env, &jc, strName, &zName, &ps, &jDb);
|
int rc= s3jni_open_pre(env, &jc, strName, &zName, &ps, &jDb);
|
||||||
if( 0==rc ){
|
if( 0==rc ){
|
||||||
@ -2756,7 +2753,7 @@ JDECL(jint,1open_1v2)(JENV_CSELF, jstring strName,
|
|||||||
char *zName = 0;
|
char *zName = 0;
|
||||||
jobject jDb = 0;
|
jobject jDb = 0;
|
||||||
S3JniDb * ps = 0;
|
S3JniDb * ps = 0;
|
||||||
S3JniEnvCache * jc = 0;
|
S3JniEnv * jc = 0;
|
||||||
char *zVfs = 0;
|
char *zVfs = 0;
|
||||||
S3JniDb * const prevOpening = S3JniGlobal.autoExt.pdbOpening;
|
S3JniDb * const prevOpening = S3JniGlobal.autoExt.pdbOpening;
|
||||||
int rc = s3jni_open_pre(env, &jc, strName, &zName, &ps, &jDb);
|
int rc = s3jni_open_pre(env, &jc, strName, &zName, &ps, &jDb);
|
||||||
@ -3235,7 +3232,7 @@ JDECL(jstring,1sql)(JENV_CSELF, jobject jpStmt){
|
|||||||
jstring rv = 0;
|
jstring rv = 0;
|
||||||
if( pStmt ){
|
if( pStmt ){
|
||||||
const char * zSql = 0;
|
const char * zSql = 0;
|
||||||
S3JniEnvCache * const jc = S3JniGlobal_env_cache(env);
|
S3JniEnv * const jc = S3JniGlobal_env_cache(env);
|
||||||
zSql = sqlite3_sql(pStmt);
|
zSql = sqlite3_sql(pStmt);
|
||||||
rv = s3jni_utf8_to_jstring(jc, zSql, -1);
|
rv = s3jni_utf8_to_jstring(jc, zSql, -1);
|
||||||
OOM_CHECK(rv);
|
OOM_CHECK(rv);
|
||||||
@ -3258,7 +3255,7 @@ static int s3jni_trace_impl(unsigned traceflag, void *pC, void *pP, void *pX){
|
|||||||
jobject jX = NULL /* the tracer's X arg */;
|
jobject jX = NULL /* the tracer's X arg */;
|
||||||
jobject jP = NULL /* the tracer's P arg */;
|
jobject jP = NULL /* the tracer's P arg */;
|
||||||
jobject jPUnref = NULL /* potentially a local ref to jP */;
|
jobject jPUnref = NULL /* potentially a local ref to jP */;
|
||||||
S3JniEnvCache * const jc = S3JniGlobal_env_cache(env);
|
S3JniEnv * const jc = S3JniGlobal_env_cache(env);
|
||||||
int rc;
|
int rc;
|
||||||
int createStmt = 0;
|
int createStmt = 0;
|
||||||
switch(traceflag){
|
switch(traceflag){
|
||||||
@ -3512,7 +3509,7 @@ JDECL(void,1do_1something_1for_1developer)(JENV_CSELF){
|
|||||||
puts("sizeofs:");
|
puts("sizeofs:");
|
||||||
#define SO(T) printf("\tsizeof(" #T ") = %u\n", (unsigned)sizeof(T))
|
#define SO(T) printf("\tsizeof(" #T ") = %u\n", (unsigned)sizeof(T))
|
||||||
SO(void*);
|
SO(void*);
|
||||||
SO(S3JniEnvCache);
|
SO(S3JniEnv);
|
||||||
SO(S3JniHook);
|
SO(S3JniHook);
|
||||||
SO(S3JniDb);
|
SO(S3JniDb);
|
||||||
SO(S3JniClassNames);
|
SO(S3JniClassNames);
|
||||||
@ -3642,7 +3639,7 @@ static inline jobject new_fts5_api_wrapper(JNIEnv * const env, fts5_api *sv){
|
|||||||
instance, or NULL on OOM.
|
instance, or NULL on OOM.
|
||||||
*/
|
*/
|
||||||
static jobject s3jni_getFts5ExensionApi(JNIEnv * const env){
|
static jobject s3jni_getFts5ExensionApi(JNIEnv * const env){
|
||||||
S3JniEnvCache * const row = S3JniGlobal_env_cache(env);
|
S3JniEnv * const row = S3JniGlobal_env_cache(env);
|
||||||
if( !row->jFtsExt ){
|
if( !row->jFtsExt ){
|
||||||
row->jFtsExt = new_NativePointerHolder_object(env, S3JniClassNames.Fts5ExtensionApi,
|
row->jFtsExt = new_NativePointerHolder_object(env, S3JniClassNames.Fts5ExtensionApi,
|
||||||
s3jni_ftsext());
|
s3jni_ftsext());
|
||||||
@ -3709,7 +3706,7 @@ JDECLFtsXA(jint,xColumnText)(JENV_OSELF,jobject jCtx, jint iCol,
|
|||||||
int rc = fext->xColumnText(PtrGet_Fts5Context(jCtx), (int)iCol,
|
int rc = fext->xColumnText(PtrGet_Fts5Context(jCtx), (int)iCol,
|
||||||
&pz, &pn);
|
&pz, &pn);
|
||||||
if( 0==rc ){
|
if( 0==rc ){
|
||||||
S3JniEnvCache * const jc = S3JniGlobal_env_cache(env);
|
S3JniEnv * const jc = S3JniGlobal_env_cache(env);
|
||||||
jstring jstr = pz ? s3jni_utf8_to_jstring(jc, pz, pn) : 0;
|
jstring jstr = pz ? s3jni_utf8_to_jstring(jc, pz, pn) : 0;
|
||||||
if( pz ){
|
if( pz ){
|
||||||
if( jstr ){
|
if( jstr ){
|
||||||
@ -3866,7 +3863,7 @@ JDECLFtsXA(jint,xPhraseCount)(JENV_OSELF,jobject jCtx){
|
|||||||
/**
|
/**
|
||||||
Initializes jc->jPhraseIter if it needed it.
|
Initializes jc->jPhraseIter if it needed it.
|
||||||
*/
|
*/
|
||||||
static void s3jni_phraseIter_init(JNIEnv *const env, S3JniEnvCache * const jc,
|
static void s3jni_phraseIter_init(JNIEnv *const env, S3JniEnv * const jc,
|
||||||
jobject jIter){
|
jobject jIter){
|
||||||
if(!jc->jPhraseIter.klazz){
|
if(!jc->jPhraseIter.klazz){
|
||||||
jclass klazz = (*env)->GetObjectClass(env, jIter);
|
jclass klazz = (*env)->GetObjectClass(env, jIter);
|
||||||
@ -3879,7 +3876,7 @@ static void s3jni_phraseIter_init(JNIEnv *const env, S3JniEnvCache * const jc,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Copy the 'a' and 'b' fields from pSrc to Fts5PhraseIter object jIter. */
|
/* Copy the 'a' and 'b' fields from pSrc to Fts5PhraseIter object jIter. */
|
||||||
static void s3jni_phraseIter_NToJ(JNIEnv *const env, S3JniEnvCache const * const jc,
|
static void s3jni_phraseIter_NToJ(JNIEnv *const env, S3JniEnv const * const jc,
|
||||||
Fts5PhraseIter const * const pSrc,
|
Fts5PhraseIter const * const pSrc,
|
||||||
jobject jIter){
|
jobject jIter){
|
||||||
assert(jc->jPhraseIter.klazz);
|
assert(jc->jPhraseIter.klazz);
|
||||||
@ -3890,7 +3887,7 @@ static void s3jni_phraseIter_NToJ(JNIEnv *const env, S3JniEnvCache const * const
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Copy the 'a' and 'b' fields from Fts5PhraseIter object jIter to pDest. */
|
/* Copy the 'a' and 'b' fields from Fts5PhraseIter object jIter to pDest. */
|
||||||
static void s3jni_phraseIter_JToN(JNIEnv *const env, S3JniEnvCache const * const jc,
|
static void s3jni_phraseIter_JToN(JNIEnv *const env, S3JniEnv const * const jc,
|
||||||
jobject jIter, Fts5PhraseIter * const pDest){
|
jobject jIter, Fts5PhraseIter * const pDest){
|
||||||
assert(jc->jPhraseIter.klazz);
|
assert(jc->jPhraseIter.klazz);
|
||||||
pDest->a =
|
pDest->a =
|
||||||
@ -3905,7 +3902,7 @@ JDECLFtsXA(jint,xPhraseFirst)(JENV_OSELF,jobject jCtx, jint iPhrase,
|
|||||||
jobject jIter, jobject jOutCol,
|
jobject jIter, jobject jOutCol,
|
||||||
jobject jOutOff){
|
jobject jOutOff){
|
||||||
Fts5ExtDecl;
|
Fts5ExtDecl;
|
||||||
S3JniEnvCache * const jc = S3JniGlobal_env_cache(env);
|
S3JniEnv * const jc = S3JniGlobal_env_cache(env);
|
||||||
Fts5PhraseIter iter;
|
Fts5PhraseIter iter;
|
||||||
int rc, iCol = 0, iOff = 0;
|
int rc, iCol = 0, iOff = 0;
|
||||||
s3jni_phraseIter_init(env, jc, jIter);
|
s3jni_phraseIter_init(env, jc, jIter);
|
||||||
@ -3922,7 +3919,7 @@ JDECLFtsXA(jint,xPhraseFirst)(JENV_OSELF,jobject jCtx, jint iPhrase,
|
|||||||
JDECLFtsXA(jint,xPhraseFirstColumn)(JENV_OSELF,jobject jCtx, jint iPhrase,
|
JDECLFtsXA(jint,xPhraseFirstColumn)(JENV_OSELF,jobject jCtx, jint iPhrase,
|
||||||
jobject jIter, jobject jOutCol){
|
jobject jIter, jobject jOutCol){
|
||||||
Fts5ExtDecl;
|
Fts5ExtDecl;
|
||||||
S3JniEnvCache * const jc = S3JniGlobal_env_cache(env);
|
S3JniEnv * const jc = S3JniGlobal_env_cache(env);
|
||||||
Fts5PhraseIter iter;
|
Fts5PhraseIter iter;
|
||||||
int rc, iCol = 0;
|
int rc, iCol = 0;
|
||||||
s3jni_phraseIter_init(env, jc, jIter);
|
s3jni_phraseIter_init(env, jc, jIter);
|
||||||
@ -3938,7 +3935,7 @@ JDECLFtsXA(jint,xPhraseFirstColumn)(JENV_OSELF,jobject jCtx, jint iPhrase,
|
|||||||
JDECLFtsXA(void,xPhraseNext)(JENV_OSELF,jobject jCtx, jobject jIter,
|
JDECLFtsXA(void,xPhraseNext)(JENV_OSELF,jobject jCtx, jobject jIter,
|
||||||
jobject jOutCol, jobject jOutOff){
|
jobject jOutCol, jobject jOutOff){
|
||||||
Fts5ExtDecl;
|
Fts5ExtDecl;
|
||||||
S3JniEnvCache * const jc = S3JniGlobal_env_cache(env);
|
S3JniEnv * const jc = S3JniGlobal_env_cache(env);
|
||||||
Fts5PhraseIter iter;
|
Fts5PhraseIter iter;
|
||||||
int iCol = 0, iOff = 0;
|
int iCol = 0, iOff = 0;
|
||||||
if(!jc->jPhraseIter.klazz) return /*SQLITE_MISUSE*/;
|
if(!jc->jPhraseIter.klazz) return /*SQLITE_MISUSE*/;
|
||||||
@ -3953,7 +3950,7 @@ JDECLFtsXA(void,xPhraseNext)(JENV_OSELF,jobject jCtx, jobject jIter,
|
|||||||
JDECLFtsXA(void,xPhraseNextColumn)(JENV_OSELF,jobject jCtx, jobject jIter,
|
JDECLFtsXA(void,xPhraseNextColumn)(JENV_OSELF,jobject jCtx, jobject jIter,
|
||||||
jobject jOutCol){
|
jobject jOutCol){
|
||||||
Fts5ExtDecl;
|
Fts5ExtDecl;
|
||||||
S3JniEnvCache * const jc = S3JniGlobal_env_cache(env);
|
S3JniEnv * const jc = S3JniGlobal_env_cache(env);
|
||||||
Fts5PhraseIter iter;
|
Fts5PhraseIter iter;
|
||||||
int iCol = 0;
|
int iCol = 0;
|
||||||
if(!jc->jPhraseIter.klazz) return /*SQLITE_MISUSE*/;
|
if(!jc->jPhraseIter.klazz) return /*SQLITE_MISUSE*/;
|
||||||
@ -3975,7 +3972,7 @@ JDECLFtsXA(jint,xPhraseSize)(JENV_OSELF,jobject jCtx, jint iPhrase){
|
|||||||
struct s3jni_xQueryPhraseState {
|
struct s3jni_xQueryPhraseState {
|
||||||
JNIEnv *env;
|
JNIEnv *env;
|
||||||
Fts5ExtensionApi const * fext;
|
Fts5ExtensionApi const * fext;
|
||||||
S3JniEnvCache const * jc;
|
S3JniEnv const * jc;
|
||||||
jmethodID midCallback;
|
jmethodID midCallback;
|
||||||
jobject jCallback;
|
jobject jCallback;
|
||||||
jobject jFcx;
|
jobject jFcx;
|
||||||
@ -4007,7 +4004,7 @@ static int s3jni_xQueryPhrase(const Fts5ExtensionApi *xapi,
|
|||||||
JDECLFtsXA(jint,xQueryPhrase)(JENV_OSELF,jobject jFcx, jint iPhrase,
|
JDECLFtsXA(jint,xQueryPhrase)(JENV_OSELF,jobject jFcx, jint iPhrase,
|
||||||
jobject jCallback){
|
jobject jCallback){
|
||||||
Fts5ExtDecl;
|
Fts5ExtDecl;
|
||||||
S3JniEnvCache * const jc = S3JniGlobal_env_cache(env);
|
S3JniEnv * const jc = S3JniGlobal_env_cache(env);
|
||||||
struct s3jni_xQueryPhraseState s;
|
struct s3jni_xQueryPhraseState s;
|
||||||
jclass klazz = jCallback ? (*env)->GetObjectClass(env, jCallback) : NULL;
|
jclass klazz = jCallback ? (*env)->GetObjectClass(env, jCallback) : NULL;
|
||||||
if( !klazz ) return SQLITE_MISUSE;
|
if( !klazz ) return SQLITE_MISUSE;
|
||||||
@ -4093,7 +4090,7 @@ static jint s3jni_fts5_xTokenize(JENV_OSELF, const char *zClassName,
|
|||||||
jint tokFlags, jobject jFcx,
|
jint tokFlags, jobject jFcx,
|
||||||
jbyteArray jbaText, jobject jCallback){
|
jbyteArray jbaText, jobject jCallback){
|
||||||
Fts5ExtDecl;
|
Fts5ExtDecl;
|
||||||
S3JniEnvCache * const jc = S3JniGlobal_env_cache(env);
|
S3JniEnv * const jc = S3JniGlobal_env_cache(env);
|
||||||
struct s3jni_xQueryPhraseState s;
|
struct s3jni_xQueryPhraseState s;
|
||||||
int rc = 0;
|
int rc = 0;
|
||||||
jbyte * const pText = jCallback ? JBA_TOC(jbaText) : 0;
|
jbyte * const pText = jCallback ? JBA_TOC(jbaText) : 0;
|
||||||
|
12
manifest
12
manifest
@ -1,5 +1,5 @@
|
|||||||
C Add\sa\smutex\sfor\sauto-extensions,\stied\sin\sto\sthe\sopen()\sprocess\ssince\sthat's\sthe\sroute\sinto\sauto-extensions.
|
C Internal\sAPI\srenaming\sfor\sclarity's\ssake.
|
||||||
D 2023-08-13T12:40:27.217
|
D 2023-08-13T20:58:12.729
|
||||||
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
|
||||||
@ -234,7 +234,7 @@ F ext/icu/sqliteicu.h fa373836ed5a1ee7478bdf8a1650689294e41d0c89c1daab26e9ae78a3
|
|||||||
F ext/jni/GNUmakefile a9e11b92e620058558cbc1a2d49f8ec53c78d6a989b9db0b7d0b649b9f174881
|
F ext/jni/GNUmakefile a9e11b92e620058558cbc1a2d49f8ec53c78d6a989b9db0b7d0b649b9f174881
|
||||||
F ext/jni/README.md 7a614a2fa6c561205f7a53fd8626cf93a7b5711ff454fc1814517f796df398eb
|
F ext/jni/README.md 7a614a2fa6c561205f7a53fd8626cf93a7b5711ff454fc1814517f796df398eb
|
||||||
F ext/jni/jar-dist.make f90a553203a57934bf275bed86479485135a52f48ac5c1cfe6499ae07b0b35a4
|
F ext/jni/jar-dist.make f90a553203a57934bf275bed86479485135a52f48ac5c1cfe6499ae07b0b35a4
|
||||||
F ext/jni/src/c/sqlite3-jni.c 4f6f8f2dec309a6b117a6e8f460078b5f6f6b65a17c530ae2f5907b6425d714c
|
F ext/jni/src/c/sqlite3-jni.c 1b1f3fa286476933171e75465214deab44c55714aaaa80b5ce145e89f10b0df8
|
||||||
F ext/jni/src/c/sqlite3-jni.h f10d2f38720687c70ecdd5e44f6e8db98efee2caa05fc86b2d9e0c76e6cc0a18
|
F ext/jni/src/c/sqlite3-jni.h f10d2f38720687c70ecdd5e44f6e8db98efee2caa05fc86b2d9e0c76e6cc0a18
|
||||||
F ext/jni/src/org/sqlite/jni/Authorizer.java 1308988f7f40579ea0e4deeaec3c6be971630566bd021c31367fe3f5140db892
|
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/AutoExtension.java 18e83f6f463e306df60b2dceb65247d32af1f78af4bbbae9155411a8c6cdb093
|
||||||
@ -2091,8 +2091,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 33d1780b43182d2574adbc1928707af825c485c99762738e58bc6d7c6c52ac6a
|
P 8da97e0db4eeacf91aa6fd909fd7cb73b050d194dfc7739a502b55f7eca6d7b1
|
||||||
R 6a1ce79c2368c04d74cde070b44b6572
|
R 582810911695a14eb1f701cb46e67a37
|
||||||
U stephan
|
U stephan
|
||||||
Z d637a436f204decfbfbf40fa44769c67
|
Z 414dea18ee7e2187dd201f9308cbe98b
|
||||||
# Remove this line to create a well-formed Fossil manifest.
|
# Remove this line to create a well-formed Fossil manifest.
|
||||||
|
@ -1 +1 @@
|
|||||||
8da97e0db4eeacf91aa6fd909fd7cb73b050d194dfc7739a502b55f7eca6d7b1
|
911e4fc5aaf9478214095a65f74af3ebca883922c36cf7a8d911116c42cf9de8
|
Reference in New Issue
Block a user