1
0
mirror of https://github.com/sqlite/sqlite.git synced 2025-08-08 14:02:16 +03:00

Merge the latest trunk enhancements into the bedrock branch.

FossilOrigin-Name: c1f616ce802fbb9c3652f8cb43970e4bda18464e765f23fb5f96029721431092
This commit is contained in:
drh
2024-08-01 00:47:59 +00:00
294 changed files with 4683 additions and 2273 deletions

View File

@@ -5,14 +5,7 @@
#include "sqlite3session.h"
#include <assert.h>
#include <string.h>
#if defined(INCLUDE_SQLITE_TCL_H)
# include "sqlite_tcl.h"
#else
# include "tcl.h"
# ifndef SQLITE_TCLAPI
# define SQLITE_TCLAPI
# endif
#endif
#include "tclsqlite.h"
#ifndef SQLITE_AMALGAMATION
typedef unsigned char u8;
@@ -522,11 +515,11 @@ struct TestConflictHandler {
};
static int test_obj_eq_string(Tcl_Obj *p, const char *z){
int n;
int nObj;
Tcl_Size n;
Tcl_Size nObj;
char *zObj;
n = (int)strlen(z);
n = (Tcl_Size)strlen(z);
zObj = Tcl_GetStringFromObj(p, &nObj);
return (nObj==n && (n==0 || 0==memcmp(zObj, z, n)));
@@ -801,7 +794,7 @@ static int SQLITE_TCLAPI testSqlite3changesetApply(
Tcl_CmdInfo info; /* Database Tcl command (objv[1]) info */
int rc; /* Return code from changeset_invert() */
void *pChangeset; /* Buffer containing changeset */
int nChangeset; /* Size of buffer aChangeset in bytes */
Tcl_Size nChangeset; /* Size of buffer aChangeset in bytes */
TestConflictHandler ctx;
TestStreamInput sStr;
void *pRebase = 0;
@@ -858,18 +851,18 @@ static int SQLITE_TCLAPI testSqlite3changesetApply(
if( sStr.nStream==0 ){
if( bV2==0 ){
rc = sqlite3changeset_apply(db, nChangeset, pChangeset,
rc = sqlite3changeset_apply(db, (int)nChangeset, pChangeset,
(objc==5)?test_filter_handler:0, test_conflict_handler, (void *)&ctx
);
}else{
rc = sqlite3changeset_apply_v2(db, nChangeset, pChangeset,
rc = sqlite3changeset_apply_v2(db, (int)nChangeset, pChangeset,
(objc==5)?test_filter_handler:0, test_conflict_handler, (void *)&ctx,
&pRebase, &nRebase, flags
);
}
}else{
sStr.aData = (unsigned char*)pChangeset;
sStr.nData = nChangeset;
sStr.nData = (int)nChangeset;
if( bV2==0 ){
rc = sqlite3changeset_apply_strm(db, testStreamInput, (void*)&sStr,
(objc==5) ? test_filter_handler : 0,
@@ -932,7 +925,7 @@ static int SQLITE_TCLAPI test_sqlite3changeset_apply_replace_all(
Tcl_CmdInfo info; /* Database Tcl command (objv[1]) info */
int rc; /* Return code from changeset_invert() */
void *pChangeset; /* Buffer containing changeset */
int nChangeset; /* Size of buffer aChangeset in bytes */
Tcl_Size nChangeset; /* Size of buffer aChangeset in bytes */
if( objc!=3 ){
Tcl_WrongNumArgs(interp, 1, objv, "DB CHANGESET");
@@ -945,7 +938,8 @@ static int SQLITE_TCLAPI test_sqlite3changeset_apply_replace_all(
db = *(sqlite3 **)info.objClientData;
pChangeset = (void *)Tcl_GetByteArrayFromObj(objv[2], &nChangeset);
rc = sqlite3changeset_apply(db, nChangeset, pChangeset, 0, replace_handler,0);
rc = sqlite3changeset_apply(db, (int)nChangeset, pChangeset,
0, replace_handler,0);
if( rc!=SQLITE_OK ){
return test_session_error(interp, rc, 0);
}
@@ -964,6 +958,7 @@ static int SQLITE_TCLAPI test_sqlite3changeset_invert(
Tcl_Obj *CONST objv[]
){
int rc; /* Return code from changeset_invert() */
Tcl_Size nn;
TestStreamInput sIn; /* Input stream */
TestSessionsBlob sOut; /* Output blob */
@@ -975,7 +970,8 @@ static int SQLITE_TCLAPI test_sqlite3changeset_invert(
memset(&sIn, 0, sizeof(sIn));
memset(&sOut, 0, sizeof(sOut));
sIn.nStream = test_tcl_integer(interp, SESSION_STREAM_TCL_VAR);
sIn.aData = Tcl_GetByteArrayFromObj(objv[1], &sIn.nData);
sIn.aData = Tcl_GetByteArrayFromObj(objv[1], &nn);
sIn.nData = (int)nn;
if( sIn.nStream ){
rc = sqlite3changeset_invert_strm(
@@ -1004,6 +1000,7 @@ static int SQLITE_TCLAPI test_sqlite3changeset_concat(
Tcl_Obj *CONST objv[]
){
int rc; /* Return code from changeset_invert() */
Tcl_Size nn;
TestStreamInput sLeft; /* Input stream */
TestStreamInput sRight; /* Input stream */
@@ -1016,8 +1013,10 @@ static int SQLITE_TCLAPI test_sqlite3changeset_concat(
memset(&sLeft, 0, sizeof(sLeft));
memset(&sRight, 0, sizeof(sRight));
sLeft.aData = Tcl_GetByteArrayFromObj(objv[1], &sLeft.nData);
sRight.aData = Tcl_GetByteArrayFromObj(objv[2], &sRight.nData);
sLeft.aData = Tcl_GetByteArrayFromObj(objv[1], &nn);
sLeft.nData = (int)nn;
sRight.aData = Tcl_GetByteArrayFromObj(objv[2], &nn);
sRight.nData = (int)nn;
sLeft.nStream = test_tcl_integer(interp, SESSION_STREAM_TCL_VAR);
sRight.nStream = sLeft.nStream;
@@ -1111,7 +1110,7 @@ static int SQLITE_TCLAPI test_sqlite3session_foreach(
Tcl_Obj *CONST objv[]
){
void *pChangeset;
int nChangeset;
Tcl_Size nChangeset;
sqlite3_changeset_iter *pIter;
int rc;
Tcl_Obj *pVarname;
@@ -1153,19 +1152,19 @@ static int SQLITE_TCLAPI test_sqlite3session_foreach(
if( isInvert ){
int f = SQLITE_CHANGESETSTART_INVERT;
if( sStr.nStream==0 ){
rc = sqlite3changeset_start_v2(&pIter, nChangeset, pChangeset, f);
rc = sqlite3changeset_start_v2(&pIter, (int)nChangeset, pChangeset, f);
}else{
void *pCtx = (void*)&sStr;
sStr.aData = (unsigned char*)pChangeset;
sStr.nData = nChangeset;
sStr.nData = (int)nChangeset;
rc = sqlite3changeset_start_v2_strm(&pIter, testStreamInput, pCtx, f);
}
}else{
if( sStr.nStream==0 ){
rc = sqlite3changeset_start(&pIter, nChangeset, pChangeset);
rc = sqlite3changeset_start(&pIter, (int)nChangeset, pChangeset);
}else{
sStr.aData = (unsigned char*)pChangeset;
sStr.nData = nChangeset;
sStr.nData = (int)nChangeset;
rc = sqlite3changeset_start_strm(&pIter, testStreamInput, (void*)&sStr);
}
}
@@ -1363,9 +1362,9 @@ static int SQLITE_TCLAPI test_rebaser_cmd(
assert( rc==SQLITE_OK );
switch( iSub ){
case 0: { /* configure */
int nRebase = 0;
Tcl_Size nRebase = 0;
unsigned char *pRebase = Tcl_GetByteArrayFromObj(objv[2], &nRebase);
rc = sqlite3rebaser_configure(p, nRebase, pRebase);
rc = sqlite3rebaser_configure(p, (int)nRebase, pRebase);
break;
}
@@ -1376,10 +1375,12 @@ static int SQLITE_TCLAPI test_rebaser_cmd(
default: { /* rebase */
TestStreamInput sStr; /* Input stream */
TestSessionsBlob sOut; /* Output blob */
Tcl_Size nn;
memset(&sStr, 0, sizeof(sStr));
memset(&sOut, 0, sizeof(sOut));
sStr.aData = Tcl_GetByteArrayFromObj(objv[2], &sStr.nData);
sStr.aData = Tcl_GetByteArrayFromObj(objv[2], &nn);
sStr.nData = nn;
sStr.nStream = test_tcl_integer(interp, SESSION_STREAM_TCL_VAR);
if( sStr.nStream ){
@@ -1518,7 +1519,7 @@ static int SQLITE_TCLAPI test_changeset(
Tcl_Obj *CONST objv[]
){
void *pChangeset = 0; /* Buffer containing changeset */
int nChangeset = 0; /* Size of buffer aChangeset in bytes */
Tcl_Size nChangeset = 0; /* Size of buffer aChangeset in bytes */
int rc = SQLITE_OK;
char *z = 0;
@@ -1529,7 +1530,7 @@ static int SQLITE_TCLAPI test_changeset(
pChangeset = (void *)Tcl_GetByteArrayFromObj(objv[1], &nChangeset);
Tcl_ResetResult(interp);
rc = sqlite3_test_changeset(nChangeset, pChangeset, &z);
rc = sqlite3_test_changeset((int)nChangeset, pChangeset, &z);
if( rc!=SQLITE_OK ){
char *zErr = sqlite3_mprintf("(%d) - \"%s\"", rc, z);
Tcl_SetObjResult(interp, Tcl_NewStringObj(zErr, -1));
@@ -1654,9 +1655,9 @@ static int SQLITE_TCLAPI test_changegroup_cmd(
};
case 1: { /* add */
int nByte = 0;
Tcl_Size nByte = 0;
const u8 *aByte = Tcl_GetByteArrayFromObj(objv[2], &nByte);
rc = sqlite3changegroup_add(p->pGrp, nByte, (void*)aByte);
rc = sqlite3changegroup_add(p->pGrp, (int)nByte, (void*)aByte);
if( rc!=SQLITE_OK ) rc = test_session_error(interp, rc, 0);
break;
};
@@ -1804,7 +1805,7 @@ static int SQLITE_TCLAPI test_sqlite3changeset_start(
){
int isInvert = 0;
void *pChangeset = 0; /* Buffer containing changeset */
int nChangeset = 0; /* Size of buffer aChangeset in bytes */
Tcl_Size nChangeset = 0; /* Size of buffer aChangeset in bytes */
TestChangeIter *pNew = 0;
sqlite3_changeset_iter *pIter = 0;
int flags = 0;
@@ -1814,9 +1815,9 @@ static int SQLITE_TCLAPI test_sqlite3changeset_start(
char zCmd[64];
if( objc==3 ){
int n = 0;
Tcl_Size n = 0;
const char *z = Tcl_GetStringFromObj(objv[1], &n);
isInvert = (n>=2 && sqlite3_strnicmp(z, "-invert", n)==0);
isInvert = (n>=2 && sqlite3_strnicmp(z, "-invert", (int)n)==0);
}
if( objc!=2 && (objc!=3 || !isInvert) ){
@@ -1826,7 +1827,7 @@ static int SQLITE_TCLAPI test_sqlite3changeset_start(
flags = isInvert ? SQLITE_CHANGESETSTART_INVERT : 0;
pChangeset = (void *)Tcl_GetByteArrayFromObj(objv[objc-1], &nChangeset);
rc = sqlite3changeset_start_v2(&pIter, nChangeset, pChangeset, flags);
rc = sqlite3changeset_start_v2(&pIter, (int)nChangeset, pChangeset, flags);
if( rc!=SQLITE_OK ){
char *zErr = sqlite3_mprintf(
"error in sqlite3changeset_start_v2() - %d", rc