* Method: sqlite3_db_config
* Signature: (Lorg/sqlite/jni/capi/sqlite3;IILorg/sqlite/jni/capi/OutputPointer/Int32;)I
*/
-JNIEXPORT jint JNICALL Java_org_sqlite_jni_capi_CApi_sqlite3_1db_1config__Lorg_sqlite_jni_capi_sqlite3_2IILorg_sqlite_jni_capi_OutputPointer_00024Int32_2
+JNIEXPORT jint JNICALL Java_org_sqlite_jni_capi_CApi_sqlite3_1db_1config__Lorg_sqlite_jni_capi_sqlite3_2IILorg_sqlite_jni_capi_OutputPointer_Int32_2
(JNIEnv *, jclass, jobject, jint, jint, jobject);
/*
They are populated only via that interface.
*/
public final class TableColumnMetadata {
- OutputPointer.Bool pNotNull = new OutputPointer.Bool();
- OutputPointer.Bool pPrimaryKey = new OutputPointer.Bool();
- OutputPointer.Bool pAutoinc = new OutputPointer.Bool();
- OutputPointer.String pzCollSeq = new OutputPointer.String();
- OutputPointer.String pzDataType = new OutputPointer.String();
+ final OutputPointer.Bool pNotNull = new OutputPointer.Bool();
+ final OutputPointer.Bool pPrimaryKey = new OutputPointer.Bool();
+ final OutputPointer.Bool pAutoinc = new OutputPointer.Bool();
+ final OutputPointer.String pzCollSeq = new OutputPointer.String();
+ final OutputPointer.String pzDataType = new OutputPointer.String();
public TableColumnMetadata(){
}
import java.util.List;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
-import java.util.concurrent.Future;
/**
An annotation for Tester1 tests which we do not want to run in
//! List of test*() methods to run.
private static List<java.lang.reflect.Method> testMethods = null;
//! List of exceptions collected by run()
- private static List<Exception> listErrors = new ArrayList<>();
+ private static final List<Exception> listErrors = new ArrayList<>();
private static final class Metrics {
//! Number of times createNewDb() (or equivalent) is invoked.
volatile int dbOpen = 0;
}
- private Integer tId;
+ private final Integer tId;
Tester1(Integer id){
tId = id;
public static synchronized void outln(){
if( !quietMode ){
- System.out.println("");
+ System.out.println();
}
}
}
sqlite3_finalize(stmt);
affirm(3 == n);
- affirm("w😃rldhell🤩!🤩".equals(sbuf.toString()));
+ affirm("w😃rldhell🤩!🤩".contentEquals(sbuf));
try( sqlite3_stmt stmt2 = prepare(db, "SELECT ?, ?") ){
rc = sqlite3_bind_text(stmt2, 1, "");
execSql(db, "CREATE TABLE t(a); INSERT INTO t(a) VALUES('a'),('b'),('c')");
final ValueHolder<Integer> xDestroyCalled = new ValueHolder<>(0);
final CollationCallback myCollation = new CollationCallback() {
- private String myState =
+ private final String myState =
"this is local state. There is much like it, but this is mine.";
@Override
// Reverse-sorts its inputs...
SQLFunction funcAgg = new AggregateFunction<Integer>(){
@Override public void xStep(sqlite3_context cx, sqlite3_value[] args){
/** Throwing from here should emit loud noise on stdout or stderr
- but the exception is supressed because we have no way to inform
+ but the exception is suppressed because we have no way to inform
sqlite about it from these callbacks. */
//throw new RuntimeException("Throwing from an xStep");
}
"; insert into t(a) values(1),(2),(3);",
"select a from t;"
};
- final List<sqlite3_stmt> liStmt = new ArrayList<sqlite3_stmt>();
+ final List<sqlite3_stmt> liStmt = new ArrayList<>();
final PrepareMultiCallback proxy = new PrepareMultiCallback.StepAll();
final ValueHolder<String> toss = new ValueHolder<>(null);
PrepareMultiCallback m = new PrepareMultiCallback() {
-v: emit some developer-mode info at the end.
*/
public static void main(String[] args) throws Exception {
- Integer nThread = 1;
+ int nThread = 1;
boolean doSomethingForDev = false;
- Integer nRepeat = 1;
+ int nRepeat = 1;
boolean forceFail = false;
boolean sqlLog = false;
boolean configLog = false;
final ConfigLogCallback log = new ConfigLogCallback() {
@Override public void call(int code, String msg){
outln("ConfigLogCallback: ",ResultCode.getEntryForInt(code),": ", msg);
- };
+ }
};
int rc = sqlite3_config( log );
affirm( 0==rc );
each individual reference, leading to memory corruption or a
crash via duplicate free().
*/
- public void xDestroy();
+ void xDestroy();
}
** This file is part of the JNI bindings for the sqlite3 C API.
*/
package org.sqlite.jni.fts5;
-import java.nio.charset.StandardCharsets;
import org.sqlite.jni.capi.*;
import org.sqlite.jni.annotation.*;
private final int iVersion = 2;
/* Callback type for used by xQueryPhrase(). */
- public static interface XQueryPhraseCallback {
+ public interface XQueryPhraseCallback {
int call(Fts5ExtensionApi fapi, Fts5Context cx);
}
** This file contains a set of tests for the sqlite3 JNI bindings.
*/
package org.sqlite.jni.fts5;
+import java.util.*;
import static org.sqlite.jni.capi.CApi.*;
import static org.sqlite.jni.capi.Tester1.*;
import org.sqlite.jni.capi.*;
-import org.sqlite.jni.fts5.*;
-
-import java.util.*;
+import java.nio.charset.StandardCharsets;
public class TesterFts5 {
** thrown.
*/
private static String[] sqlite3_exec(sqlite3 db, String sql) {
- List<String> aOut = new ArrayList<String>();
+ List<String> aOut = new ArrayList<>();
/* Iterate through the list of SQL statements. For each, step through
** it and add any results to the aOut[] array. */
** fts5_columncount()
*/
private static void create_test_functions(sqlite3 db){
- /*
+ /*
** A user-defined-function fts5_rowid() that uses xRowid()
*/
fts5_extension_function fts5_rowid = new fts5_extension_function(){
@Override public void call(
- Fts5ExtensionApi ext,
+ Fts5ExtensionApi ext,
Fts5Context fCx,
- sqlite3_context pCx,
+ sqlite3_context pCx,
sqlite3_value argv[]
){
long rowid = ext.xRowid(fCx);
public void xDestroy(){ }
};
- /*
- ** fts5_columncount() - xColumnCount()
+ /*
+ ** fts5_columncount() - xColumnCount()
*/
fts5_extension_function fts5_columncount = new fts5_extension_function(){
@Override public void call(
- Fts5ExtensionApi ext,
+ Fts5ExtensionApi ext,
Fts5Context fCx,
- sqlite3_context pCx,
+ sqlite3_context pCx,
sqlite3_value argv[]
){
int nCol = ext.xColumnCount(fCx);
public void xDestroy(){ }
};
- /*
- ** fts5_columnsize() - xColumnSize()
+ /*
+ ** fts5_columnsize() - xColumnSize()
*/
fts5_extension_function fts5_columnsize = new fts5_extension_function(){
@Override public void call(
- Fts5ExtensionApi ext,
+ Fts5ExtensionApi ext,
Fts5Context fCx,
- sqlite3_context pCx,
+ sqlite3_context pCx,
sqlite3_value argv[]
){
if( argv.length!=1 ){
public void xDestroy(){ }
};
- /*
- ** fts5_columntext() - xColumnText()
+ /*
+ ** fts5_columntext() - xColumnText()
*/
fts5_extension_function fts5_columntext = new fts5_extension_function(){
@Override public void call(
- Fts5ExtensionApi ext,
+ Fts5ExtensionApi ext,
Fts5Context fCx,
- sqlite3_context pCx,
+ sqlite3_context pCx,
sqlite3_value argv[]
){
if( argv.length!=1 ){
public void xDestroy(){ }
};
- /*
- ** fts5_columntotalsize() - xColumnTotalSize()
+ /*
+ ** fts5_columntotalsize() - xColumnTotalSize()
*/
fts5_extension_function fts5_columntsize = new fts5_extension_function(){
@Override public void call(
- Fts5ExtensionApi ext,
+ Fts5ExtensionApi ext,
Fts5Context fCx,
- sqlite3_context pCx,
+ sqlite3_context pCx,
sqlite3_value argv[]
){
if( argv.length!=1 ){
*/
class fts5_aux implements fts5_extension_function {
@Override public void call(
- Fts5ExtensionApi ext,
+ Fts5ExtensionApi ext,
Fts5Context fCx,
- sqlite3_context pCx,
+ sqlite3_context pCx,
sqlite3_value argv[]
){
if( argv.length>1 ){
if( argv.length==1 ){
String val = sqlite3_value_text16(argv[0]);
- if( !val.equals("") ){
+ if( !val.isEmpty() ){
ext.xSetAuxdata(fCx, val);
}
}
}
public void xDestroy(){ }
- };
+ }
/*
** fts5_inst(<fts>);
*/
fts5_extension_function fts5_inst = new fts5_extension_function(){
@Override public void call(
- Fts5ExtensionApi ext,
+ Fts5ExtensionApi ext,
Fts5Context fCx,
- sqlite3_context pCx,
+ sqlite3_context pCx,
sqlite3_value argv[]
){
if( argv.length!=0 ){
OutputPointer.Int32 piPhrase = new OutputPointer.Int32();
OutputPointer.Int32 piCol = new OutputPointer.Int32();
OutputPointer.Int32 piOff = new OutputPointer.Int32();
- String ret = new String();
+ String ret = "";
int rc = ext.xInstCount(fCx, pnInst);
int nInst = pnInst.get();
*/
fts5_extension_function fts5_pinst = new fts5_extension_function(){
@Override public void call(
- Fts5ExtensionApi ext,
+ Fts5ExtensionApi ext,
Fts5Context fCx,
- sqlite3_context pCx,
+ sqlite3_context pCx,
sqlite3_value argv[]
){
if( argv.length!=0 ){
OutputPointer.Int32 piCol = new OutputPointer.Int32();
OutputPointer.Int32 piOff = new OutputPointer.Int32();
- String ret = new String();
+ String ret = "";
int rc = SQLITE_OK;
int nPhrase = ext.xPhraseCount(fCx);
rc==SQLITE_OK && piCol.get()>=0;
ext.xPhraseNext(fCx, pIter, piCol, piOff)
){
- if( !ret.equals("") ) ret += " ";
+ if( !ret.isEmpty() ) ret += " ";
ret += "{"+ii+" "+piCol.get()+" "+piOff.get()+"}";
}
}
*/
fts5_extension_function fts5_pcolinst = new fts5_extension_function(){
@Override public void call(
- Fts5ExtensionApi ext,
+ Fts5ExtensionApi ext,
Fts5Context fCx,
- sqlite3_context pCx,
+ sqlite3_context pCx,
sqlite3_value argv[]
){
if( argv.length!=0 ){
}
OutputPointer.Int32 piCol = new OutputPointer.Int32();
- String ret = new String();
+ String ret = "";
int rc = SQLITE_OK;
int nPhrase = ext.xPhraseCount(fCx);
rc==SQLITE_OK && piCol.get()>=0;
ext.xPhraseNextColumn(fCx, pIter, piCol)
){
- if( !ret.equals("") ) ret += " ";
+ if( !ret.isEmpty() ) ret += " ";
ret += "{"+ii+" "+piCol.get()+"}";
}
}
*/
fts5_extension_function fts5_rowcount = new fts5_extension_function(){
@Override public void call(
- Fts5ExtensionApi ext,
+ Fts5ExtensionApi ext,
Fts5Context fCx,
- sqlite3_context pCx,
+ sqlite3_context pCx,
sqlite3_value argv[]
){
if( argv.length!=0 ){
*/
fts5_extension_function fts5_phrasesize = new fts5_extension_function(){
@Override public void call(
- Fts5ExtensionApi ext,
+ Fts5ExtensionApi ext,
Fts5Context fCx,
- sqlite3_context pCx,
+ sqlite3_context pCx,
sqlite3_value argv[]
){
if( argv.length!=1 ){
*/
fts5_extension_function fts5_phrasehits = new fts5_extension_function(){
@Override public void call(
- Fts5ExtensionApi ext,
+ Fts5ExtensionApi ext,
Fts5Context fCx,
- sqlite3_context pCx,
+ sqlite3_context pCx,
sqlite3_value argv[]
){
if( argv.length!=1 ){
*/
fts5_extension_function fts5_tokenize = new fts5_extension_function(){
@Override public void call(
- Fts5ExtensionApi ext,
+ Fts5ExtensionApi ext,
Fts5Context fCx,
- sqlite3_context pCx,
+ sqlite3_context pCx,
sqlite3_value argv[]
){
if( argv.length!=1 ){
int rc = SQLITE_OK;
class MyCallback implements XTokenizeCallback {
- private List<String> myList = new ArrayList<String>();
+ private List<String> myList = new ArrayList<>();
public String getval() {
return String.join("+", myList);
@Override
public int call(int tFlags, byte[] txt, int iStart, int iEnd){
try {
- String str = new String(txt, "UTF-8");
+ String str = new String(txt, StandardCharsets.UTF_8);
myList.add(str);
} catch (Exception e) {
}
*/
void xDestroy();
- public static abstract class Abstract implements fts5_extension_function {
+ /**
+ A base implementation of fts5_extension_function() which has a
+ no-op xDestroy() method.
+ */
+ abstract class Abstract implements fts5_extension_function {
@Override public abstract void call(Fts5ExtensionApi ext, Fts5Context fCx,
sqlite3_context pCx, sqlite3_value argv[]);
@Override public void xDestroy(){}
The purpose of the Test Script Interpreter is to read and interpret
script files that contain SQL commands and desired results. The
-interpreter will check results and report any discrepencies found.
+interpreter will check results and report any discrepancies found.
The test script files are ASCII text files. The filename always ends with
".test". Each script is evaluated independently; context does not carry
command itself, but it is important for related commands like --glob
and --notglob. Sometimes test cases will contains a bunch of SQL
followed by multiple --glob and/or --notglob statements. All of the
-globs should be evaluated agains the result buffer, but the SQL should
+globs should be evaluated against the result buffer, but the SQL should
only be run once. This is accomplished by resetting the input buffer
but not the result buffer.
** This file is part of the wrapper1 interface for sqlite3.
*/
package org.sqlite.jni.wrapper1;
-import org.sqlite.jni.capi.CApi;
-import org.sqlite.jni.annotation.*;
-import org.sqlite.jni.capi.sqlite3_context;
-import org.sqlite.jni.capi.sqlite3_value;
/**
The SqlFunction type for scalar SQL functions.
*/
public interface SqlFunction {
- public static final int DETERMINISTIC = CApi.SQLITE_DETERMINISTIC;
- public static final int INNOCUOUS = CApi.SQLITE_INNOCUOUS;
- public static final int DIRECTONLY = CApi.SQLITE_DIRECTONLY;
- public static final int SUBTYPE = CApi.SQLITE_SUBTYPE;
- public static final int RESULT_SUBTYPE = CApi.SQLITE_RESULT_SUBTYPE;
- public static final int UTF8 = CApi.SQLITE_UTF8;
- public static final int UTF16 = CApi.SQLITE_UTF16;
+ int DETERMINISTIC = CApi.SQLITE_DETERMINISTIC;
+ int INNOCUOUS = CApi.SQLITE_INNOCUOUS;
+ int DIRECTONLY = CApi.SQLITE_DIRECTONLY;
+ int SUBTYPE = CApi.SQLITE_SUBTYPE;
+ int RESULT_SUBTYPE = CApi.SQLITE_RESULT_SUBTYPE;
+ int UTF8 = CApi.SQLITE_UTF8;
+ int UTF16 = CApi.SQLITE_UTF16;
/**
The Arguments type is an abstraction on top of the lower-level
of the lower-level interface, insofar as possible without "leaking"
those types into this API.
*/
- public final static class Arguments implements Iterable<SqlFunction.Arguments.Arg>{
+ final class Arguments implements Iterable<SqlFunction.Arguments.Arg>{
private final sqlite3_context cx;
private final sqlite3_value args[];
public final int length;
Internal-use adapter for wrapping this package's ScalarFunction
for use with the org.sqlite.jni.capi.ScalarFunction interface.
*/
- static final class ScalarAdapter extends org.sqlite.jni.capi.ScalarFunction {
+ final class ScalarAdapter extends org.sqlite.jni.capi.ScalarFunction {
private final ScalarFunction impl;
ScalarAdapter(ScalarFunction impl){
this.impl = impl;
Internal-use adapter for wrapping this package's AggregateFunction
for use with the org.sqlite.jni.capi.AggregateFunction interface.
*/
- static /*cannot be final without duplicating the whole body in WindowAdapter*/
class AggregateAdapter extends org.sqlite.jni.capi.AggregateFunction {
+ /*cannot be final without duplicating the whole body in WindowAdapter*/
private final AggregateFunction impl;
AggregateAdapter(AggregateFunction impl){
this.impl = impl;
Internal-use adapter for wrapping this package's WindowFunction
for use with the org.sqlite.jni.capi.WindowFunction interface.
*/
- static final class WindowAdapter extends AggregateAdapter {
+ final class WindowAdapter extends AggregateAdapter {
private final WindowFunction impl;
WindowAdapter(WindowFunction impl){
super(impl);
import org.sqlite.jni.capi.sqlite3_backup;
import org.sqlite.jni.capi.sqlite3_blob;
import org.sqlite.jni.capi.OutputPointer;
-import java.nio.ByteBuffer;
/**
This class represents a database connection, analog to the C-side
return CApi.sqlite3_compileoption_used(optName);
}
- private static boolean hasNormalizeSql =
+ private static final boolean hasNormalizeSql =
compileOptionUsed("ENABLE_NORMALIZE");
- private static boolean hasSqlLog =
+ private static final boolean hasSqlLog =
compileOptionUsed("ENABLE_SQLLOG");
/**
long current;
/** The peak value for the requested status() or libStatus() metric. */
long peak;
- };
+ }
/**
As per sqlite3_status64(), but returns its current and high-water
final org.sqlite.jni.capi.OutputPointer.Int32 oTail =
new org.sqlite.jni.capi.OutputPointer.Int32();
while( pos < sqlChunk.length ){
- sqlite3_stmt stmt = null;
+ sqlite3_stmt stmt;
if( pos>0 ){
sqlChunk = java.util.Arrays.copyOfRange(sqlChunk, pos, sqlChunk.length);
}
}
};
checkRc( CApi.sqlite3_trace_v2(thisDb(), traceMask, tc) );
- };
+ }
/**
Corresponds to the sqlite3_stmt class. Use Sqlite.prepare() to
create new instances.
*/
public static final class Stmt implements AutoCloseable {
- private Sqlite _db = null;
- private sqlite3_stmt stmt = null;
+ private Sqlite _db;
+ private sqlite3_stmt stmt;
/** Only called by the prepare() factory functions. */
Stmt(Sqlite db, sqlite3_stmt stmt){
Sqlite.initBackup() to create new instances.
*/
public static final class Backup implements AutoCloseable {
- private sqlite3_backup b = null;
- private Sqlite dbTo = null;
- private Sqlite dbFrom = null;
+ private sqlite3_backup b;
+ private Sqlite dbTo;
+ private Sqlite dbFrom;
Backup(Sqlite dbDest, String schemaDest,Sqlite dbSrc, String schemaSrc){
this.dbTo = dbDest;
Warning: the SQLite core has no mechanism for reporting errors
from custom collations and its workflow does not accommodate
propagation of exceptions from callbacks. Any exceptions thrown
- from collations will be silently supressed and sorting results
+ from collations will be silently suppressed and sorting results
will be unpredictable.
*/
int call(byte[] lhs, byte[] rhs);
*/
public void createCollation(String name, int encoding, Collation c){
thisDb();
- if( null==name || 0==name.length()){
+ if( null==name || name.isEmpty()){
throw new IllegalArgumentException("Collation name may not be null or empty.");
}
if( null==c ){
public void setBusyHandler( BusyHandler b ){
org.sqlite.jni.capi.BusyHandlerCallback bhc = null;
if( null!=b ){
- bhc = new org.sqlite.jni.capi.BusyHandlerCallback(){
+ /*bhc = new org.sqlite.jni.capi.BusyHandlerCallback(){
@Override public int call(int n){
return b.call(n);
}
- };
+ };*/
+ bhc = b::call;
}
checkRc( CApi.sqlite3_busy_handler(thisDb(), bhc) );
}
public void setProgressHandler( int n, ProgressHandler p ){
org.sqlite.jni.capi.ProgressHandlerCallback phc = null;
if( null!=p ){
- phc = new org.sqlite.jni.capi.ProgressHandlerCallback(){
+ /*phc = new org.sqlite.jni.capi.ProgressHandlerCallback(){
@Override public int call(){ return p.call(); }
- };
+ };*/
+ phc = p::call;
}
CApi.sqlite3_progress_handler( thisDb(), n, phc );
}
public void setAuthorizer( Authorizer a ) {
org.sqlite.jni.capi.AuthorizerCallback ac = null;
if( null!=a ){
- ac = new org.sqlite.jni.capi.AuthorizerCallback(){
+ /*ac = new org.sqlite.jni.capi.AuthorizerCallback(){
@Override public int call(int opId, String s1, String s2, String s3, String s4){
return a.call(opId, s1, s2, s3, s4);
}
- };
+ };*/
+ ac = a::call;
}
checkRc( CApi.sqlite3_set_authorizer( thisDb(), ac ) );
}
final org.sqlite.jni.capi.ConfigLogCallback l =
null==log
? null
- : new org.sqlite.jni.capi.ConfigLogCallback() {
+ /*: new org.sqlite.jni.capi.ConfigLogCallback() {
@Override public void call(int errCode, String msg){
log.call(errCode, msg);
}
- };
+ };*/
+ : log::call;
checkRcStatic(CApi.sqlite3_config(l));
}
-C JNI:\spart\s1\sof\stypos\sand\sJava\sstyle\stweaks\ssuggested\sin\s[forum:99ac7961d82f57f3|forum\spost\s99ac7961d82f57f3].
-D 2025-04-14T11:31:10.823
+C JNI:\spart\s2\sof\stypos\sand\sJava\sstyle\stweaks\ssuggested\sin\s[forum:99ac7961d82f57f3|forum\spost\s99ac7961d82f57f3].
+D 2025-04-14T12:09:24.445
F .fossil-settings/binary-glob 61195414528fb3ea9693577e1980230d78a1f8b0a54c78cf1b9b24d0a409ed6a x
F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
F ext/jni/README.md e3fbd47c774683539b7fdc95a667eb9cd6e64d8510f3ee327e7fa0c61c8aa787
F ext/jni/jar-dist.make 030aaa4ae71dd86e4ec5e7c1e6cd86f9dfa47c4592c070d2e35157e42498e1fa
F ext/jni/src/c/sqlite3-jni.c 74c35473c1fb1756ee911468d5027e4f989eea6764dff429b1214f76d78c431d
-F ext/jni/src/c/sqlite3-jni.h cc5fc5cefe2d63f461a4bad90735b34be0d85e5fe6778ae7ba992fae4d223cdf
+F ext/jni/src/c/sqlite3-jni.h 913ab8e8fee432ae40f0e387c8231118d17053714703f5ded18202912a8a3fbf
F ext/jni/src/org/sqlite/jni/annotation/Experimental.java 8603498634e41d0f7c70f661f64e05df64376562ea8f126829fd1e0cdd47e82b
F ext/jni/src/org/sqlite/jni/annotation/NotNull.java be6cc3e8e114485822331630097cc0f816377e8503af2fc02f9305ff2b353917
F ext/jni/src/org/sqlite/jni/annotation/Nullable.java 56e3dee1f3f703a545dfdeddc1c3d64d1581172b1ad01ffcae95c18547fafd90
F ext/jni/src/org/sqlite/jni/capi/SQLFunction.java 0d1e9afc9ff8a2adb94a155b72385155fa3b8011a5cca0bb3c28468c7131c1a5
F ext/jni/src/org/sqlite/jni/capi/SQLTester.java 828ad9e149885a5080be920b5edee11fc43d6603485529da256b19e3581b72cc
F ext/jni/src/org/sqlite/jni/capi/ScalarFunction.java 93b9700fca4c68075ccab12fe0fbbc76c91cafc9f368e835b9bd7cd7732c8615
-F ext/jni/src/org/sqlite/jni/capi/TableColumnMetadata.java addf120e0e76e5be1ff2260daa7ce305ff9b5fafd64153a7a28e9d8f000a815f
-F ext/jni/src/org/sqlite/jni/capi/Tester1.java e5fa17301b7266c1cbe4bcce67788e08e45871c7c72c153d515abb37e501de0a
+F ext/jni/src/org/sqlite/jni/capi/TableColumnMetadata.java 9133bb7685901d2edf07801191284975e33b5583ce09dce1c05202ff91e7bb99
+F ext/jni/src/org/sqlite/jni/capi/Tester1.java 9f4f0041e30712b92a86ddb7e1faf956a0c89a7fb0d5daf88cbae9ec263d8453
F ext/jni/src/org/sqlite/jni/capi/TraceV2Callback.java 0a25e117a0daae3394a77f24713e36d7b44c67d6e6d30e9e1d56a63442eef723
F ext/jni/src/org/sqlite/jni/capi/UpdateHookCallback.java c8bdf7848e6599115d601bcc9427ff902cb33129b9be32870ac6808e04b6ae56
F ext/jni/src/org/sqlite/jni/capi/ValueHolder.java 2ce069f3e007fdbbe1f4e507a5a407fc9679da31a0aa40985e6317ed4d5ec7b5
F ext/jni/src/org/sqlite/jni/capi/WindowFunction.java caf4396f91b2567904cf94bc538a069fd62260d975bd037d15a02a890ed1ef9e
-F ext/jni/src/org/sqlite/jni/capi/XDestroyCallback.java f3abb8dd7381f53ebba909437090caf68200f06717b8a7d6aa96fa3e8133117d
+F ext/jni/src/org/sqlite/jni/capi/XDestroyCallback.java 9c8cc33995a3df385feaf476a8306d29dbab611ed4f55da736597357bde68620
F ext/jni/src/org/sqlite/jni/capi/package-info.java 08ff986a65d2be9162442c82d28a65ce431d826f188520717c2ecb1484d0a50e
F ext/jni/src/org/sqlite/jni/capi/sqlite3.java c6a5c555d163d76663534f2b2cce7cab15325b9852d0f58c6688a85e73ae52f0
F ext/jni/src/org/sqlite/jni/capi/sqlite3_backup.java 6742b431cd4d77e8000c1f92ec66265a58414c86bf3b0b5fbcb1164e08477227
F ext/jni/src/org/sqlite/jni/capi/sqlite3_value.java e1d62a257c13504b46d39d5c21c49cf157ad73fda00cc5f34c931aa008c37049
F ext/jni/src/org/sqlite/jni/fts5/Fts5.java e94681023785f1eff5399f0ddc82f46b035977d350f14838db659236ebdf6b41
F ext/jni/src/org/sqlite/jni/fts5/Fts5Context.java 338637e6e5a2cc385d962b220f3c1f475cc371d12ae43d18ef27327b6e6225f7
-F ext/jni/src/org/sqlite/jni/fts5/Fts5ExtensionApi.java 7da0fbb5728f7c056a43e6407f13dd0c7c9c445221267786a109b987f5fc8a9d
+F ext/jni/src/org/sqlite/jni/fts5/Fts5ExtensionApi.java 2de029b3a12b16f779f4df6381c5f0cd358dd82bdaf99ec837504a1110b829f3
F ext/jni/src/org/sqlite/jni/fts5/Fts5PhraseIter.java 28045042d593a1f1b9b80d54ec77cbf1d8a1bc95e442eceefa9a3a6f56600b0e
F ext/jni/src/org/sqlite/jni/fts5/Fts5Tokenizer.java 3c8f677ffb85b8782f865d6fcbc16200b3375d0e3c29ed541a494fde3011bf49
-F ext/jni/src/org/sqlite/jni/fts5/TesterFts5.java 51e16bf9050af7cb246d17d6a19c001cfc916bf20f425c96625aaccaf74688e8
+F ext/jni/src/org/sqlite/jni/fts5/TesterFts5.java 793a5f6f2f581034dc3b503d5023b05e7e38558a80542148b82527dc2a7bf209
F ext/jni/src/org/sqlite/jni/fts5/XTokenizeCallback.java 1efd1220ea328a32f2d2a1b16c735864159e929480f71daad4de9d5944839167
F ext/jni/src/org/sqlite/jni/fts5/fts5_api.java a8e88c3783d21cec51b0748568a96653fead88f8f4953376178d9c7385b197ea
-F ext/jni/src/org/sqlite/jni/fts5/fts5_extension_function.java 9e2b954d210d572552b28aca523b272fae14bd41e318921b22f65b728d5bf978
+F ext/jni/src/org/sqlite/jni/fts5/fts5_extension_function.java 1e721873c62df2eb79f45bbf55b8662625365885b02d1d51915f773de16a90e3
F ext/jni/src/org/sqlite/jni/fts5/fts5_tokenizer.java 92bdaa3893bd684533004d64ade23d329843f809cd0d0f4f1a2856da6e6b4d90
-F ext/jni/src/org/sqlite/jni/test-script-interpreter.md 620754d59d97022198d0dcdd366b8c56dca07b080880a7618b33620cfd3d4a56
+F ext/jni/src/org/sqlite/jni/test-script-interpreter.md d7987b432870d23f7c72a7804d099fe5ccfb945f519ac90a33e189297fbbfa1c
F ext/jni/src/org/sqlite/jni/wrapper1/AggregateFunction.java d5c108b02afd3c63c9e5e53f71f85273c1bfdc461ae526e0a0bb2b25e4df6483
-F ext/jni/src/org/sqlite/jni/wrapper1/ScalarFunction.java 43c43adfb7866098aadaaca1620028a6ec82d5193149970019b1cce9eb59fb03
-F ext/jni/src/org/sqlite/jni/wrapper1/SqlFunction.java b424faf3bbcc9ae13f72ca87ca9bc9d34c6f0dd797f1f4ddf854a00e8d6b2241
-F ext/jni/src/org/sqlite/jni/wrapper1/Sqlite.java 1d6fbdb7bd875e861f0c52ae131c087ff09804face19587c3971ac72af626196
+F ext/jni/src/org/sqlite/jni/wrapper1/ScalarFunction.java 326ffba29aab836a6ea189703c3d7fb573305fd93da2d14b0f9e9dcf314c8290
+F ext/jni/src/org/sqlite/jni/wrapper1/SqlFunction.java e920f7a031e04975579240d4a07ac5e4a9d0f8de31b0aa7a4be753c98ae596c9
+F ext/jni/src/org/sqlite/jni/wrapper1/Sqlite.java c82bc00c1988f86246a89f721d3c41f0d952f33f934aa6677ec87f7ca42519a0
F ext/jni/src/org/sqlite/jni/wrapper1/SqliteException.java 982538ddb4c0719ef87dfa664cd137b09890b546029a7477810bd64d4c47ee35
F ext/jni/src/org/sqlite/jni/wrapper1/Tester2.java ce45f2ec85facbb73690096547ed166e7be82299e3d92eaa206f82b60a6ec969
F ext/jni/src/org/sqlite/jni/wrapper1/ValueHolder.java a84e90c43724a69c2ecebd601bc8e5139f869b7d08cb705c77ef757dacdd0593
F tool/warnings-clang.sh bbf6a1e685e534c92ec2bfba5b1745f34fb6f0bc2a362850723a9ee87c1b31a7
F tool/warnings.sh 49a486c5069de041aedcbde4de178293e0463ae9918ecad7539eedf0ec77a139
F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f
-P d6889f6b9aa70bc90f71883b3e7ba359162477afe5048dacb7dfa11733ad1e5a
-R 4fa41ddd47fcd20793ebec54c99f81c8
+P ab00af4e48501b0413650df31147866a805c34b7ecf506d1e208bc3ae6c2ef28
+R eccaa5625295ba78582e7b3d93247920
U stephan
-Z d553daca30b625c1ccad3f32966884c5
+Z 952342e6ebff8b006b1487bc23287d99
# Remove this line to create a well-formed Fossil manifest.
-ab00af4e48501b0413650df31147866a805c34b7ecf506d1e208bc3ae6c2ef28
+5e6e9aee5b43e6ae98e78293a0da30e82ad18c3c9c03fc6298240233ddadb2a2