mirror of
https://github.com/sqlite/sqlite.git
synced 2025-07-29 08:01:23 +03:00
Bring JNI-side sqlite3_last_insert_rowid() and sqlite3_table_column_metadata() in line with the core's NULL handling.
FossilOrigin-Name: c2afc1c2a2fc9bdf3d7b7701004e0fa40965cf8c6b7cf44b46f2ca37cfa1d2aa
This commit is contained in:
@ -3583,12 +3583,7 @@ S3JniApi(sqlite3_keyword_name(),jstring,1keyword_1name)(
|
|||||||
S3JniApi(sqlite3_last_insert_rowid(),jlong,1last_1insert_1rowid)(
|
S3JniApi(sqlite3_last_insert_rowid(),jlong,1last_1insert_1rowid)(
|
||||||
JniArgsEnvClass, jobject jpDb
|
JniArgsEnvClass, jobject jpDb
|
||||||
){
|
){
|
||||||
jlong rc = 0;
|
return (jlong)sqlite3_last_insert_rowid(PtrGet_sqlite3(jpDb));
|
||||||
sqlite3 * const pDb = PtrGet_sqlite3(jpDb);
|
|
||||||
if( pDb ){
|
|
||||||
rc = (jlong)sqlite3_last_insert_rowid(pDb);
|
|
||||||
}
|
|
||||||
return rc;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
S3JniApi(sqlite3_limit(),jint,1limit)(
|
S3JniApi(sqlite3_limit(),jint,1limit)(
|
||||||
@ -4564,11 +4559,12 @@ S3JniApi(sqlite3_table_column_metadata(),int,1table_1column_1metadata)(
|
|||||||
int pNotNull = 0, pPrimaryKey = 0, pAutoinc = 0;
|
int pNotNull = 0, pPrimaryKey = 0, pAutoinc = 0;
|
||||||
int rc;
|
int rc;
|
||||||
|
|
||||||
if( !db || !jDbName || !jTableName || !jColumnName ) return SQLITE_MISUSE;
|
if( !db || !jDbName || !jTableName ) return SQLITE_MISUSE;
|
||||||
zDbName = s3jni_jstring_to_utf8(jDbName,0);
|
zDbName = s3jni_jstring_to_utf8(jDbName,0);
|
||||||
zTableName = zDbName ? s3jni_jstring_to_utf8(jTableName,0) : 0;
|
zTableName = zDbName ? s3jni_jstring_to_utf8(jTableName,0) : 0;
|
||||||
zColumnName = zTableName ? s3jni_jstring_to_utf8(jColumnName,0) : 0;
|
zColumnName = (zTableName && jColumnName)
|
||||||
rc = zColumnName
|
? s3jni_jstring_to_utf8(jColumnName,0) : 0;
|
||||||
|
rc = zTableName
|
||||||
? sqlite3_table_column_metadata(db, zDbName, zTableName,
|
? sqlite3_table_column_metadata(db, zDbName, zTableName,
|
||||||
zColumnName, &pzDataType, &pzCollSeq,
|
zColumnName, &pzDataType, &pzCollSeq,
|
||||||
&pNotNull, &pPrimaryKey, &pAutoinc)
|
&pNotNull, &pPrimaryKey, &pAutoinc)
|
||||||
|
@ -259,6 +259,7 @@ public class Tester1 implements Runnable {
|
|||||||
affirm( 0==sqlite3_db_readonly(db,null) );
|
affirm( 0==sqlite3_db_readonly(db,null) );
|
||||||
affirm( 0>sqlite3_db_readonly(db,"nope") );
|
affirm( 0>sqlite3_db_readonly(db,"nope") );
|
||||||
affirm( 0>sqlite3_db_readonly(null,null) );
|
affirm( 0>sqlite3_db_readonly(null,null) );
|
||||||
|
affirm( 0==sqlite3_last_insert_rowid(null) );
|
||||||
|
|
||||||
// These interrupt checks are only to make sure that the JNI binding
|
// These interrupt checks are only to make sure that the JNI binding
|
||||||
// has the proper exported symbol names. They don't actually test
|
// has the proper exported symbol names. They don't actually test
|
||||||
@ -1464,7 +1465,7 @@ public class Tester1 implements Runnable {
|
|||||||
affirm( "noCase".equals(zCollSeq.value) );
|
affirm( "noCase".equals(zCollSeq.value) );
|
||||||
affirm( "duck".equals(zDataType.value) );
|
affirm( "duck".equals(zDataType.value) );
|
||||||
|
|
||||||
final TableColumnMetadata m =
|
TableColumnMetadata m =
|
||||||
sqlite3_table_column_metadata(db, "main", "t", "a");
|
sqlite3_table_column_metadata(db, "main", "t", "a");
|
||||||
affirm( null != m );
|
affirm( null != m );
|
||||||
affirm( bPrimaryKey.value == m.isPrimaryKey() );
|
affirm( bPrimaryKey.value == m.isPrimaryKey() );
|
||||||
@ -1474,6 +1475,16 @@ public class Tester1 implements Runnable {
|
|||||||
affirm( zDataType.value.equals(m.getDataType()) );
|
affirm( zDataType.value.equals(m.getDataType()) );
|
||||||
|
|
||||||
affirm( null == sqlite3_table_column_metadata(db, "nope", "t", "a") );
|
affirm( null == sqlite3_table_column_metadata(db, "nope", "t", "a") );
|
||||||
|
affirm( null == sqlite3_table_column_metadata(db, "main", "nope", "a") );
|
||||||
|
|
||||||
|
m = sqlite3_table_column_metadata(db, "main", "t", null)
|
||||||
|
/* Check only for existence of table */;
|
||||||
|
affirm( null != m );
|
||||||
|
affirm( m.isPrimaryKey() );
|
||||||
|
affirm( !m.isAutoincrement() );
|
||||||
|
affirm( !m.isNotNull() );
|
||||||
|
affirm( "BINARY".equalsIgnoreCase(m.getCollation()) );
|
||||||
|
affirm( "INTEGER".equalsIgnoreCase(m.getDataType()) );
|
||||||
|
|
||||||
sqlite3_close_v2(db);
|
sqlite3_close_v2(db);
|
||||||
}
|
}
|
||||||
|
14
manifest
14
manifest
@ -1,5 +1,5 @@
|
|||||||
C Extend\sAPI_ARMOR\schecks\son\ssqlite3_commit/rollback_hook()\sto\sinclude\sa\scheck\sfor\sthe\scallback\spointer.
|
C Bring\sJNI-side\ssqlite3_last_insert_rowid()\sand\ssqlite3_table_column_metadata()\sin\sline\swith\sthe\score's\sNULL\shandling.
|
||||||
D 2023-10-14T12:20:55.441
|
D 2023-10-14T12:40:57.346
|
||||||
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
|
||||||
@ -238,7 +238,7 @@ F ext/icu/sqliteicu.h fa373836ed5a1ee7478bdf8a1650689294e41d0c89c1daab26e9ae78a3
|
|||||||
F ext/jni/GNUmakefile 6da240c9a11701f3ed569384cd15ef611e8b3c5e3897d265923b14bf0e1eb272
|
F ext/jni/GNUmakefile 6da240c9a11701f3ed569384cd15ef611e8b3c5e3897d265923b14bf0e1eb272
|
||||||
F ext/jni/README.md ef9ac115e97704ea995d743b4a8334e23c659e5534c3b64065a5405256d5f2f4
|
F ext/jni/README.md ef9ac115e97704ea995d743b4a8334e23c659e5534c3b64065a5405256d5f2f4
|
||||||
F ext/jni/jar-dist.make 030aaa4ae71dd86e4ec5e7c1e6cd86f9dfa47c4592c070d2e35157e42498e1fa
|
F ext/jni/jar-dist.make 030aaa4ae71dd86e4ec5e7c1e6cd86f9dfa47c4592c070d2e35157e42498e1fa
|
||||||
F ext/jni/src/c/sqlite3-jni.c 2a01d42df24718d69eafe836643de272b14fca57135ce0f1f6521fecf9002e29
|
F ext/jni/src/c/sqlite3-jni.c 3d4640ae9c128326e0f65dade4732734771596371e398a7ae95c4d33ef24928a
|
||||||
F ext/jni/src/c/sqlite3-jni.h 8bd34a6fe3b51059690be31ac5bd6e454a738dd1ff9916f490e05cf63c4f8e37
|
F ext/jni/src/c/sqlite3-jni.h 8bd34a6fe3b51059690be31ac5bd6e454a738dd1ff9916f490e05cf63c4f8e37
|
||||||
F ext/jni/src/org/sqlite/jni/AbstractCollationCallback.java 95e88ba04f4aac51ffec65693e878e234088b2f21b387f4e4285c8b72b33e436
|
F ext/jni/src/org/sqlite/jni/AbstractCollationCallback.java 95e88ba04f4aac51ffec65693e878e234088b2f21b387f4e4285c8b72b33e436
|
||||||
F ext/jni/src/org/sqlite/jni/AggregateFunction.java 7312486bc65fecdb91753c0a4515799194e031f45edbe16a6373cea18f404dc4
|
F ext/jni/src/org/sqlite/jni/AggregateFunction.java 7312486bc65fecdb91753c0a4515799194e031f45edbe16a6373cea18f404dc4
|
||||||
@ -265,7 +265,7 @@ F ext/jni/src/org/sqlite/jni/ScalarFunction.java 6d387bb499fbe3bc13c53315335233d
|
|||||||
F ext/jni/src/org/sqlite/jni/Sqlite.java 1617ea2bf3dfa493b7f031a3187cbfd6837c39bc1d406c4b3edcf9aab941639d
|
F ext/jni/src/org/sqlite/jni/Sqlite.java 1617ea2bf3dfa493b7f031a3187cbfd6837c39bc1d406c4b3edcf9aab941639d
|
||||||
F ext/jni/src/org/sqlite/jni/SqliteException.java e17500e8bca2c68c260d8d0163fe4b7dc8bd0b1b90211201325c4a5566ce75ca
|
F ext/jni/src/org/sqlite/jni/SqliteException.java e17500e8bca2c68c260d8d0163fe4b7dc8bd0b1b90211201325c4a5566ce75ca
|
||||||
F ext/jni/src/org/sqlite/jni/TableColumnMetadata.java 54511b4297fa28dcb3f49b24035e34ced10e3fd44fd0e458e784f4d6b0096dab
|
F ext/jni/src/org/sqlite/jni/TableColumnMetadata.java 54511b4297fa28dcb3f49b24035e34ced10e3fd44fd0e458e784f4d6b0096dab
|
||||||
F ext/jni/src/org/sqlite/jni/Tester1.java 92d4e9dcf9268e6e2588c1cbd808454926ee40287eb9126b0e5eb823918e538d
|
F ext/jni/src/org/sqlite/jni/Tester1.java 7c17a33e044a24d590007e1b4581b8d1e07653ab3f76fc66571b78905d6391b1
|
||||||
F ext/jni/src/org/sqlite/jni/Tester2.java 70e005d41060e398ec0f69bd39a8e1c376fd51f81629cf25e877889ec9cb6ec6
|
F ext/jni/src/org/sqlite/jni/Tester2.java 70e005d41060e398ec0f69bd39a8e1c376fd51f81629cf25e877889ec9cb6ec6
|
||||||
F ext/jni/src/org/sqlite/jni/TesterFts5.java d60fe9944a81156b3b5325dd1b0e8e92a1547468f39fd1266d06f7bb6a95fa70
|
F ext/jni/src/org/sqlite/jni/TesterFts5.java d60fe9944a81156b3b5325dd1b0e8e92a1547468f39fd1266d06f7bb6a95fa70
|
||||||
F ext/jni/src/org/sqlite/jni/TraceV2Callback.java f157edd9c72e7d2243c169061487cd7bb51a0d50f3ac976dbcbbacf748ab1fc2
|
F ext/jni/src/org/sqlite/jni/TraceV2Callback.java f157edd9c72e7d2243c169061487cd7bb51a0d50f3ac976dbcbbacf748ab1fc2
|
||||||
@ -2128,8 +2128,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 e5eace747ae656f1e05a346e53a2827242e57107567d2c3470e292cf0b40858d
|
P f6cd88e6b234560f729ff00da86144a0121ad96d5a07d227c9ffa3f43c22f72d
|
||||||
R 30e2307f7d3debecac19515663c6942d
|
R d3dd2ae5a14dfec019fa6886cd0b6713
|
||||||
U stephan
|
U stephan
|
||||||
Z 7173d279e961708051d9b4ee103a0383
|
Z a2340dd7e5a63c935f9d8e1e3bbbf4f4
|
||||||
# Remove this line to create a well-formed Fossil manifest.
|
# Remove this line to create a well-formed Fossil manifest.
|
||||||
|
@ -1 +1 @@
|
|||||||
f6cd88e6b234560f729ff00da86144a0121ad96d5a07d227c9ffa3f43c22f72d
|
c2afc1c2a2fc9bdf3d7b7701004e0fa40965cf8c6b7cf44b46f2ca37cfa1d2aa
|
Reference in New Issue
Block a user