forked from mirror/go-sqlcipher
upgrade amalgamation code
This commit is contained in:
parent
e85a2792f3
commit
9cb060a131
|
@ -1,7 +1,7 @@
|
||||||
#ifndef USE_LIBSQLITE3
|
#ifndef USE_LIBSQLITE3
|
||||||
/******************************************************************************
|
/******************************************************************************
|
||||||
** This file is an amalgamation of many separate C source files from SQLite
|
** This file is an amalgamation of many separate C source files from SQLite
|
||||||
** version 3.25.0. By combining all the individual C code files into this
|
** version 3.25.2. By combining all the individual C code files into this
|
||||||
** single large file, the entire code can be compiled as a single translation
|
** single large file, the entire code can be compiled as a single translation
|
||||||
** unit. This allows many compilers to do optimizations that would not be
|
** unit. This allows many compilers to do optimizations that would not be
|
||||||
** possible if the files were compiled separately. Performance improvements
|
** possible if the files were compiled separately. Performance improvements
|
||||||
|
@ -1157,9 +1157,9 @@ extern "C" {
|
||||||
** [sqlite3_libversion_number()], [sqlite3_sourceid()],
|
** [sqlite3_libversion_number()], [sqlite3_sourceid()],
|
||||||
** [sqlite_version()] and [sqlite_source_id()].
|
** [sqlite_version()] and [sqlite_source_id()].
|
||||||
*/
|
*/
|
||||||
#define SQLITE_VERSION "3.25.0"
|
#define SQLITE_VERSION "3.25.2"
|
||||||
#define SQLITE_VERSION_NUMBER 3025000
|
#define SQLITE_VERSION_NUMBER 3025002
|
||||||
#define SQLITE_SOURCE_ID "2018-09-15 04:01:47 b63af6c3bd33152742648d5d2e8dc5d5fcbcdd27df409272b6aea00a6f761760"
|
#define SQLITE_SOURCE_ID "2018-09-25 19:08:10 fb90e7189ae6d62e77ba3a308ca5d683f90bbe633cf681865365b8e92792d1c7"
|
||||||
|
|
||||||
/*
|
/*
|
||||||
** CAPI3REF: Run-Time Library Version Numbers
|
** CAPI3REF: Run-Time Library Version Numbers
|
||||||
|
@ -16270,6 +16270,7 @@ struct sqlite3 {
|
||||||
#define SQLITE_EnableQPSG 0x00800000 /* Query Planner Stability Guarantee*/
|
#define SQLITE_EnableQPSG 0x00800000 /* Query Planner Stability Guarantee*/
|
||||||
#define SQLITE_TriggerEQP 0x01000000 /* Show trigger EXPLAIN QUERY PLAN */
|
#define SQLITE_TriggerEQP 0x01000000 /* Show trigger EXPLAIN QUERY PLAN */
|
||||||
#define SQLITE_ResetDatabase 0x02000000 /* Reset the database */
|
#define SQLITE_ResetDatabase 0x02000000 /* Reset the database */
|
||||||
|
#define SQLITE_LegacyAlter 0x04000000 /* Legacy ALTER TABLE behaviour */
|
||||||
|
|
||||||
/* Flags used only if debugging */
|
/* Flags used only if debugging */
|
||||||
#ifdef SQLITE_DEBUG
|
#ifdef SQLITE_DEBUG
|
||||||
|
@ -32620,7 +32621,11 @@ static struct unix_syscall {
|
||||||
#define osLstat ((int(*)(const char*,struct stat*))aSyscall[27].pCurrent)
|
#define osLstat ((int(*)(const char*,struct stat*))aSyscall[27].pCurrent)
|
||||||
|
|
||||||
#if defined(__linux__) && defined(SQLITE_ENABLE_BATCH_ATOMIC_WRITE)
|
#if defined(__linux__) && defined(SQLITE_ENABLE_BATCH_ATOMIC_WRITE)
|
||||||
|
# ifdef __ANDROID__
|
||||||
|
{ "ioctl", (sqlite3_syscall_ptr)(int(*)(int, int, ...))ioctl, 0 },
|
||||||
|
# else
|
||||||
{ "ioctl", (sqlite3_syscall_ptr)ioctl, 0 },
|
{ "ioctl", (sqlite3_syscall_ptr)ioctl, 0 },
|
||||||
|
# endif
|
||||||
#else
|
#else
|
||||||
{ "ioctl", (sqlite3_syscall_ptr)0, 0 },
|
{ "ioctl", (sqlite3_syscall_ptr)0, 0 },
|
||||||
#endif
|
#endif
|
||||||
|
@ -89714,7 +89719,10 @@ case OP_VNext: { /* jump */
|
||||||
case OP_VRename: {
|
case OP_VRename: {
|
||||||
sqlite3_vtab *pVtab;
|
sqlite3_vtab *pVtab;
|
||||||
Mem *pName;
|
Mem *pName;
|
||||||
|
int isLegacy;
|
||||||
|
|
||||||
|
isLegacy = (db->flags & SQLITE_LegacyAlter);
|
||||||
|
db->flags |= SQLITE_LegacyAlter;
|
||||||
pVtab = pOp->p4.pVtab->pVtab;
|
pVtab = pOp->p4.pVtab->pVtab;
|
||||||
pName = &aMem[pOp->p1];
|
pName = &aMem[pOp->p1];
|
||||||
assert( pVtab->pModule->xRename );
|
assert( pVtab->pModule->xRename );
|
||||||
|
@ -89728,6 +89736,7 @@ case OP_VRename: {
|
||||||
rc = sqlite3VdbeChangeEncoding(pName, SQLITE_UTF8);
|
rc = sqlite3VdbeChangeEncoding(pName, SQLITE_UTF8);
|
||||||
if( rc ) goto abort_due_to_error;
|
if( rc ) goto abort_due_to_error;
|
||||||
rc = pVtab->pModule->xRename(pVtab, pName->z);
|
rc = pVtab->pModule->xRename(pVtab, pName->z);
|
||||||
|
if( isLegacy==0 ) db->flags &= ~SQLITE_LegacyAlter;
|
||||||
sqlite3VtabImportErrmsg(p, pVtab);
|
sqlite3VtabImportErrmsg(p, pVtab);
|
||||||
p->expired = 0;
|
p->expired = 0;
|
||||||
if( rc ) goto abort_due_to_error;
|
if( rc ) goto abort_due_to_error;
|
||||||
|
@ -97048,17 +97057,14 @@ static Expr *exprDup(sqlite3 *db, Expr *p, int dupFlags, u8 **pzBuffer){
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Fill in pNew->pLeft and pNew->pRight. */
|
/* Fill in pNew->pLeft and pNew->pRight. */
|
||||||
|
zAlloc += dupedExprNodeSize(p, dupFlags);
|
||||||
if( ExprHasProperty(pNew, EP_Reduced|EP_TokenOnly) ){
|
if( ExprHasProperty(pNew, EP_Reduced|EP_TokenOnly) ){
|
||||||
zAlloc += dupedExprNodeSize(p, dupFlags);
|
|
||||||
if( !ExprHasProperty(pNew, EP_TokenOnly|EP_Leaf) ){
|
if( !ExprHasProperty(pNew, EP_TokenOnly|EP_Leaf) ){
|
||||||
pNew->pLeft = p->pLeft ?
|
pNew->pLeft = p->pLeft ?
|
||||||
exprDup(db, p->pLeft, EXPRDUP_REDUCE, &zAlloc) : 0;
|
exprDup(db, p->pLeft, EXPRDUP_REDUCE, &zAlloc) : 0;
|
||||||
pNew->pRight = p->pRight ?
|
pNew->pRight = p->pRight ?
|
||||||
exprDup(db, p->pRight, EXPRDUP_REDUCE, &zAlloc) : 0;
|
exprDup(db, p->pRight, EXPRDUP_REDUCE, &zAlloc) : 0;
|
||||||
}
|
}
|
||||||
if( pzBuffer ){
|
|
||||||
*pzBuffer = zAlloc;
|
|
||||||
}
|
|
||||||
}else{
|
}else{
|
||||||
#ifndef SQLITE_OMIT_WINDOWFUNC
|
#ifndef SQLITE_OMIT_WINDOWFUNC
|
||||||
if( ExprHasProperty(p, EP_Reduced|EP_TokenOnly) ){
|
if( ExprHasProperty(p, EP_Reduced|EP_TokenOnly) ){
|
||||||
|
@ -97078,6 +97084,9 @@ static Expr *exprDup(sqlite3 *db, Expr *p, int dupFlags, u8 **pzBuffer){
|
||||||
pNew->pRight = sqlite3ExprDup(db, p->pRight, 0);
|
pNew->pRight = sqlite3ExprDup(db, p->pRight, 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if( pzBuffer ){
|
||||||
|
*pzBuffer = zAlloc;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return pNew;
|
return pNew;
|
||||||
}
|
}
|
||||||
|
@ -100629,18 +100638,15 @@ SQLITE_PRIVATE int sqlite3ExprImpliesExpr(Parse *pParse, Expr *pE1, Expr *pE2, i
|
||||||
/*
|
/*
|
||||||
** This is the Expr node callback for sqlite3ExprImpliesNotNullRow().
|
** This is the Expr node callback for sqlite3ExprImpliesNotNullRow().
|
||||||
** If the expression node requires that the table at pWalker->iCur
|
** If the expression node requires that the table at pWalker->iCur
|
||||||
** have a non-NULL column, then set pWalker->eCode to 1 and abort.
|
** have one or more non-NULL column, then set pWalker->eCode to 1 and abort.
|
||||||
|
**
|
||||||
|
** This routine controls an optimization. False positives (setting
|
||||||
|
** pWalker->eCode to 1 when it should not be) are deadly, but false-negatives
|
||||||
|
** (never setting pWalker->eCode) is a harmless missed optimization.
|
||||||
*/
|
*/
|
||||||
static int impliesNotNullRow(Walker *pWalker, Expr *pExpr){
|
static int impliesNotNullRow(Walker *pWalker, Expr *pExpr){
|
||||||
/* This routine is only called for WHERE clause expressions and so it
|
testcase( pExpr->op==TK_AGG_COLUMN );
|
||||||
** cannot have any TK_AGG_COLUMN entries because those are only found
|
|
||||||
** in HAVING clauses. We can get a TK_AGG_FUNCTION in a WHERE clause,
|
|
||||||
** but that is an illegal construct and the query will be rejected at
|
|
||||||
** a later stage of processing, so the TK_AGG_FUNCTION case does not
|
|
||||||
** need to be considered here. */
|
|
||||||
assert( pExpr->op!=TK_AGG_COLUMN );
|
|
||||||
testcase( pExpr->op==TK_AGG_FUNCTION );
|
testcase( pExpr->op==TK_AGG_FUNCTION );
|
||||||
|
|
||||||
if( ExprHasProperty(pExpr, EP_FromJoin) ) return WRC_Prune;
|
if( ExprHasProperty(pExpr, EP_FromJoin) ) return WRC_Prune;
|
||||||
switch( pExpr->op ){
|
switch( pExpr->op ){
|
||||||
case TK_ISNOT:
|
case TK_ISNOT:
|
||||||
|
@ -101299,20 +101305,6 @@ SQLITE_PRIVATE void sqlite3AlterRenameTable(
|
||||||
goto exit_rename_table;
|
goto exit_rename_table;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* If this is a virtual table, invoke the xRename() function if
|
|
||||||
** one is defined. The xRename() callback will modify the names
|
|
||||||
** of any resources used by the v-table implementation (including other
|
|
||||||
** SQLite tables) that are identified by the name of the virtual table.
|
|
||||||
*/
|
|
||||||
#ifndef SQLITE_OMIT_VIRTUALTABLE
|
|
||||||
if( pVTab ){
|
|
||||||
int i = ++pParse->nMem;
|
|
||||||
sqlite3VdbeLoadString(v, i, zName);
|
|
||||||
sqlite3VdbeAddOp4(v, OP_VRename, i, 0, 0,(const char*)pVTab, P4_VTAB);
|
|
||||||
sqlite3MayAbort(pParse);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* figure out how many UTF-8 characters are in zName */
|
/* figure out how many UTF-8 characters are in zName */
|
||||||
zTabName = pTab->zName;
|
zTabName = pTab->zName;
|
||||||
nTabName = sqlite3Utf8CharLen(zTabName, -1);
|
nTabName = sqlite3Utf8CharLen(zTabName, -1);
|
||||||
|
@ -101370,6 +101362,20 @@ SQLITE_PRIVATE void sqlite3AlterRenameTable(
|
||||||
, zDb, zTabName, zName, zTabName, zDb, zName);
|
, zDb, zTabName, zName, zTabName, zDb, zName);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* If this is a virtual table, invoke the xRename() function if
|
||||||
|
** one is defined. The xRename() callback will modify the names
|
||||||
|
** of any resources used by the v-table implementation (including other
|
||||||
|
** SQLite tables) that are identified by the name of the virtual table.
|
||||||
|
*/
|
||||||
|
#ifndef SQLITE_OMIT_VIRTUALTABLE
|
||||||
|
if( pVTab ){
|
||||||
|
int i = ++pParse->nMem;
|
||||||
|
sqlite3VdbeLoadString(v, i, zName);
|
||||||
|
sqlite3VdbeAddOp4(v, OP_VRename, i, 0, 0,(const char*)pVTab, P4_VTAB);
|
||||||
|
sqlite3MayAbort(pParse);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
renameReloadSchema(pParse, iDb);
|
renameReloadSchema(pParse, iDb);
|
||||||
renameTestSchema(pParse, zDb, iDb==1);
|
renameTestSchema(pParse, zDb, iDb==1);
|
||||||
|
|
||||||
|
@ -102206,7 +102212,7 @@ static int renameResolveTrigger(Parse *pParse, const char *zDb){
|
||||||
Table *pTarget = sqlite3LocateTable(pParse, 0, pStep->zTarget, zDb);
|
Table *pTarget = sqlite3LocateTable(pParse, 0, pStep->zTarget, zDb);
|
||||||
if( pTarget==0 ){
|
if( pTarget==0 ){
|
||||||
rc = SQLITE_ERROR;
|
rc = SQLITE_ERROR;
|
||||||
}else{
|
}else if( SQLITE_OK==(rc = sqlite3ViewGetColumnNames(pParse, pTarget)) ){
|
||||||
SrcList sSrc;
|
SrcList sSrc;
|
||||||
memset(&sSrc, 0, sizeof(sSrc));
|
memset(&sSrc, 0, sizeof(sSrc));
|
||||||
sSrc.nSrc = 1;
|
sSrc.nSrc = 1;
|
||||||
|
@ -102552,17 +102558,20 @@ static void renameTableFunc(
|
||||||
rc = renameParseSql(&sParse, zDb, 1, db, zInput, bTemp);
|
rc = renameParseSql(&sParse, zDb, 1, db, zInput, bTemp);
|
||||||
|
|
||||||
if( rc==SQLITE_OK ){
|
if( rc==SQLITE_OK ){
|
||||||
|
int isLegacy = (db->flags & SQLITE_LegacyAlter);
|
||||||
if( sParse.pNewTable ){
|
if( sParse.pNewTable ){
|
||||||
Table *pTab = sParse.pNewTable;
|
Table *pTab = sParse.pNewTable;
|
||||||
|
|
||||||
if( pTab->pSelect ){
|
if( pTab->pSelect ){
|
||||||
NameContext sNC;
|
if( isLegacy==0 ){
|
||||||
memset(&sNC, 0, sizeof(sNC));
|
NameContext sNC;
|
||||||
sNC.pParse = &sParse;
|
memset(&sNC, 0, sizeof(sNC));
|
||||||
|
sNC.pParse = &sParse;
|
||||||
|
|
||||||
sqlite3SelectPrep(&sParse, pTab->pSelect, &sNC);
|
sqlite3SelectPrep(&sParse, pTab->pSelect, &sNC);
|
||||||
if( sParse.nErr ) rc = sParse.rc;
|
if( sParse.nErr ) rc = sParse.rc;
|
||||||
sqlite3WalkSelect(&sWalker, pTab->pSelect);
|
sqlite3WalkSelect(&sWalker, pTab->pSelect);
|
||||||
|
}
|
||||||
}else{
|
}else{
|
||||||
/* Modify any FK definitions to point to the new table. */
|
/* Modify any FK definitions to point to the new table. */
|
||||||
#ifndef SQLITE_OMIT_FOREIGN_KEY
|
#ifndef SQLITE_OMIT_FOREIGN_KEY
|
||||||
|
@ -102581,7 +102590,9 @@ static void renameTableFunc(
|
||||||
** "CREATE [VIRTUAL] TABLE" bit. */
|
** "CREATE [VIRTUAL] TABLE" bit. */
|
||||||
if( sqlite3_stricmp(zOld, pTab->zName)==0 ){
|
if( sqlite3_stricmp(zOld, pTab->zName)==0 ){
|
||||||
sCtx.pTab = pTab;
|
sCtx.pTab = pTab;
|
||||||
sqlite3WalkExprList(&sWalker, pTab->pCheck);
|
if( isLegacy==0 ){
|
||||||
|
sqlite3WalkExprList(&sWalker, pTab->pCheck);
|
||||||
|
}
|
||||||
renameTokenFind(&sParse, &sCtx, pTab->zName);
|
renameTokenFind(&sParse, &sCtx, pTab->zName);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -102589,7 +102600,9 @@ static void renameTableFunc(
|
||||||
|
|
||||||
else if( sParse.pNewIndex ){
|
else if( sParse.pNewIndex ){
|
||||||
renameTokenFind(&sParse, &sCtx, sParse.pNewIndex->zName);
|
renameTokenFind(&sParse, &sCtx, sParse.pNewIndex->zName);
|
||||||
sqlite3WalkExpr(&sWalker, sParse.pNewIndex->pPartIdxWhere);
|
if( isLegacy==0 ){
|
||||||
|
sqlite3WalkExpr(&sWalker, sParse.pNewIndex->pPartIdxWhere);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifndef SQLITE_OMIT_TRIGGER
|
#ifndef SQLITE_OMIT_TRIGGER
|
||||||
|
@ -102602,12 +102615,14 @@ static void renameTableFunc(
|
||||||
renameTokenFind(&sParse, &sCtx, sParse.pNewTrigger->table);
|
renameTokenFind(&sParse, &sCtx, sParse.pNewTrigger->table);
|
||||||
}
|
}
|
||||||
|
|
||||||
rc = renameResolveTrigger(&sParse, bTemp ? 0 : zDb);
|
if( isLegacy==0 ){
|
||||||
if( rc==SQLITE_OK ){
|
rc = renameResolveTrigger(&sParse, bTemp ? 0 : zDb);
|
||||||
renameWalkTrigger(&sWalker, pTrigger);
|
if( rc==SQLITE_OK ){
|
||||||
for(pStep=pTrigger->step_list; pStep; pStep=pStep->pNext){
|
renameWalkTrigger(&sWalker, pTrigger);
|
||||||
if( pStep->zTarget && 0==sqlite3_stricmp(pStep->zTarget, zOld) ){
|
for(pStep=pTrigger->step_list; pStep; pStep=pStep->pNext){
|
||||||
renameTokenFind(&sParse, &sCtx, pStep->zTarget);
|
if( pStep->zTarget && 0==sqlite3_stricmp(pStep->zTarget, zOld) ){
|
||||||
|
renameTokenFind(&sParse, &sCtx, pStep->zTarget);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -102665,6 +102680,7 @@ static void renameTableTest(
|
||||||
char const *zDb = (const char*)sqlite3_value_text(argv[0]);
|
char const *zDb = (const char*)sqlite3_value_text(argv[0]);
|
||||||
char const *zInput = (const char*)sqlite3_value_text(argv[1]);
|
char const *zInput = (const char*)sqlite3_value_text(argv[1]);
|
||||||
int bTemp = sqlite3_value_int(argv[4]);
|
int bTemp = sqlite3_value_int(argv[4]);
|
||||||
|
int isLegacy = (db->flags & SQLITE_LegacyAlter);
|
||||||
|
|
||||||
#ifndef SQLITE_OMIT_AUTHORIZATION
|
#ifndef SQLITE_OMIT_AUTHORIZATION
|
||||||
sqlite3_xauth xAuth = db->xAuth;
|
sqlite3_xauth xAuth = db->xAuth;
|
||||||
|
@ -102677,7 +102693,7 @@ static void renameTableTest(
|
||||||
Parse sParse;
|
Parse sParse;
|
||||||
rc = renameParseSql(&sParse, zDb, 1, db, zInput, bTemp);
|
rc = renameParseSql(&sParse, zDb, 1, db, zInput, bTemp);
|
||||||
if( rc==SQLITE_OK ){
|
if( rc==SQLITE_OK ){
|
||||||
if( sParse.pNewTable && sParse.pNewTable->pSelect ){
|
if( isLegacy==0 && sParse.pNewTable && sParse.pNewTable->pSelect ){
|
||||||
NameContext sNC;
|
NameContext sNC;
|
||||||
memset(&sNC, 0, sizeof(sNC));
|
memset(&sNC, 0, sizeof(sNC));
|
||||||
sNC.pParse = &sParse;
|
sNC.pParse = &sParse;
|
||||||
|
@ -102686,7 +102702,9 @@ static void renameTableTest(
|
||||||
}
|
}
|
||||||
|
|
||||||
else if( sParse.pNewTrigger ){
|
else if( sParse.pNewTrigger ){
|
||||||
rc = renameResolveTrigger(&sParse, bTemp ? 0 : zDb);
|
if( isLegacy==0 ){
|
||||||
|
rc = renameResolveTrigger(&sParse, bTemp ? 0 : zDb);
|
||||||
|
}
|
||||||
if( rc==SQLITE_OK ){
|
if( rc==SQLITE_OK ){
|
||||||
int i1 = sqlite3SchemaToIndex(db, sParse.pNewTrigger->pTabSchema);
|
int i1 = sqlite3SchemaToIndex(db, sParse.pNewTrigger->pTabSchema);
|
||||||
int i2 = sqlite3FindDbName(db, zDb);
|
int i2 = sqlite3FindDbName(db, zDb);
|
||||||
|
@ -107336,10 +107354,6 @@ static void convertToWithoutRowidTable(Parse *pParse, Table *pTab){
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* The remaining transformations only apply to b-tree tables, not to
|
|
||||||
** virtual tables */
|
|
||||||
if( IN_DECLARE_VTAB ) return;
|
|
||||||
|
|
||||||
/* Convert the P3 operand of the OP_CreateBtree opcode from BTREE_INTKEY
|
/* Convert the P3 operand of the OP_CreateBtree opcode from BTREE_INTKEY
|
||||||
** into BTREE_BLOBKEY.
|
** into BTREE_BLOBKEY.
|
||||||
*/
|
*/
|
||||||
|
@ -107852,6 +107866,10 @@ SQLITE_PRIVATE int sqlite3ViewGetColumnNames(Parse *pParse, Table *pTable){
|
||||||
assert( pTable->pSelect );
|
assert( pTable->pSelect );
|
||||||
pSel = sqlite3SelectDup(db, pTable->pSelect, 0);
|
pSel = sqlite3SelectDup(db, pTable->pSelect, 0);
|
||||||
if( pSel ){
|
if( pSel ){
|
||||||
|
#ifndef SQLITE_OMIT_ALTERTABLE
|
||||||
|
u8 eParseMode = pParse->eParseMode;
|
||||||
|
pParse->eParseMode = PARSE_MODE_NORMAL;
|
||||||
|
#endif
|
||||||
n = pParse->nTab;
|
n = pParse->nTab;
|
||||||
sqlite3SrcListAssignCursors(pParse, pSel->pSrc);
|
sqlite3SrcListAssignCursors(pParse, pSel->pSrc);
|
||||||
pTable->nCol = -1;
|
pTable->nCol = -1;
|
||||||
|
@ -107897,6 +107915,9 @@ SQLITE_PRIVATE int sqlite3ViewGetColumnNames(Parse *pParse, Table *pTable){
|
||||||
sqlite3DeleteTable(db, pSelTab);
|
sqlite3DeleteTable(db, pSelTab);
|
||||||
sqlite3SelectDelete(db, pSel);
|
sqlite3SelectDelete(db, pSel);
|
||||||
db->lookaside.bDisable--;
|
db->lookaside.bDisable--;
|
||||||
|
#ifndef SQLITE_OMIT_ALTERTABLE
|
||||||
|
pParse->eParseMode = eParseMode;
|
||||||
|
#endif
|
||||||
} else {
|
} else {
|
||||||
nErr++;
|
nErr++;
|
||||||
}
|
}
|
||||||
|
@ -119463,6 +119484,11 @@ static const PragmaName aPragmaName[] = {
|
||||||
/* iArg: */ 0 },
|
/* iArg: */ 0 },
|
||||||
#endif
|
#endif
|
||||||
#if !defined(SQLITE_OMIT_FLAG_PRAGMAS)
|
#if !defined(SQLITE_OMIT_FLAG_PRAGMAS)
|
||||||
|
{/* zName: */ "legacy_alter_table",
|
||||||
|
/* ePragTyp: */ PragTyp_FLAG,
|
||||||
|
/* ePragFlg: */ PragFlg_Result0|PragFlg_NoColumns1,
|
||||||
|
/* ColNames: */ 0, 0,
|
||||||
|
/* iArg: */ SQLITE_LegacyAlter },
|
||||||
{/* zName: */ "legacy_file_format",
|
{/* zName: */ "legacy_file_format",
|
||||||
/* ePragTyp: */ PragTyp_FLAG,
|
/* ePragTyp: */ PragTyp_FLAG,
|
||||||
/* ePragFlg: */ PragFlg_Result0|PragFlg_NoColumns1,
|
/* ePragFlg: */ PragFlg_Result0|PragFlg_NoColumns1,
|
||||||
|
@ -119716,7 +119742,7 @@ static const PragmaName aPragmaName[] = {
|
||||||
/* iArg: */ SQLITE_WriteSchema },
|
/* iArg: */ SQLITE_WriteSchema },
|
||||||
#endif
|
#endif
|
||||||
};
|
};
|
||||||
/* Number of pragmas: 60 on by default, 77 total. */
|
/* Number of pragmas: 61 on by default, 78 total. */
|
||||||
|
|
||||||
/************** End of pragma.h **********************************************/
|
/************** End of pragma.h **********************************************/
|
||||||
/************** Continuing where we left off in pragma.c *********************/
|
/************** Continuing where we left off in pragma.c *********************/
|
||||||
|
@ -129184,6 +129210,7 @@ SQLITE_PRIVATE int sqlite3Select(
|
||||||
sqlite3VdbeAddOp2(v, OP_Goto, 0, iBreak);
|
sqlite3VdbeAddOp2(v, OP_Goto, 0, iBreak);
|
||||||
sqlite3VdbeResolveLabel(v, addrGosub);
|
sqlite3VdbeResolveLabel(v, addrGosub);
|
||||||
VdbeNoopComment((v, "inner-loop subroutine"));
|
VdbeNoopComment((v, "inner-loop subroutine"));
|
||||||
|
sSort.labelOBLopt = 0;
|
||||||
selectInnerLoop(pParse, p, -1, &sSort, &sDistinct, pDest, iCont, iBreak);
|
selectInnerLoop(pParse, p, -1, &sSort, &sDistinct, pDest, iCont, iBreak);
|
||||||
sqlite3VdbeResolveLabel(v, iCont);
|
sqlite3VdbeResolveLabel(v, iCont);
|
||||||
sqlite3VdbeAddOp1(v, OP_Return, regGosub);
|
sqlite3VdbeAddOp1(v, OP_Return, regGosub);
|
||||||
|
@ -154756,6 +154783,7 @@ static int openDatabase(
|
||||||
db->nDb = 2;
|
db->nDb = 2;
|
||||||
db->magic = SQLITE_MAGIC_BUSY;
|
db->magic = SQLITE_MAGIC_BUSY;
|
||||||
db->aDb = db->aDbStatic;
|
db->aDb = db->aDbStatic;
|
||||||
|
db->lookaside.bDisable = 1;
|
||||||
|
|
||||||
assert( sizeof(db->aLimit)==sizeof(aHardLimit) );
|
assert( sizeof(db->aLimit)==sizeof(aHardLimit) );
|
||||||
memcpy(db->aLimit, aHardLimit, sizeof(db->aLimit));
|
memcpy(db->aLimit, aHardLimit, sizeof(db->aLimit));
|
||||||
|
@ -214417,7 +214445,7 @@ static void fts5SourceIdFunc(
|
||||||
){
|
){
|
||||||
assert( nArg==0 );
|
assert( nArg==0 );
|
||||||
UNUSED_PARAM2(nArg, apUnused);
|
UNUSED_PARAM2(nArg, apUnused);
|
||||||
sqlite3_result_text(pCtx, "fts5: 2018-09-15 04:01:47 b63af6c3bd33152742648d5d2e8dc5d5fcbcdd27df409272b6aea00a6f761760", -1, SQLITE_TRANSIENT);
|
sqlite3_result_text(pCtx, "fts5: 2018-09-25 19:08:10 fb90e7189ae6d62e77ba3a308ca5d683f90bbe633cf681865365b8e92792d1c7", -1, SQLITE_TRANSIENT);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int fts5Init(sqlite3 *db){
|
static int fts5Init(sqlite3 *db){
|
||||||
|
@ -219127,9 +219155,9 @@ SQLITE_API int sqlite3_stmt_init(
|
||||||
#endif /* !defined(SQLITE_CORE) || defined(SQLITE_ENABLE_STMTVTAB) */
|
#endif /* !defined(SQLITE_CORE) || defined(SQLITE_ENABLE_STMTVTAB) */
|
||||||
|
|
||||||
/************** End of stmt.c ************************************************/
|
/************** End of stmt.c ************************************************/
|
||||||
#if __LINE__!=219129
|
#if __LINE__!=219157
|
||||||
#undef SQLITE_SOURCE_ID
|
#undef SQLITE_SOURCE_ID
|
||||||
#define SQLITE_SOURCE_ID "2018-09-15 04:01:47 b63af6c3bd33152742648d5d2e8dc5d5fcbcdd27df409272b6aea00a6f76alt2"
|
#define SQLITE_SOURCE_ID "2018-09-25 19:08:10 fb90e7189ae6d62e77ba3a308ca5d683f90bbe633cf681865365b8e92792alt2"
|
||||||
#endif
|
#endif
|
||||||
/* Return the source-id for this library */
|
/* Return the source-id for this library */
|
||||||
SQLITE_API const char *sqlite3_sourceid(void){ return SQLITE_SOURCE_ID; }
|
SQLITE_API const char *sqlite3_sourceid(void){ return SQLITE_SOURCE_ID; }
|
||||||
|
|
|
@ -124,9 +124,9 @@ extern "C" {
|
||||||
** [sqlite3_libversion_number()], [sqlite3_sourceid()],
|
** [sqlite3_libversion_number()], [sqlite3_sourceid()],
|
||||||
** [sqlite_version()] and [sqlite_source_id()].
|
** [sqlite_version()] and [sqlite_source_id()].
|
||||||
*/
|
*/
|
||||||
#define SQLITE_VERSION "3.25.0"
|
#define SQLITE_VERSION "3.25.2"
|
||||||
#define SQLITE_VERSION_NUMBER 3025000
|
#define SQLITE_VERSION_NUMBER 3025002
|
||||||
#define SQLITE_SOURCE_ID "2018-09-15 04:01:47 b63af6c3bd33152742648d5d2e8dc5d5fcbcdd27df409272b6aea00a6f761760"
|
#define SQLITE_SOURCE_ID "2018-09-25 19:08:10 fb90e7189ae6d62e77ba3a308ca5d683f90bbe633cf681865365b8e92792d1c7"
|
||||||
|
|
||||||
/*
|
/*
|
||||||
** CAPI3REF: Run-Time Library Version Numbers
|
** CAPI3REF: Run-Time Library Version Numbers
|
||||||
|
|
Loading…
Reference in New Issue