Import sqlite3-3.27.2 (3270200)
This commit is contained in:
parent
54fa4168a7
commit
1651db5a41
20
configure
vendored
20
configure
vendored
@ -1,6 +1,6 @@
|
|||||||
#! /bin/sh
|
#! /bin/sh
|
||||||
# Guess values for system-dependent variables and create Makefiles.
|
# Guess values for system-dependent variables and create Makefiles.
|
||||||
# Generated by GNU Autoconf 2.69 for sqlite 3.27.1.
|
# Generated by GNU Autoconf 2.69 for sqlite 3.27.2.
|
||||||
#
|
#
|
||||||
# Report bugs to <http://www.sqlite.org>.
|
# Report bugs to <http://www.sqlite.org>.
|
||||||
#
|
#
|
||||||
@ -590,8 +590,8 @@ MAKEFLAGS=
|
|||||||
# Identity of this package.
|
# Identity of this package.
|
||||||
PACKAGE_NAME='sqlite'
|
PACKAGE_NAME='sqlite'
|
||||||
PACKAGE_TARNAME='sqlite'
|
PACKAGE_TARNAME='sqlite'
|
||||||
PACKAGE_VERSION='3.27.1'
|
PACKAGE_VERSION='3.27.2'
|
||||||
PACKAGE_STRING='sqlite 3.27.1'
|
PACKAGE_STRING='sqlite 3.27.2'
|
||||||
PACKAGE_BUGREPORT='http://www.sqlite.org'
|
PACKAGE_BUGREPORT='http://www.sqlite.org'
|
||||||
PACKAGE_URL=''
|
PACKAGE_URL=''
|
||||||
|
|
||||||
@ -1341,7 +1341,7 @@ if test "$ac_init_help" = "long"; then
|
|||||||
# Omit some internal or obsolete options to make the list less imposing.
|
# Omit some internal or obsolete options to make the list less imposing.
|
||||||
# This message is too long to be a string in the A/UX 3.1 sh.
|
# This message is too long to be a string in the A/UX 3.1 sh.
|
||||||
cat <<_ACEOF
|
cat <<_ACEOF
|
||||||
\`configure' configures sqlite 3.27.1 to adapt to many kinds of systems.
|
\`configure' configures sqlite 3.27.2 to adapt to many kinds of systems.
|
||||||
|
|
||||||
Usage: $0 [OPTION]... [VAR=VALUE]...
|
Usage: $0 [OPTION]... [VAR=VALUE]...
|
||||||
|
|
||||||
@ -1412,7 +1412,7 @@ fi
|
|||||||
|
|
||||||
if test -n "$ac_init_help"; then
|
if test -n "$ac_init_help"; then
|
||||||
case $ac_init_help in
|
case $ac_init_help in
|
||||||
short | recursive ) echo "Configuration of sqlite 3.27.1:";;
|
short | recursive ) echo "Configuration of sqlite 3.27.2:";;
|
||||||
esac
|
esac
|
||||||
cat <<\_ACEOF
|
cat <<\_ACEOF
|
||||||
|
|
||||||
@ -1537,7 +1537,7 @@ fi
|
|||||||
test -n "$ac_init_help" && exit $ac_status
|
test -n "$ac_init_help" && exit $ac_status
|
||||||
if $ac_init_version; then
|
if $ac_init_version; then
|
||||||
cat <<\_ACEOF
|
cat <<\_ACEOF
|
||||||
sqlite configure 3.27.1
|
sqlite configure 3.27.2
|
||||||
generated by GNU Autoconf 2.69
|
generated by GNU Autoconf 2.69
|
||||||
|
|
||||||
Copyright (C) 2012 Free Software Foundation, Inc.
|
Copyright (C) 2012 Free Software Foundation, Inc.
|
||||||
@ -1952,7 +1952,7 @@ cat >config.log <<_ACEOF
|
|||||||
This file contains any messages produced by compilers while
|
This file contains any messages produced by compilers while
|
||||||
running configure, to aid debugging if configure makes a mistake.
|
running configure, to aid debugging if configure makes a mistake.
|
||||||
|
|
||||||
It was created by sqlite $as_me 3.27.1, which was
|
It was created by sqlite $as_me 3.27.2, which was
|
||||||
generated by GNU Autoconf 2.69. Invocation command line was
|
generated by GNU Autoconf 2.69. Invocation command line was
|
||||||
|
|
||||||
$ $0 $@
|
$ $0 $@
|
||||||
@ -2818,7 +2818,7 @@ fi
|
|||||||
|
|
||||||
# Define the identity of the package.
|
# Define the identity of the package.
|
||||||
PACKAGE='sqlite'
|
PACKAGE='sqlite'
|
||||||
VERSION='3.27.1'
|
VERSION='3.27.2'
|
||||||
|
|
||||||
|
|
||||||
cat >>confdefs.h <<_ACEOF
|
cat >>confdefs.h <<_ACEOF
|
||||||
@ -14438,7 +14438,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
|
|||||||
# report actual input values of CONFIG_FILES etc. instead of their
|
# report actual input values of CONFIG_FILES etc. instead of their
|
||||||
# values after options handling.
|
# values after options handling.
|
||||||
ac_log="
|
ac_log="
|
||||||
This file was extended by sqlite $as_me 3.27.1, which was
|
This file was extended by sqlite $as_me 3.27.2, which was
|
||||||
generated by GNU Autoconf 2.69. Invocation command line was
|
generated by GNU Autoconf 2.69. Invocation command line was
|
||||||
|
|
||||||
CONFIG_FILES = $CONFIG_FILES
|
CONFIG_FILES = $CONFIG_FILES
|
||||||
@ -14495,7 +14495,7 @@ _ACEOF
|
|||||||
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
|
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
|
||||||
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
|
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
|
||||||
ac_cs_version="\\
|
ac_cs_version="\\
|
||||||
sqlite config.status 3.27.1
|
sqlite config.status 3.27.2
|
||||||
configured by $0, generated by GNU Autoconf 2.69,
|
configured by $0, generated by GNU Autoconf 2.69,
|
||||||
with options \\"\$ac_cs_config\\"
|
with options \\"\$ac_cs_config\\"
|
||||||
|
|
||||||
|
@ -10,7 +10,7 @@
|
|||||||
#
|
#
|
||||||
|
|
||||||
AC_PREREQ(2.61)
|
AC_PREREQ(2.61)
|
||||||
AC_INIT(sqlite, 3.27.1, http://www.sqlite.org)
|
AC_INIT(sqlite, 3.27.2, http://www.sqlite.org)
|
||||||
AC_CONFIG_SRCDIR([sqlite3.c])
|
AC_CONFIG_SRCDIR([sqlite3.c])
|
||||||
AC_CONFIG_AUX_DIR([.])
|
AC_CONFIG_AUX_DIR([.])
|
||||||
|
|
||||||
|
352
sqlite3.c
352
sqlite3.c
@ -1,6 +1,6 @@
|
|||||||
/******************************************************************************
|
/******************************************************************************
|
||||||
** 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.27.1. By combining all the individual C code files into this
|
** version 3.27.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
|
||||||
@ -1162,9 +1162,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.27.1"
|
#define SQLITE_VERSION "3.27.2"
|
||||||
#define SQLITE_VERSION_NUMBER 3027001
|
#define SQLITE_VERSION_NUMBER 3027002
|
||||||
#define SQLITE_SOURCE_ID "2019-02-08 13:17:39 0eca3dd3d38b31c92b49ca2d311128b74584714d9e7de895b1a6286ef959a1dd"
|
#define SQLITE_SOURCE_ID "2019-02-25 16:06:06 bd49a8271d650fa89e446b42e513b595a717b9212c91dd384aab871fc1d0f6d7"
|
||||||
|
|
||||||
/*
|
/*
|
||||||
** CAPI3REF: Run-Time Library Version Numbers
|
** CAPI3REF: Run-Time Library Version Numbers
|
||||||
@ -3408,7 +3408,7 @@ SQLITE_API int sqlite3_changes(sqlite3*);
|
|||||||
** not. ^Changes to a view that are intercepted by INSTEAD OF triggers
|
** not. ^Changes to a view that are intercepted by INSTEAD OF triggers
|
||||||
** are not counted.
|
** are not counted.
|
||||||
**
|
**
|
||||||
** This the [sqlite3_total_changes(D)] interface only reports the number
|
** The [sqlite3_total_changes(D)] interface only reports the number
|
||||||
** of rows that changed due to SQL statement run against database
|
** of rows that changed due to SQL statement run against database
|
||||||
** connection D. Any changes by other database connections are ignored.
|
** connection D. Any changes by other database connections are ignored.
|
||||||
** To detect changes against a database file from other database
|
** To detect changes against a database file from other database
|
||||||
@ -14937,57 +14937,56 @@ typedef struct VdbeOpList VdbeOpList;
|
|||||||
#define OP_Sequence 120 /* synopsis: r[P2]=cursor[P1].ctr++ */
|
#define OP_Sequence 120 /* synopsis: r[P2]=cursor[P1].ctr++ */
|
||||||
#define OP_NewRowid 121 /* synopsis: r[P2]=rowid */
|
#define OP_NewRowid 121 /* synopsis: r[P2]=rowid */
|
||||||
#define OP_Insert 122 /* synopsis: intkey=r[P3] data=r[P2] */
|
#define OP_Insert 122 /* synopsis: intkey=r[P3] data=r[P2] */
|
||||||
#define OP_InsertInt 123 /* synopsis: intkey=P3 data=r[P2] */
|
#define OP_Delete 123
|
||||||
#define OP_Delete 124
|
#define OP_ResetCount 124
|
||||||
#define OP_ResetCount 125
|
#define OP_SorterCompare 125 /* synopsis: if key(P1)!=trim(r[P3],P4) goto P2 */
|
||||||
#define OP_SorterCompare 126 /* synopsis: if key(P1)!=trim(r[P3],P4) goto P2 */
|
#define OP_SorterData 126 /* synopsis: r[P2]=data */
|
||||||
#define OP_SorterData 127 /* synopsis: r[P2]=data */
|
#define OP_RowData 127 /* synopsis: r[P2]=data */
|
||||||
#define OP_RowData 128 /* synopsis: r[P2]=data */
|
#define OP_Rowid 128 /* synopsis: r[P2]=rowid */
|
||||||
#define OP_Rowid 129 /* synopsis: r[P2]=rowid */
|
#define OP_NullRow 129
|
||||||
#define OP_NullRow 130
|
#define OP_SeekEnd 130
|
||||||
#define OP_SeekEnd 131
|
#define OP_SorterInsert 131 /* synopsis: key=r[P2] */
|
||||||
#define OP_SorterInsert 132 /* synopsis: key=r[P2] */
|
#define OP_IdxInsert 132 /* synopsis: key=r[P2] */
|
||||||
#define OP_IdxInsert 133 /* synopsis: key=r[P2] */
|
#define OP_IdxDelete 133 /* synopsis: key=r[P2@P3] */
|
||||||
#define OP_IdxDelete 134 /* synopsis: key=r[P2@P3] */
|
#define OP_DeferredSeek 134 /* synopsis: Move P3 to P1.rowid if needed */
|
||||||
#define OP_DeferredSeek 135 /* synopsis: Move P3 to P1.rowid if needed */
|
#define OP_IdxRowid 135 /* synopsis: r[P2]=rowid */
|
||||||
#define OP_IdxRowid 136 /* synopsis: r[P2]=rowid */
|
#define OP_Destroy 136
|
||||||
#define OP_Destroy 137
|
#define OP_Clear 137
|
||||||
#define OP_Clear 138
|
#define OP_ResetSorter 138
|
||||||
#define OP_ResetSorter 139
|
#define OP_CreateBtree 139 /* synopsis: r[P2]=root iDb=P1 flags=P3 */
|
||||||
#define OP_CreateBtree 140 /* synopsis: r[P2]=root iDb=P1 flags=P3 */
|
#define OP_SqlExec 140
|
||||||
#define OP_Real 141 /* same as TK_FLOAT, synopsis: r[P2]=P4 */
|
#define OP_Real 141 /* same as TK_FLOAT, synopsis: r[P2]=P4 */
|
||||||
#define OP_SqlExec 142
|
#define OP_ParseSchema 142
|
||||||
#define OP_ParseSchema 143
|
#define OP_LoadAnalysis 143
|
||||||
#define OP_LoadAnalysis 144
|
#define OP_DropTable 144
|
||||||
#define OP_DropTable 145
|
#define OP_DropIndex 145
|
||||||
#define OP_DropIndex 146
|
#define OP_DropTrigger 146
|
||||||
#define OP_DropTrigger 147
|
#define OP_IntegrityCk 147
|
||||||
#define OP_IntegrityCk 148
|
#define OP_RowSetAdd 148 /* synopsis: rowset(P1)=r[P2] */
|
||||||
#define OP_RowSetAdd 149 /* synopsis: rowset(P1)=r[P2] */
|
#define OP_Param 149
|
||||||
#define OP_Param 150
|
#define OP_FkCounter 150 /* synopsis: fkctr[P1]+=P2 */
|
||||||
#define OP_FkCounter 151 /* synopsis: fkctr[P1]+=P2 */
|
#define OP_MemMax 151 /* synopsis: r[P1]=max(r[P1],r[P2]) */
|
||||||
#define OP_MemMax 152 /* synopsis: r[P1]=max(r[P1],r[P2]) */
|
#define OP_OffsetLimit 152 /* synopsis: if r[P1]>0 then r[P2]=r[P1]+max(0,r[P3]) else r[P2]=(-1) */
|
||||||
#define OP_OffsetLimit 153 /* synopsis: if r[P1]>0 then r[P2]=r[P1]+max(0,r[P3]) else r[P2]=(-1) */
|
#define OP_AggInverse 153 /* synopsis: accum=r[P3] inverse(r[P2@P5]) */
|
||||||
#define OP_AggInverse 154 /* synopsis: accum=r[P3] inverse(r[P2@P5]) */
|
#define OP_AggStep 154 /* synopsis: accum=r[P3] step(r[P2@P5]) */
|
||||||
#define OP_AggStep 155 /* synopsis: accum=r[P3] step(r[P2@P5]) */
|
#define OP_AggStep1 155 /* synopsis: accum=r[P3] step(r[P2@P5]) */
|
||||||
#define OP_AggStep1 156 /* synopsis: accum=r[P3] step(r[P2@P5]) */
|
#define OP_AggValue 156 /* synopsis: r[P3]=value N=P2 */
|
||||||
#define OP_AggValue 157 /* synopsis: r[P3]=value N=P2 */
|
#define OP_AggFinal 157 /* synopsis: accum=r[P1] N=P2 */
|
||||||
#define OP_AggFinal 158 /* synopsis: accum=r[P1] N=P2 */
|
#define OP_Expire 158
|
||||||
#define OP_Expire 159
|
#define OP_TableLock 159 /* synopsis: iDb=P1 root=P2 write=P3 */
|
||||||
#define OP_TableLock 160 /* synopsis: iDb=P1 root=P2 write=P3 */
|
#define OP_VBegin 160
|
||||||
#define OP_VBegin 161
|
#define OP_VCreate 161
|
||||||
#define OP_VCreate 162
|
#define OP_VDestroy 162
|
||||||
#define OP_VDestroy 163
|
#define OP_VOpen 163
|
||||||
#define OP_VOpen 164
|
#define OP_VColumn 164 /* synopsis: r[P3]=vcolumn(P2) */
|
||||||
#define OP_VColumn 165 /* synopsis: r[P3]=vcolumn(P2) */
|
#define OP_VRename 165
|
||||||
#define OP_VRename 166
|
#define OP_Pagecount 166
|
||||||
#define OP_Pagecount 167
|
#define OP_MaxPgcnt 167
|
||||||
#define OP_MaxPgcnt 168
|
#define OP_Trace 168
|
||||||
#define OP_Trace 169
|
#define OP_CursorHint 169
|
||||||
#define OP_CursorHint 170
|
#define OP_Noop 170
|
||||||
#define OP_Noop 171
|
#define OP_Explain 171
|
||||||
#define OP_Explain 172
|
#define OP_Abortable 172
|
||||||
#define OP_Abortable 173
|
|
||||||
|
|
||||||
/* Properties such as "out2" or "jump" that are specified in
|
/* Properties such as "out2" or "jump" that are specified in
|
||||||
** comments following the "case" for each opcode in the vdbe.c
|
** comments following the "case" for each opcode in the vdbe.c
|
||||||
@ -15016,12 +15015,12 @@ typedef struct VdbeOpList VdbeOpList;
|
|||||||
/* 104 */ 0x10, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00,\
|
/* 104 */ 0x10, 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00,\
|
||||||
/* 112 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\
|
/* 112 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\
|
||||||
/* 120 */ 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\
|
/* 120 */ 0x10, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\
|
||||||
/* 128 */ 0x00, 0x10, 0x00, 0x00, 0x04, 0x04, 0x00, 0x00,\
|
/* 128 */ 0x10, 0x00, 0x00, 0x04, 0x04, 0x00, 0x00, 0x10,\
|
||||||
/* 136 */ 0x10, 0x10, 0x00, 0x00, 0x10, 0x10, 0x00, 0x00,\
|
/* 136 */ 0x10, 0x00, 0x00, 0x10, 0x00, 0x10, 0x00, 0x00,\
|
||||||
/* 144 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x10, 0x00,\
|
/* 144 */ 0x00, 0x00, 0x00, 0x00, 0x06, 0x10, 0x00, 0x04,\
|
||||||
/* 152 */ 0x04, 0x1a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\
|
/* 152 */ 0x1a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\
|
||||||
/* 160 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10,\
|
/* 160 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x10,\
|
||||||
/* 168 */ 0x10, 0x00, 0x00, 0x00, 0x00, 0x00,}
|
/* 168 */ 0x00, 0x00, 0x00, 0x00, 0x00,}
|
||||||
|
|
||||||
/* The sqlite3P2Values() routine is able to run faster if it knows
|
/* The sqlite3P2Values() routine is able to run faster if it knows
|
||||||
** the value of the largest JUMP opcode. The smaller the maximum
|
** the value of the largest JUMP opcode. The smaller the maximum
|
||||||
@ -19174,7 +19173,7 @@ SQLITE_PRIVATE void sqlite3AlterRenameColumn(Parse*, SrcList*, Token*, Token*);
|
|||||||
SQLITE_PRIVATE int sqlite3GetToken(const unsigned char *, int *);
|
SQLITE_PRIVATE int sqlite3GetToken(const unsigned char *, int *);
|
||||||
SQLITE_PRIVATE void sqlite3NestedParse(Parse*, const char*, ...);
|
SQLITE_PRIVATE void sqlite3NestedParse(Parse*, const char*, ...);
|
||||||
SQLITE_PRIVATE void sqlite3ExpirePreparedStatements(sqlite3*, int);
|
SQLITE_PRIVATE void sqlite3ExpirePreparedStatements(sqlite3*, int);
|
||||||
SQLITE_PRIVATE void sqlite3CodeRhsOfIN(Parse*, Expr*, int, int);
|
SQLITE_PRIVATE void sqlite3CodeRhsOfIN(Parse*, Expr*, int);
|
||||||
SQLITE_PRIVATE int sqlite3CodeSubselect(Parse*, Expr*);
|
SQLITE_PRIVATE int sqlite3CodeSubselect(Parse*, Expr*);
|
||||||
SQLITE_PRIVATE void sqlite3SelectPrep(Parse*, Select*, NameContext*);
|
SQLITE_PRIVATE void sqlite3SelectPrep(Parse*, Select*, NameContext*);
|
||||||
SQLITE_PRIVATE void sqlite3SelectWrongNumTermsError(Parse *pParse, Select *p);
|
SQLITE_PRIVATE void sqlite3SelectWrongNumTermsError(Parse *pParse, Select *p);
|
||||||
@ -32139,57 +32138,56 @@ SQLITE_PRIVATE const char *sqlite3OpcodeName(int i){
|
|||||||
/* 120 */ "Sequence" OpHelp("r[P2]=cursor[P1].ctr++"),
|
/* 120 */ "Sequence" OpHelp("r[P2]=cursor[P1].ctr++"),
|
||||||
/* 121 */ "NewRowid" OpHelp("r[P2]=rowid"),
|
/* 121 */ "NewRowid" OpHelp("r[P2]=rowid"),
|
||||||
/* 122 */ "Insert" OpHelp("intkey=r[P3] data=r[P2]"),
|
/* 122 */ "Insert" OpHelp("intkey=r[P3] data=r[P2]"),
|
||||||
/* 123 */ "InsertInt" OpHelp("intkey=P3 data=r[P2]"),
|
/* 123 */ "Delete" OpHelp(""),
|
||||||
/* 124 */ "Delete" OpHelp(""),
|
/* 124 */ "ResetCount" OpHelp(""),
|
||||||
/* 125 */ "ResetCount" OpHelp(""),
|
/* 125 */ "SorterCompare" OpHelp("if key(P1)!=trim(r[P3],P4) goto P2"),
|
||||||
/* 126 */ "SorterCompare" OpHelp("if key(P1)!=trim(r[P3],P4) goto P2"),
|
/* 126 */ "SorterData" OpHelp("r[P2]=data"),
|
||||||
/* 127 */ "SorterData" OpHelp("r[P2]=data"),
|
/* 127 */ "RowData" OpHelp("r[P2]=data"),
|
||||||
/* 128 */ "RowData" OpHelp("r[P2]=data"),
|
/* 128 */ "Rowid" OpHelp("r[P2]=rowid"),
|
||||||
/* 129 */ "Rowid" OpHelp("r[P2]=rowid"),
|
/* 129 */ "NullRow" OpHelp(""),
|
||||||
/* 130 */ "NullRow" OpHelp(""),
|
/* 130 */ "SeekEnd" OpHelp(""),
|
||||||
/* 131 */ "SeekEnd" OpHelp(""),
|
/* 131 */ "SorterInsert" OpHelp("key=r[P2]"),
|
||||||
/* 132 */ "SorterInsert" OpHelp("key=r[P2]"),
|
/* 132 */ "IdxInsert" OpHelp("key=r[P2]"),
|
||||||
/* 133 */ "IdxInsert" OpHelp("key=r[P2]"),
|
/* 133 */ "IdxDelete" OpHelp("key=r[P2@P3]"),
|
||||||
/* 134 */ "IdxDelete" OpHelp("key=r[P2@P3]"),
|
/* 134 */ "DeferredSeek" OpHelp("Move P3 to P1.rowid if needed"),
|
||||||
/* 135 */ "DeferredSeek" OpHelp("Move P3 to P1.rowid if needed"),
|
/* 135 */ "IdxRowid" OpHelp("r[P2]=rowid"),
|
||||||
/* 136 */ "IdxRowid" OpHelp("r[P2]=rowid"),
|
/* 136 */ "Destroy" OpHelp(""),
|
||||||
/* 137 */ "Destroy" OpHelp(""),
|
/* 137 */ "Clear" OpHelp(""),
|
||||||
/* 138 */ "Clear" OpHelp(""),
|
/* 138 */ "ResetSorter" OpHelp(""),
|
||||||
/* 139 */ "ResetSorter" OpHelp(""),
|
/* 139 */ "CreateBtree" OpHelp("r[P2]=root iDb=P1 flags=P3"),
|
||||||
/* 140 */ "CreateBtree" OpHelp("r[P2]=root iDb=P1 flags=P3"),
|
/* 140 */ "SqlExec" OpHelp(""),
|
||||||
/* 141 */ "Real" OpHelp("r[P2]=P4"),
|
/* 141 */ "Real" OpHelp("r[P2]=P4"),
|
||||||
/* 142 */ "SqlExec" OpHelp(""),
|
/* 142 */ "ParseSchema" OpHelp(""),
|
||||||
/* 143 */ "ParseSchema" OpHelp(""),
|
/* 143 */ "LoadAnalysis" OpHelp(""),
|
||||||
/* 144 */ "LoadAnalysis" OpHelp(""),
|
/* 144 */ "DropTable" OpHelp(""),
|
||||||
/* 145 */ "DropTable" OpHelp(""),
|
/* 145 */ "DropIndex" OpHelp(""),
|
||||||
/* 146 */ "DropIndex" OpHelp(""),
|
/* 146 */ "DropTrigger" OpHelp(""),
|
||||||
/* 147 */ "DropTrigger" OpHelp(""),
|
/* 147 */ "IntegrityCk" OpHelp(""),
|
||||||
/* 148 */ "IntegrityCk" OpHelp(""),
|
/* 148 */ "RowSetAdd" OpHelp("rowset(P1)=r[P2]"),
|
||||||
/* 149 */ "RowSetAdd" OpHelp("rowset(P1)=r[P2]"),
|
/* 149 */ "Param" OpHelp(""),
|
||||||
/* 150 */ "Param" OpHelp(""),
|
/* 150 */ "FkCounter" OpHelp("fkctr[P1]+=P2"),
|
||||||
/* 151 */ "FkCounter" OpHelp("fkctr[P1]+=P2"),
|
/* 151 */ "MemMax" OpHelp("r[P1]=max(r[P1],r[P2])"),
|
||||||
/* 152 */ "MemMax" OpHelp("r[P1]=max(r[P1],r[P2])"),
|
/* 152 */ "OffsetLimit" OpHelp("if r[P1]>0 then r[P2]=r[P1]+max(0,r[P3]) else r[P2]=(-1)"),
|
||||||
/* 153 */ "OffsetLimit" OpHelp("if r[P1]>0 then r[P2]=r[P1]+max(0,r[P3]) else r[P2]=(-1)"),
|
/* 153 */ "AggInverse" OpHelp("accum=r[P3] inverse(r[P2@P5])"),
|
||||||
/* 154 */ "AggInverse" OpHelp("accum=r[P3] inverse(r[P2@P5])"),
|
/* 154 */ "AggStep" OpHelp("accum=r[P3] step(r[P2@P5])"),
|
||||||
/* 155 */ "AggStep" OpHelp("accum=r[P3] step(r[P2@P5])"),
|
/* 155 */ "AggStep1" OpHelp("accum=r[P3] step(r[P2@P5])"),
|
||||||
/* 156 */ "AggStep1" OpHelp("accum=r[P3] step(r[P2@P5])"),
|
/* 156 */ "AggValue" OpHelp("r[P3]=value N=P2"),
|
||||||
/* 157 */ "AggValue" OpHelp("r[P3]=value N=P2"),
|
/* 157 */ "AggFinal" OpHelp("accum=r[P1] N=P2"),
|
||||||
/* 158 */ "AggFinal" OpHelp("accum=r[P1] N=P2"),
|
/* 158 */ "Expire" OpHelp(""),
|
||||||
/* 159 */ "Expire" OpHelp(""),
|
/* 159 */ "TableLock" OpHelp("iDb=P1 root=P2 write=P3"),
|
||||||
/* 160 */ "TableLock" OpHelp("iDb=P1 root=P2 write=P3"),
|
/* 160 */ "VBegin" OpHelp(""),
|
||||||
/* 161 */ "VBegin" OpHelp(""),
|
/* 161 */ "VCreate" OpHelp(""),
|
||||||
/* 162 */ "VCreate" OpHelp(""),
|
/* 162 */ "VDestroy" OpHelp(""),
|
||||||
/* 163 */ "VDestroy" OpHelp(""),
|
/* 163 */ "VOpen" OpHelp(""),
|
||||||
/* 164 */ "VOpen" OpHelp(""),
|
/* 164 */ "VColumn" OpHelp("r[P3]=vcolumn(P2)"),
|
||||||
/* 165 */ "VColumn" OpHelp("r[P3]=vcolumn(P2)"),
|
/* 165 */ "VRename" OpHelp(""),
|
||||||
/* 166 */ "VRename" OpHelp(""),
|
/* 166 */ "Pagecount" OpHelp(""),
|
||||||
/* 167 */ "Pagecount" OpHelp(""),
|
/* 167 */ "MaxPgcnt" OpHelp(""),
|
||||||
/* 168 */ "MaxPgcnt" OpHelp(""),
|
/* 168 */ "Trace" OpHelp(""),
|
||||||
/* 169 */ "Trace" OpHelp(""),
|
/* 169 */ "CursorHint" OpHelp(""),
|
||||||
/* 170 */ "CursorHint" OpHelp(""),
|
/* 170 */ "Noop" OpHelp(""),
|
||||||
/* 171 */ "Noop" OpHelp(""),
|
/* 171 */ "Explain" OpHelp(""),
|
||||||
/* 172 */ "Explain" OpHelp(""),
|
/* 172 */ "Abortable" OpHelp(""),
|
||||||
/* 173 */ "Abortable" OpHelp(""),
|
|
||||||
};
|
};
|
||||||
return azName[i];
|
return azName[i];
|
||||||
}
|
}
|
||||||
@ -87935,14 +87933,7 @@ case OP_NewRowid: { /* out2 */
|
|||||||
** This instruction only works on tables. The equivalent instruction
|
** This instruction only works on tables. The equivalent instruction
|
||||||
** for indices is OP_IdxInsert.
|
** for indices is OP_IdxInsert.
|
||||||
*/
|
*/
|
||||||
/* Opcode: InsertInt P1 P2 P3 P4 P5
|
case OP_Insert: {
|
||||||
** Synopsis: intkey=P3 data=r[P2]
|
|
||||||
**
|
|
||||||
** This works exactly like OP_Insert except that the key is the
|
|
||||||
** integer value P3, not the value of the integer stored in register P3.
|
|
||||||
*/
|
|
||||||
case OP_Insert:
|
|
||||||
case OP_InsertInt: {
|
|
||||||
Mem *pData; /* MEM cell holding data for the record to be inserted */
|
Mem *pData; /* MEM cell holding data for the record to be inserted */
|
||||||
Mem *pKey; /* MEM cell holding key for the record */
|
Mem *pKey; /* MEM cell holding key for the record */
|
||||||
VdbeCursor *pC; /* Cursor to table into which insert is written */
|
VdbeCursor *pC; /* Cursor to table into which insert is written */
|
||||||
@ -87963,16 +87954,11 @@ case OP_InsertInt: {
|
|||||||
REGISTER_TRACE(pOp->p2, pData);
|
REGISTER_TRACE(pOp->p2, pData);
|
||||||
sqlite3VdbeIncrWriteCounter(p, pC);
|
sqlite3VdbeIncrWriteCounter(p, pC);
|
||||||
|
|
||||||
if( pOp->opcode==OP_Insert ){
|
pKey = &aMem[pOp->p3];
|
||||||
pKey = &aMem[pOp->p3];
|
assert( pKey->flags & MEM_Int );
|
||||||
assert( pKey->flags & MEM_Int );
|
assert( memIsValid(pKey) );
|
||||||
assert( memIsValid(pKey) );
|
REGISTER_TRACE(pOp->p3, pKey);
|
||||||
REGISTER_TRACE(pOp->p3, pKey);
|
x.nKey = pKey->u.i;
|
||||||
x.nKey = pKey->u.i;
|
|
||||||
}else{
|
|
||||||
assert( pOp->opcode==OP_InsertInt );
|
|
||||||
x.nKey = pOp->p3;
|
|
||||||
}
|
|
||||||
|
|
||||||
if( pOp->p4type==P4_TABLE && HAS_UPDATE_HOOK(db) ){
|
if( pOp->p4type==P4_TABLE && HAS_UPDATE_HOOK(db) ){
|
||||||
assert( pC->iDb>=0 );
|
assert( pC->iDb>=0 );
|
||||||
@ -96131,6 +96117,38 @@ SQLITE_PRIVATE int sqlite3ResolveOrderGroupBy(
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifndef SQLITE_OMIT_WINDOWFUNC
|
||||||
|
/*
|
||||||
|
** Walker callback for resolveRemoveWindows().
|
||||||
|
*/
|
||||||
|
static int resolveRemoveWindowsCb(Walker *pWalker, Expr *pExpr){
|
||||||
|
if( ExprHasProperty(pExpr, EP_WinFunc) ){
|
||||||
|
Window **pp;
|
||||||
|
for(pp=&pWalker->u.pSelect->pWin; *pp; pp=&(*pp)->pNextWin){
|
||||||
|
if( *pp==pExpr->y.pWin ){
|
||||||
|
*pp = (*pp)->pNextWin;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return WRC_Continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
** Remove any Window objects owned by the expression pExpr from the
|
||||||
|
** Select.pWin list of Select object pSelect.
|
||||||
|
*/
|
||||||
|
static void resolveRemoveWindows(Select *pSelect, Expr *pExpr){
|
||||||
|
Walker sWalker;
|
||||||
|
memset(&sWalker, 0, sizeof(Walker));
|
||||||
|
sWalker.xExprCallback = resolveRemoveWindowsCb;
|
||||||
|
sWalker.u.pSelect = pSelect;
|
||||||
|
sqlite3WalkExpr(&sWalker, pExpr);
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
# define resolveRemoveWindows(x,y)
|
||||||
|
#endif
|
||||||
|
|
||||||
/*
|
/*
|
||||||
** pOrderBy is an ORDER BY or GROUP BY clause in SELECT statement pSelect.
|
** pOrderBy is an ORDER BY or GROUP BY clause in SELECT statement pSelect.
|
||||||
** The Name context of the SELECT statement is pNC. zType is either
|
** The Name context of the SELECT statement is pNC. zType is either
|
||||||
@ -96197,19 +96215,10 @@ static int resolveOrderGroupBy(
|
|||||||
}
|
}
|
||||||
for(j=0; j<pSelect->pEList->nExpr; j++){
|
for(j=0; j<pSelect->pEList->nExpr; j++){
|
||||||
if( sqlite3ExprCompare(0, pE, pSelect->pEList->a[j].pExpr, -1)==0 ){
|
if( sqlite3ExprCompare(0, pE, pSelect->pEList->a[j].pExpr, -1)==0 ){
|
||||||
#ifndef SQLITE_OMIT_WINDOWFUNC
|
/* Since this expresion is being changed into a reference
|
||||||
if( ExprHasProperty(pE, EP_WinFunc) ){
|
** to an identical expression in the result set, remove all Window
|
||||||
/* Since this window function is being changed into a reference
|
** objects belonging to the expression from the Select.pWin list. */
|
||||||
** to the same window function the result set, remove the instance
|
resolveRemoveWindows(pSelect, pE);
|
||||||
** of this window function from the Select.pWin list. */
|
|
||||||
Window **pp;
|
|
||||||
for(pp=&pSelect->pWin; *pp; pp=&(*pp)->pNextWin){
|
|
||||||
if( *pp==pE->y.pWin ){
|
|
||||||
*pp = (*pp)->pNextWin;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
pItem->u.x.iOrderByCol = j+1;
|
pItem->u.x.iOrderByCol = j+1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -99181,14 +99190,11 @@ SQLITE_PRIVATE int sqlite3FindInIndex(
|
|||||||
eType = IN_INDEX_EPH;
|
eType = IN_INDEX_EPH;
|
||||||
if( inFlags & IN_INDEX_LOOP ){
|
if( inFlags & IN_INDEX_LOOP ){
|
||||||
pParse->nQueryLoop = 0;
|
pParse->nQueryLoop = 0;
|
||||||
if( pX->pLeft->iColumn<0 && !ExprHasProperty(pX, EP_xIsSelect) ){
|
|
||||||
eType = IN_INDEX_ROWID;
|
|
||||||
}
|
|
||||||
}else if( prRhsHasNull ){
|
}else if( prRhsHasNull ){
|
||||||
*prRhsHasNull = rMayHaveNull = ++pParse->nMem;
|
*prRhsHasNull = rMayHaveNull = ++pParse->nMem;
|
||||||
}
|
}
|
||||||
assert( pX->op==TK_IN );
|
assert( pX->op==TK_IN );
|
||||||
sqlite3CodeRhsOfIN(pParse, pX, iTab, eType==IN_INDEX_ROWID);
|
sqlite3CodeRhsOfIN(pParse, pX, iTab);
|
||||||
if( rMayHaveNull ){
|
if( rMayHaveNull ){
|
||||||
sqlite3SetHasNullFlag(v, iTab, rMayHaveNull);
|
sqlite3SetHasNullFlag(v, iTab, rMayHaveNull);
|
||||||
}
|
}
|
||||||
@ -99289,12 +99295,6 @@ SQLITE_PRIVATE void sqlite3VectorErrorMsg(Parse *pParse, Expr *pExpr){
|
|||||||
** however the cursor number returned might not be the same, as it might
|
** however the cursor number returned might not be the same, as it might
|
||||||
** have been duplicated using OP_OpenDup.
|
** have been duplicated using OP_OpenDup.
|
||||||
**
|
**
|
||||||
** If parameter isRowid is non-zero, then LHS of the IN operator is guaranteed
|
|
||||||
** to be a non-null integer. In this case, the ephemeral table can be an
|
|
||||||
** table B-Tree that keyed by only integers. The more general cases uses
|
|
||||||
** an index B-Tree which can have arbitrary keys, but is slower to both
|
|
||||||
** read and write.
|
|
||||||
**
|
|
||||||
** If the LHS expression ("x" in the examples) is a column value, or
|
** If the LHS expression ("x" in the examples) is a column value, or
|
||||||
** the SELECT statement returns a column value, then the affinity of that
|
** the SELECT statement returns a column value, then the affinity of that
|
||||||
** column is used to build the index keys. If both 'x' and the
|
** column is used to build the index keys. If both 'x' and the
|
||||||
@ -99306,8 +99306,7 @@ SQLITE_PRIVATE void sqlite3VectorErrorMsg(Parse *pParse, Expr *pExpr){
|
|||||||
SQLITE_PRIVATE void sqlite3CodeRhsOfIN(
|
SQLITE_PRIVATE void sqlite3CodeRhsOfIN(
|
||||||
Parse *pParse, /* Parsing context */
|
Parse *pParse, /* Parsing context */
|
||||||
Expr *pExpr, /* The IN operator */
|
Expr *pExpr, /* The IN operator */
|
||||||
int iTab, /* Use this cursor number */
|
int iTab /* Use this cursor number */
|
||||||
int isRowid /* If true, LHS is a rowid */
|
|
||||||
){
|
){
|
||||||
int addrOnce = 0; /* Address of the OP_Once instruction at top */
|
int addrOnce = 0; /* Address of the OP_Once instruction at top */
|
||||||
int addr; /* Address of OP_OpenEphemeral instruction */
|
int addr; /* Address of OP_OpenEphemeral instruction */
|
||||||
@ -99360,14 +99359,12 @@ SQLITE_PRIVATE void sqlite3CodeRhsOfIN(
|
|||||||
/* Check to see if this is a vector IN operator */
|
/* Check to see if this is a vector IN operator */
|
||||||
pLeft = pExpr->pLeft;
|
pLeft = pExpr->pLeft;
|
||||||
nVal = sqlite3ExprVectorSize(pLeft);
|
nVal = sqlite3ExprVectorSize(pLeft);
|
||||||
assert( !isRowid || nVal==1 );
|
|
||||||
|
|
||||||
/* Construct the ephemeral table that will contain the content of
|
/* Construct the ephemeral table that will contain the content of
|
||||||
** RHS of the IN operator.
|
** RHS of the IN operator.
|
||||||
*/
|
*/
|
||||||
pExpr->iTable = iTab;
|
pExpr->iTable = iTab;
|
||||||
addr = sqlite3VdbeAddOp2(v, OP_OpenEphemeral,
|
addr = sqlite3VdbeAddOp2(v, OP_OpenEphemeral, pExpr->iTable, nVal);
|
||||||
pExpr->iTable, (isRowid?0:nVal));
|
|
||||||
#ifdef SQLITE_ENABLE_EXPLAIN_COMMENTS
|
#ifdef SQLITE_ENABLE_EXPLAIN_COMMENTS
|
||||||
if( ExprHasProperty(pExpr, EP_xIsSelect) ){
|
if( ExprHasProperty(pExpr, EP_xIsSelect) ){
|
||||||
VdbeComment((v, "Result of SELECT %u", pExpr->x.pSelect->selId));
|
VdbeComment((v, "Result of SELECT %u", pExpr->x.pSelect->selId));
|
||||||
@ -99375,7 +99372,7 @@ SQLITE_PRIVATE void sqlite3CodeRhsOfIN(
|
|||||||
VdbeComment((v, "RHS of IN operator"));
|
VdbeComment((v, "RHS of IN operator"));
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
pKeyInfo = isRowid ? 0 : sqlite3KeyInfoAlloc(pParse->db, nVal, 1);
|
pKeyInfo = sqlite3KeyInfoAlloc(pParse->db, nVal, 1);
|
||||||
|
|
||||||
if( ExprHasProperty(pExpr, EP_xIsSelect) ){
|
if( ExprHasProperty(pExpr, EP_xIsSelect) ){
|
||||||
/* Case 1: expr IN (SELECT ...)
|
/* Case 1: expr IN (SELECT ...)
|
||||||
@ -99389,7 +99386,6 @@ SQLITE_PRIVATE void sqlite3CodeRhsOfIN(
|
|||||||
ExplainQueryPlan((pParse, 1, "%sLIST SUBQUERY %d",
|
ExplainQueryPlan((pParse, 1, "%sLIST SUBQUERY %d",
|
||||||
addrOnce?"":"CORRELATED ", pSelect->selId
|
addrOnce?"":"CORRELATED ", pSelect->selId
|
||||||
));
|
));
|
||||||
assert( !isRowid );
|
|
||||||
/* If the LHS and RHS of the IN operator do not match, that
|
/* If the LHS and RHS of the IN operator do not match, that
|
||||||
** error will have been caught long before we reach this point. */
|
** error will have been caught long before we reach this point. */
|
||||||
if( ALWAYS(pEList->nExpr==nVal) ){
|
if( ALWAYS(pEList->nExpr==nVal) ){
|
||||||
@ -99442,10 +99438,8 @@ SQLITE_PRIVATE void sqlite3CodeRhsOfIN(
|
|||||||
/* Loop through each expression in <exprlist>. */
|
/* Loop through each expression in <exprlist>. */
|
||||||
r1 = sqlite3GetTempReg(pParse);
|
r1 = sqlite3GetTempReg(pParse);
|
||||||
r2 = sqlite3GetTempReg(pParse);
|
r2 = sqlite3GetTempReg(pParse);
|
||||||
if( isRowid ) sqlite3VdbeAddOp4(v, OP_Blob, 0, r2, 0, "", P4_STATIC);
|
|
||||||
for(i=pList->nExpr, pItem=pList->a; i>0; i--, pItem++){
|
for(i=pList->nExpr, pItem=pList->a; i>0; i--, pItem++){
|
||||||
Expr *pE2 = pItem->pExpr;
|
Expr *pE2 = pItem->pExpr;
|
||||||
int iValToIns;
|
|
||||||
|
|
||||||
/* If the expression is not constant then we will need to
|
/* If the expression is not constant then we will need to
|
||||||
** disable the test that was generated above that makes sure
|
** disable the test that was generated above that makes sure
|
||||||
@ -99458,20 +99452,9 @@ SQLITE_PRIVATE void sqlite3CodeRhsOfIN(
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Evaluate the expression and insert it into the temp table */
|
/* Evaluate the expression and insert it into the temp table */
|
||||||
if( isRowid && sqlite3ExprIsInteger(pE2, &iValToIns) ){
|
r3 = sqlite3ExprCodeTarget(pParse, pE2, r1);
|
||||||
sqlite3VdbeAddOp3(v, OP_InsertInt, iTab, r2, iValToIns);
|
sqlite3VdbeAddOp4(v, OP_MakeRecord, r3, 1, r2, &affinity, 1);
|
||||||
}else{
|
sqlite3VdbeAddOp4Int(v, OP_IdxInsert, iTab, r2, r3, 1);
|
||||||
r3 = sqlite3ExprCodeTarget(pParse, pE2, r1);
|
|
||||||
if( isRowid ){
|
|
||||||
sqlite3VdbeAddOp2(v, OP_MustBeInt, r3,
|
|
||||||
sqlite3VdbeCurrentAddr(v)+2);
|
|
||||||
VdbeCoverage(v);
|
|
||||||
sqlite3VdbeAddOp3(v, OP_Insert, iTab, r2, r3);
|
|
||||||
}else{
|
|
||||||
sqlite3VdbeAddOp4(v, OP_MakeRecord, r3, 1, r2, &affinity, 1);
|
|
||||||
sqlite3VdbeAddOp4Int(v, OP_IdxInsert, iTab, r2, r3, 1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
sqlite3ReleaseTempReg(pParse, r1);
|
sqlite3ReleaseTempReg(pParse, r1);
|
||||||
sqlite3ReleaseTempReg(pParse, r2);
|
sqlite3ReleaseTempReg(pParse, r2);
|
||||||
@ -118107,10 +118090,13 @@ SQLITE_PRIVATE void sqlite3CompleteInsertion(
|
|||||||
pik_flags |= (update_flags & OPFLAG_SAVEPOSITION);
|
pik_flags |= (update_flags & OPFLAG_SAVEPOSITION);
|
||||||
#ifdef SQLITE_ENABLE_PREUPDATE_HOOK
|
#ifdef SQLITE_ENABLE_PREUPDATE_HOOK
|
||||||
if( update_flags==0 ){
|
if( update_flags==0 ){
|
||||||
sqlite3VdbeAddOp4(v, OP_InsertInt,
|
int r = sqlite3GetTempReg(pParse);
|
||||||
iIdxCur+i, aRegIdx[i], 0, (char*)pTab, P4_TABLE
|
sqlite3VdbeAddOp2(v, OP_Integer, 0, r);
|
||||||
|
sqlite3VdbeAddOp4(v, OP_Insert,
|
||||||
|
iIdxCur+i, aRegIdx[i], r, (char*)pTab, P4_TABLE
|
||||||
);
|
);
|
||||||
sqlite3VdbeChangeP5(v, OPFLAG_ISNOOP);
|
sqlite3VdbeChangeP5(v, OPFLAG_ISNOOP);
|
||||||
|
sqlite3ReleaseTempReg(pParse, r);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
@ -136427,7 +136413,6 @@ static int codeEqualityTerm(
|
|||||||
if( pLoop->aLTerm[i]->pExpr==pX ){
|
if( pLoop->aLTerm[i]->pExpr==pX ){
|
||||||
int iOut = iReg + i - iEq;
|
int iOut = iReg + i - iEq;
|
||||||
if( eType==IN_INDEX_ROWID ){
|
if( eType==IN_INDEX_ROWID ){
|
||||||
testcase( nEq>1 ); /* Happens with a UNIQUE index on ROWID */
|
|
||||||
pIn->addrInTop = sqlite3VdbeAddOp2(v, OP_Rowid, iTab, iOut);
|
pIn->addrInTop = sqlite3VdbeAddOp2(v, OP_Rowid, iTab, iOut);
|
||||||
}else{
|
}else{
|
||||||
int iCol = aiMap ? aiMap[iMap++] : 0;
|
int iCol = aiMap ? aiMap[iMap++] : 0;
|
||||||
@ -137189,6 +137174,9 @@ SQLITE_PRIVATE Bitmask sqlite3WhereCodeOneLoopStart(
|
|||||||
sqlite3VdbeAddOp3(v, OP_SeekRowid, iCur, addrNxt, iRowidReg);
|
sqlite3VdbeAddOp3(v, OP_SeekRowid, iCur, addrNxt, iRowidReg);
|
||||||
VdbeCoverage(v);
|
VdbeCoverage(v);
|
||||||
pLevel->op = OP_Noop;
|
pLevel->op = OP_Noop;
|
||||||
|
if( (pTerm->prereqAll & pLevel->notReady)==0 ){
|
||||||
|
pTerm->wtFlags |= TERM_CODED;
|
||||||
|
}
|
||||||
}else if( (pLoop->wsFlags & WHERE_IPK)!=0
|
}else if( (pLoop->wsFlags & WHERE_IPK)!=0
|
||||||
&& (pLoop->wsFlags & WHERE_COLUMN_RANGE)!=0
|
&& (pLoop->wsFlags & WHERE_COLUMN_RANGE)!=0
|
||||||
){
|
){
|
||||||
@ -217076,7 +217064,7 @@ static void fts5SourceIdFunc(
|
|||||||
){
|
){
|
||||||
assert( nArg==0 );
|
assert( nArg==0 );
|
||||||
UNUSED_PARAM2(nArg, apUnused);
|
UNUSED_PARAM2(nArg, apUnused);
|
||||||
sqlite3_result_text(pCtx, "fts5: 2019-02-08 13:17:39 0eca3dd3d38b31c92b49ca2d311128b74584714d9e7de895b1a6286ef959a1dd", -1, SQLITE_TRANSIENT);
|
sqlite3_result_text(pCtx, "fts5: 2019-02-25 16:06:06 bd49a8271d650fa89e446b42e513b595a717b9212c91dd384aab871fc1d0f6d7", -1, SQLITE_TRANSIENT);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -221840,9 +221828,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__!=221843
|
#if __LINE__!=221831
|
||||||
#undef SQLITE_SOURCE_ID
|
#undef SQLITE_SOURCE_ID
|
||||||
#define SQLITE_SOURCE_ID "2019-02-08 13:17:39 0eca3dd3d38b31c92b49ca2d311128b74584714d9e7de895b1a6286ef959alt2"
|
#define SQLITE_SOURCE_ID "2019-02-25 16:06:06 bd49a8271d650fa89e446b42e513b595a717b9212c91dd384aab871fc1d0alt2"
|
||||||
#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; }
|
||||||
|
@ -123,9 +123,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.27.1"
|
#define SQLITE_VERSION "3.27.2"
|
||||||
#define SQLITE_VERSION_NUMBER 3027001
|
#define SQLITE_VERSION_NUMBER 3027002
|
||||||
#define SQLITE_SOURCE_ID "2019-02-08 13:17:39 0eca3dd3d38b31c92b49ca2d311128b74584714d9e7de895b1a6286ef959a1dd"
|
#define SQLITE_SOURCE_ID "2019-02-25 16:06:06 bd49a8271d650fa89e446b42e513b595a717b9212c91dd384aab871fc1d0f6d7"
|
||||||
|
|
||||||
/*
|
/*
|
||||||
** CAPI3REF: Run-Time Library Version Numbers
|
** CAPI3REF: Run-Time Library Version Numbers
|
||||||
@ -2369,7 +2369,7 @@ SQLITE_API int sqlite3_changes(sqlite3*);
|
|||||||
** not. ^Changes to a view that are intercepted by INSTEAD OF triggers
|
** not. ^Changes to a view that are intercepted by INSTEAD OF triggers
|
||||||
** are not counted.
|
** are not counted.
|
||||||
**
|
**
|
||||||
** This the [sqlite3_total_changes(D)] interface only reports the number
|
** The [sqlite3_total_changes(D)] interface only reports the number
|
||||||
** of rows that changed due to SQL statement run against database
|
** of rows that changed due to SQL statement run against database
|
||||||
** connection D. Any changes by other database connections are ignored.
|
** connection D. Any changes by other database connections are ignored.
|
||||||
** To detect changes against a database file from other database
|
** To detect changes against a database file from other database
|
||||||
|
18
tea/configure
vendored
18
tea/configure
vendored
@ -1,6 +1,6 @@
|
|||||||
#! /bin/sh
|
#! /bin/sh
|
||||||
# Guess values for system-dependent variables and create Makefiles.
|
# Guess values for system-dependent variables and create Makefiles.
|
||||||
# Generated by GNU Autoconf 2.69 for sqlite 3.27.1.
|
# Generated by GNU Autoconf 2.69 for sqlite 3.27.2.
|
||||||
#
|
#
|
||||||
#
|
#
|
||||||
# Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc.
|
# Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc.
|
||||||
@ -577,8 +577,8 @@ MAKEFLAGS=
|
|||||||
# Identity of this package.
|
# Identity of this package.
|
||||||
PACKAGE_NAME='sqlite'
|
PACKAGE_NAME='sqlite'
|
||||||
PACKAGE_TARNAME='sqlite'
|
PACKAGE_TARNAME='sqlite'
|
||||||
PACKAGE_VERSION='3.27.1'
|
PACKAGE_VERSION='3.27.2'
|
||||||
PACKAGE_STRING='sqlite 3.27.1'
|
PACKAGE_STRING='sqlite 3.27.2'
|
||||||
PACKAGE_BUGREPORT=''
|
PACKAGE_BUGREPORT=''
|
||||||
PACKAGE_URL=''
|
PACKAGE_URL=''
|
||||||
|
|
||||||
@ -1303,7 +1303,7 @@ if test "$ac_init_help" = "long"; then
|
|||||||
# Omit some internal or obsolete options to make the list less imposing.
|
# Omit some internal or obsolete options to make the list less imposing.
|
||||||
# This message is too long to be a string in the A/UX 3.1 sh.
|
# This message is too long to be a string in the A/UX 3.1 sh.
|
||||||
cat <<_ACEOF
|
cat <<_ACEOF
|
||||||
\`configure' configures sqlite 3.27.1 to adapt to many kinds of systems.
|
\`configure' configures sqlite 3.27.2 to adapt to many kinds of systems.
|
||||||
|
|
||||||
Usage: $0 [OPTION]... [VAR=VALUE]...
|
Usage: $0 [OPTION]... [VAR=VALUE]...
|
||||||
|
|
||||||
@ -1365,7 +1365,7 @@ fi
|
|||||||
|
|
||||||
if test -n "$ac_init_help"; then
|
if test -n "$ac_init_help"; then
|
||||||
case $ac_init_help in
|
case $ac_init_help in
|
||||||
short | recursive ) echo "Configuration of sqlite 3.27.1:";;
|
short | recursive ) echo "Configuration of sqlite 3.27.2:";;
|
||||||
esac
|
esac
|
||||||
cat <<\_ACEOF
|
cat <<\_ACEOF
|
||||||
|
|
||||||
@ -1467,7 +1467,7 @@ fi
|
|||||||
test -n "$ac_init_help" && exit $ac_status
|
test -n "$ac_init_help" && exit $ac_status
|
||||||
if $ac_init_version; then
|
if $ac_init_version; then
|
||||||
cat <<\_ACEOF
|
cat <<\_ACEOF
|
||||||
sqlite configure 3.27.1
|
sqlite configure 3.27.2
|
||||||
generated by GNU Autoconf 2.69
|
generated by GNU Autoconf 2.69
|
||||||
|
|
||||||
Copyright (C) 2012 Free Software Foundation, Inc.
|
Copyright (C) 2012 Free Software Foundation, Inc.
|
||||||
@ -1878,7 +1878,7 @@ cat >config.log <<_ACEOF
|
|||||||
This file contains any messages produced by compilers while
|
This file contains any messages produced by compilers while
|
||||||
running configure, to aid debugging if configure makes a mistake.
|
running configure, to aid debugging if configure makes a mistake.
|
||||||
|
|
||||||
It was created by sqlite $as_me 3.27.1, which was
|
It was created by sqlite $as_me 3.27.2, which was
|
||||||
generated by GNU Autoconf 2.69. Invocation command line was
|
generated by GNU Autoconf 2.69. Invocation command line was
|
||||||
|
|
||||||
$ $0 $@
|
$ $0 $@
|
||||||
@ -9373,7 +9373,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
|
|||||||
# report actual input values of CONFIG_FILES etc. instead of their
|
# report actual input values of CONFIG_FILES etc. instead of their
|
||||||
# values after options handling.
|
# values after options handling.
|
||||||
ac_log="
|
ac_log="
|
||||||
This file was extended by sqlite $as_me 3.27.1, which was
|
This file was extended by sqlite $as_me 3.27.2, which was
|
||||||
generated by GNU Autoconf 2.69. Invocation command line was
|
generated by GNU Autoconf 2.69. Invocation command line was
|
||||||
|
|
||||||
CONFIG_FILES = $CONFIG_FILES
|
CONFIG_FILES = $CONFIG_FILES
|
||||||
@ -9426,7 +9426,7 @@ _ACEOF
|
|||||||
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
|
cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
|
||||||
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
|
ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`"
|
||||||
ac_cs_version="\\
|
ac_cs_version="\\
|
||||||
sqlite config.status 3.27.1
|
sqlite config.status 3.27.2
|
||||||
configured by $0, generated by GNU Autoconf 2.69,
|
configured by $0, generated by GNU Autoconf 2.69,
|
||||||
with options \\"\$ac_cs_config\\"
|
with options \\"\$ac_cs_config\\"
|
||||||
|
|
||||||
|
@ -19,7 +19,7 @@ dnl to configure the system for the local environment.
|
|||||||
# so you can encode the package version directly into the source files.
|
# so you can encode the package version directly into the source files.
|
||||||
#-----------------------------------------------------------------------
|
#-----------------------------------------------------------------------
|
||||||
|
|
||||||
AC_INIT([sqlite], [3.27.1])
|
AC_INIT([sqlite], [3.27.2])
|
||||||
|
|
||||||
#--------------------------------------------------------------------
|
#--------------------------------------------------------------------
|
||||||
# Call TEA_INIT as the first TEA_ macro to set up initial vars.
|
# Call TEA_INIT as the first TEA_ macro to set up initial vars.
|
||||||
|
Loading…
Reference in New Issue
Block a user