| | @@ -1,8 +1,8 @@ |
| 1 | 1 | /****************************************************************************** |
| 2 | 2 | ** This file is an amalgamation of many separate C source files from SQLite |
| 3 | | -** version 3.47.0. By combining all the individual C code files into this |
| 3 | +** version 3.48.0. By combining all the individual C code files into this |
| 4 | 4 | ** single large file, the entire code can be compiled as a single translation |
| 5 | 5 | ** unit. This allows many compilers to do optimizations that would not be |
| 6 | 6 | ** possible if the files were compiled separately. Performance improvements |
| 7 | 7 | ** of 5% or more are commonly seen when SQLite is compiled as a single |
| 8 | 8 | ** translation unit. |
| | @@ -16,18 +16,22 @@ |
| 16 | 16 | ** if you want a wrapper to interface SQLite with your choice of programming |
| 17 | 17 | ** language. The code for the "sqlite3" command-line shell is also in a |
| 18 | 18 | ** separate file. This file contains only code for the core SQLite library. |
| 19 | 19 | ** |
| 20 | 20 | ** The content in this amalgamation comes from Fossil check-in |
| 21 | | -** 03a9703e27c44437c39363d0baf82db4ebc9. |
| 21 | +** 5495b12569c318d5020b4b5a625a392ef8e7 with changes in files: |
| 22 | +** |
| 23 | +** |
| 22 | 24 | */ |
| 25 | +#ifndef SQLITE_AMALGAMATION |
| 23 | 26 | #define SQLITE_CORE 1 |
| 24 | 27 | #define SQLITE_AMALGAMATION 1 |
| 25 | 28 | #ifndef SQLITE_PRIVATE |
| 26 | 29 | # define SQLITE_PRIVATE static |
| 27 | 30 | #endif |
| 28 | 31 | /************** Begin file sqliteInt.h ***************************************/ |
| 32 | +#line 1 "tsrc/sqliteInt.h" |
| 29 | 33 | /* |
| 30 | 34 | ** 2001 September 15 |
| 31 | 35 | ** |
| 32 | 36 | ** The author disclaims copyright to this source code. In place of |
| 33 | 37 | ** a legal notice, here is a blessing: |
| | @@ -84,10 +88,11 @@ |
| 84 | 88 | ** compiler warnings due to subsequent content in this file and other files |
| 85 | 89 | ** that are included by this file. |
| 86 | 90 | */ |
| 87 | 91 | /************** Include msvc.h in the middle of sqliteInt.h ******************/ |
| 88 | 92 | /************** Begin file msvc.h ********************************************/ |
| 93 | +#line 1 "tsrc/msvc.h" |
| 89 | 94 | /* |
| 90 | 95 | ** 2015 January 12 |
| 91 | 96 | ** |
| 92 | 97 | ** The author disclaims copyright to this source code. In place of |
| 93 | 98 | ** a legal notice, here is a blessing: |
| | @@ -132,16 +137,18 @@ |
| 132 | 137 | |
| 133 | 138 | #endif /* SQLITE_MSVC_H */ |
| 134 | 139 | |
| 135 | 140 | /************** End of msvc.h ************************************************/ |
| 136 | 141 | /************** Continuing where we left off in sqliteInt.h ******************/ |
| 142 | +#line 60 "tsrc/sqliteInt.h" |
| 137 | 143 | |
| 138 | 144 | /* |
| 139 | 145 | ** Special setup for VxWorks |
| 140 | 146 | */ |
| 141 | 147 | /************** Include vxworks.h in the middle of sqliteInt.h ***************/ |
| 142 | 148 | /************** Begin file vxworks.h *****************************************/ |
| 149 | +#line 1 "tsrc/vxworks.h" |
| 143 | 150 | /* |
| 144 | 151 | ** 2015-03-02 |
| 145 | 152 | ** |
| 146 | 153 | ** The author disclaims copyright to this source code. In place of |
| 147 | 154 | ** a legal notice, here is a blessing: |
| | @@ -173,10 +180,11 @@ |
| 173 | 180 | #define HAVE_LSTAT 1 |
| 174 | 181 | #endif /* defined(_WRS_KERNEL) */ |
| 175 | 182 | |
| 176 | 183 | /************** End of vxworks.h *********************************************/ |
| 177 | 184 | /************** Continuing where we left off in sqliteInt.h ******************/ |
| 185 | +#line 65 "tsrc/sqliteInt.h" |
| 178 | 186 | |
| 179 | 187 | /* |
| 180 | 188 | ** These #defines should enable >2GB file support on POSIX if the |
| 181 | 189 | ** underlying operating system supports it. If the OS lacks |
| 182 | 190 | ** large file support, or if the OS is windows, these should be no-ops. |
| | @@ -312,10 +320,11 @@ |
| 312 | 320 | ** first in QNX. Also, the _USE_32BIT_TIME_T macro must appear first for |
| 313 | 321 | ** MinGW. |
| 314 | 322 | */ |
| 315 | 323 | /************** Include sqlite3.h in the middle of sqliteInt.h ***************/ |
| 316 | 324 | /************** Begin file sqlite3.h *****************************************/ |
| 325 | +#line 1 "tsrc/sqlite3.h" |
| 317 | 326 | /* |
| 318 | 327 | ** 2001-09-15 |
| 319 | 328 | ** |
| 320 | 329 | ** The author disclaims copyright to this source code. In place of |
| 321 | 330 | ** a legal notice, here is a blessing: |
| | @@ -460,13 +469,13 @@ |
| 460 | 469 | ** |
| 461 | 470 | ** See also: [sqlite3_libversion()], |
| 462 | 471 | ** [sqlite3_libversion_number()], [sqlite3_sourceid()], |
| 463 | 472 | ** [sqlite_version()] and [sqlite_source_id()]. |
| 464 | 473 | */ |
| 465 | | -#define SQLITE_VERSION "3.47.0" |
| 466 | | -#define SQLITE_VERSION_NUMBER 3047000 |
| 467 | | -#define SQLITE_SOURCE_ID "2024-10-21 16:30:22 03a9703e27c44437c39363d0baf82db4ebc94538a0f28411c85dda156f82636e" |
| 474 | +#define SQLITE_VERSION "3.48.0" |
| 475 | +#define SQLITE_VERSION_NUMBER 3048000 |
| 476 | +#define SQLITE_SOURCE_ID "2024-11-06 12:58:31 5495b12569c318d5020b4b5a625a392ef8e777b81c0200624fbbc2a6b5eddef9" |
| 468 | 477 | |
| 469 | 478 | /* |
| 470 | 479 | ** CAPI3REF: Run-Time Library Version Numbers |
| 471 | 480 | ** KEYWORDS: sqlite3_version sqlite3_sourceid |
| 472 | 481 | ** |
| | @@ -966,10 +975,17 @@ |
| 966 | 975 | ** |
| 967 | 976 | ** The SQLITE_IOCAP_BATCH_ATOMIC property means that the underlying |
| 968 | 977 | ** filesystem supports doing multiple write operations atomically when those |
| 969 | 978 | ** write operations are bracketed by [SQLITE_FCNTL_BEGIN_ATOMIC_WRITE] and |
| 970 | 979 | ** [SQLITE_FCNTL_COMMIT_ATOMIC_WRITE]. |
| 980 | +** |
| 981 | +** The SQLITE_IOCAP_SUBPAGE_READ property means that it is ok to read |
| 982 | +** from the database file in amounts that are not a multiple of the |
| 983 | +** page size and that do not begin at a page boundary. Without this |
| 984 | +** property, SQLite is careful to only do full-page reads and write |
| 985 | +** on aligned pages, with the one exception that it will do a sub-page |
| 986 | +** read of the first page to access the database header. |
| 971 | 987 | */ |
| 972 | 988 | #define SQLITE_IOCAP_ATOMIC 0x00000001 |
| 973 | 989 | #define SQLITE_IOCAP_ATOMIC512 0x00000002 |
| 974 | 990 | #define SQLITE_IOCAP_ATOMIC1K 0x00000004 |
| 975 | 991 | #define SQLITE_IOCAP_ATOMIC2K 0x00000008 |
| | @@ -982,10 +998,11 @@ |
| 982 | 998 | #define SQLITE_IOCAP_SEQUENTIAL 0x00000400 |
| 983 | 999 | #define SQLITE_IOCAP_UNDELETABLE_WHEN_OPEN 0x00000800 |
| 984 | 1000 | #define SQLITE_IOCAP_POWERSAFE_OVERWRITE 0x00001000 |
| 985 | 1001 | #define SQLITE_IOCAP_IMMUTABLE 0x00002000 |
| 986 | 1002 | #define SQLITE_IOCAP_BATCH_ATOMIC 0x00004000 |
| 1003 | +#define SQLITE_IOCAP_SUBPAGE_READ 0x00008000 |
| 987 | 1004 | |
| 988 | 1005 | /* |
| 989 | 1006 | ** CAPI3REF: File Locking Levels |
| 990 | 1007 | ** |
| 991 | 1008 | ** SQLite uses one of these integer values as the second |
| | @@ -1128,10 +1145,11 @@ |
| 1128 | 1145 | ** <li> [SQLITE_IOCAP_SEQUENTIAL] |
| 1129 | 1146 | ** <li> [SQLITE_IOCAP_UNDELETABLE_WHEN_OPEN] |
| 1130 | 1147 | ** <li> [SQLITE_IOCAP_POWERSAFE_OVERWRITE] |
| 1131 | 1148 | ** <li> [SQLITE_IOCAP_IMMUTABLE] |
| 1132 | 1149 | ** <li> [SQLITE_IOCAP_BATCH_ATOMIC] |
| 1150 | +** <li> [SQLITE_IOCAP_SUBPAGE_READ] |
| 1133 | 1151 | ** </ul> |
| 1134 | 1152 | ** |
| 1135 | 1153 | ** The SQLITE_IOCAP_ATOMIC property means that all writes of |
| 1136 | 1154 | ** any size are atomic. The SQLITE_IOCAP_ATOMICnnn values |
| 1137 | 1155 | ** mean that writes of blocks that are nnn bytes in size and |
| | @@ -11194,11 +11212,11 @@ |
| 11194 | 11212 | #endif |
| 11195 | 11213 | |
| 11196 | 11214 | #if 0 |
| 11197 | 11215 | } /* End of the 'extern "C"' block */ |
| 11198 | 11216 | #endif |
| 11199 | | -#endif /* SQLITE3_H */ |
| 11217 | +/* #endif for SQLITE3_H will be added by mksqlite3.tcl */ |
| 11200 | 11218 | |
| 11201 | 11219 | /******** Begin file sqlite3rtree.h *********/ |
| 11202 | 11220 | /* |
| 11203 | 11221 | ** 2010 August 30 |
| 11204 | 11222 | ** |
| | @@ -13886,13 +13904,15 @@ |
| 13886 | 13904 | #endif |
| 13887 | 13905 | |
| 13888 | 13906 | #endif /* _FTS5_H */ |
| 13889 | 13907 | |
| 13890 | 13908 | /******** End of fts5.h *********/ |
| 13909 | +#endif /* SQLITE3_H */ |
| 13891 | 13910 | |
| 13892 | 13911 | /************** End of sqlite3.h *********************************************/ |
| 13893 | 13912 | /************** Continuing where we left off in sqliteInt.h ******************/ |
| 13913 | +#line 203 "tsrc/sqliteInt.h" |
| 13894 | 13914 | |
| 13895 | 13915 | /* |
| 13896 | 13916 | ** Reuse the STATIC_LRU for mutex access to sqlite3_temp_directory. |
| 13897 | 13917 | */ |
| 13898 | 13918 | #define SQLITE_MUTEX_STATIC_TEMPDIR SQLITE_MUTEX_STATIC_VFS1 |
| | @@ -13906,10 +13926,11 @@ |
| 13906 | 13926 | #define SQLITECONFIG_H 1 |
| 13907 | 13927 | #endif |
| 13908 | 13928 | |
| 13909 | 13929 | /************** Include sqliteLimit.h in the middle of sqliteInt.h ***********/ |
| 13910 | 13930 | /************** Begin file sqliteLimit.h *************************************/ |
| 13931 | +#line 1 "tsrc/sqliteLimit.h" |
| 13911 | 13932 | /* |
| 13912 | 13933 | ** 2007 May 7 |
| 13913 | 13934 | ** |
| 13914 | 13935 | ** The author disclaims copyright to this source code. In place of |
| 13915 | 13936 | ** a legal notice, here is a blessing: |
| | @@ -14119,10 +14140,11 @@ |
| 14119 | 14140 | # define SQLITE_MAX_TRIGGER_DEPTH 1000 |
| 14120 | 14141 | #endif |
| 14121 | 14142 | |
| 14122 | 14143 | /************** End of sqliteLimit.h *****************************************/ |
| 14123 | 14144 | /************** Continuing where we left off in sqliteInt.h ******************/ |
| 14145 | +#line 219 "tsrc/sqliteInt.h" |
| 14124 | 14146 | |
| 14125 | 14147 | /* Disable nuisance warnings on Borland compilers */ |
| 14126 | 14148 | #if defined(__BORLANDC__) |
| 14127 | 14149 | #pragma warn -rch /* unreachable code */ |
| 14128 | 14150 | #pragma warn -ccc /* Condition is always true or false */ |
| | @@ -14536,10 +14558,11 @@ |
| 14536 | 14558 | #define likely(X) (X) |
| 14537 | 14559 | #define unlikely(X) (X) |
| 14538 | 14560 | |
| 14539 | 14561 | /************** Include hash.h in the middle of sqliteInt.h ******************/ |
| 14540 | 14562 | /************** Begin file hash.h ********************************************/ |
| 14563 | +#line 1 "tsrc/hash.h" |
| 14541 | 14564 | /* |
| 14542 | 14565 | ** 2001 September 22 |
| 14543 | 14566 | ** |
| 14544 | 14567 | ** The author disclaims copyright to this source code. In place of |
| 14545 | 14568 | ** a legal notice, here is a blessing: |
| | @@ -14635,12 +14658,14 @@ |
| 14635 | 14658 | |
| 14636 | 14659 | #endif /* SQLITE_HASH_H */ |
| 14637 | 14660 | |
| 14638 | 14661 | /************** End of hash.h ************************************************/ |
| 14639 | 14662 | /************** Continuing where we left off in sqliteInt.h ******************/ |
| 14663 | +#line 635 "tsrc/sqliteInt.h" |
| 14640 | 14664 | /************** Include parse.h in the middle of sqliteInt.h *****************/ |
| 14641 | 14665 | /************** Begin file parse.h *******************************************/ |
| 14666 | +#line 1 "tsrc/parse.h" |
| 14642 | 14667 | #define TK_SEMI 1 |
| 14643 | 14668 | #define TK_EXPLAIN 2 |
| 14644 | 14669 | #define TK_QUERY 3 |
| 14645 | 14670 | #define TK_PLAN 4 |
| 14646 | 14671 | #define TK_BEGIN 5 |
| | @@ -14825,10 +14850,11 @@ |
| 14825 | 14850 | #define TK_SPACE 184 |
| 14826 | 14851 | #define TK_ILLEGAL 185 |
| 14827 | 14852 | |
| 14828 | 14853 | /************** End of parse.h ***********************************************/ |
| 14829 | 14854 | /************** Continuing where we left off in sqliteInt.h ******************/ |
| 14855 | +#line 636 "tsrc/sqliteInt.h" |
| 14830 | 14856 | #include <stdio.h> |
| 14831 | 14857 | #include <stdlib.h> |
| 14832 | 14858 | #include <string.h> |
| 14833 | 14859 | #include <assert.h> |
| 14834 | 14860 | #include <stddef.h> |
| | @@ -15590,10 +15616,11 @@ |
| 15590 | 15616 | ** "BusyHandler" typedefs. vdbe.h also requires a few of the opaque |
| 15591 | 15617 | ** pointer types (i.e. FuncDef) defined above. |
| 15592 | 15618 | */ |
| 15593 | 15619 | /************** Include os.h in the middle of sqliteInt.h ********************/ |
| 15594 | 15620 | /************** Begin file os.h **********************************************/ |
| 15621 | +#line 1 "tsrc/os.h" |
| 15595 | 15622 | /* |
| 15596 | 15623 | ** 2001 September 16 |
| 15597 | 15624 | ** |
| 15598 | 15625 | ** The author disclaims copyright to this source code. In place of |
| 15599 | 15626 | ** a legal notice, here is a blessing: |
| | @@ -15618,10 +15645,11 @@ |
| 15618 | 15645 | ** Attempt to automatically detect the operating system and setup the |
| 15619 | 15646 | ** necessary pre-processor macros for it. |
| 15620 | 15647 | */ |
| 15621 | 15648 | /************** Include os_setup.h in the middle of os.h *********************/ |
| 15622 | 15649 | /************** Begin file os_setup.h ****************************************/ |
| 15650 | +#line 1 "tsrc/os_setup.h" |
| 15623 | 15651 | /* |
| 15624 | 15652 | ** 2013 November 25 |
| 15625 | 15653 | ** |
| 15626 | 15654 | ** The author disclaims copyright to this source code. In place of |
| 15627 | 15655 | ** a legal notice, here is a blessing: |
| | @@ -15712,10 +15740,11 @@ |
| 15712 | 15740 | |
| 15713 | 15741 | #endif /* SQLITE_OS_SETUP_H */ |
| 15714 | 15742 | |
| 15715 | 15743 | /************** End of os_setup.h ********************************************/ |
| 15716 | 15744 | /************** Continuing where we left off in os.h *************************/ |
| 15745 | +#line 28 "tsrc/os.h" |
| 15717 | 15746 | |
| 15718 | 15747 | /* If the SET_FULLSYNC macro is not defined above, then make it |
| 15719 | 15748 | ** a no-op |
| 15720 | 15749 | */ |
| 15721 | 15750 | #ifndef SET_FULLSYNC |
| | @@ -15913,12 +15942,14 @@ |
| 15913 | 15942 | |
| 15914 | 15943 | #endif /* _SQLITE_OS_H_ */ |
| 15915 | 15944 | |
| 15916 | 15945 | /************** End of os.h **************************************************/ |
| 15917 | 15946 | /************** Continuing where we left off in sqliteInt.h ******************/ |
| 15947 | +#line 1400 "tsrc/sqliteInt.h" |
| 15918 | 15948 | /************** Include pager.h in the middle of sqliteInt.h *****************/ |
| 15919 | 15949 | /************** Begin file pager.h *******************************************/ |
| 15950 | +#line 1 "tsrc/pager.h" |
| 15920 | 15951 | /* |
| 15921 | 15952 | ** 2001 September 15 |
| 15922 | 15953 | ** |
| 15923 | 15954 | ** The author disclaims copyright to this source code. In place of |
| 15924 | 15955 | ** a legal notice, here is a blessing: |
| | @@ -16165,12 +16196,14 @@ |
| 16165 | 16196 | |
| 16166 | 16197 | #endif /* SQLITE_PAGER_H */ |
| 16167 | 16198 | |
| 16168 | 16199 | /************** End of pager.h ***********************************************/ |
| 16169 | 16200 | /************** Continuing where we left off in sqliteInt.h ******************/ |
| 16201 | +#line 1401 "tsrc/sqliteInt.h" |
| 16170 | 16202 | /************** Include btree.h in the middle of sqliteInt.h *****************/ |
| 16171 | 16203 | /************** Begin file btree.h *******************************************/ |
| 16204 | +#line 1 "tsrc/btree.h" |
| 16172 | 16205 | /* |
| 16173 | 16206 | ** 2001 September 15 |
| 16174 | 16207 | ** |
| 16175 | 16208 | ** The author disclaims copyright to this source code. In place of |
| 16176 | 16209 | ** a legal notice, here is a blessing: |
| | @@ -16594,12 +16627,14 @@ |
| 16594 | 16627 | |
| 16595 | 16628 | #endif /* SQLITE_BTREE_H */ |
| 16596 | 16629 | |
| 16597 | 16630 | /************** End of btree.h ***********************************************/ |
| 16598 | 16631 | /************** Continuing where we left off in sqliteInt.h ******************/ |
| 16632 | +#line 1402 "tsrc/sqliteInt.h" |
| 16599 | 16633 | /************** Include vdbe.h in the middle of sqliteInt.h ******************/ |
| 16600 | 16634 | /************** Begin file vdbe.h ********************************************/ |
| 16635 | +#line 1 "tsrc/vdbe.h" |
| 16601 | 16636 | /* |
| 16602 | 16637 | ** 2001 September 15 |
| 16603 | 16638 | ** |
| 16604 | 16639 | ** The author disclaims copyright to this source code. In place of |
| 16605 | 16640 | ** a legal notice, here is a blessing: |
| | @@ -16779,10 +16814,11 @@ |
| 16779 | 16814 | ** The makefile scans the vdbe.c source file and creates the "opcodes.h" |
| 16780 | 16815 | ** header file that defines a number for each opcode used by the VDBE. |
| 16781 | 16816 | */ |
| 16782 | 16817 | /************** Include opcodes.h in the middle of vdbe.h ********************/ |
| 16783 | 16818 | /************** Begin file opcodes.h *****************************************/ |
| 16819 | +#line 1 "tsrc/opcodes.h" |
| 16784 | 16820 | /* Automatically generated. Do not edit */ |
| 16785 | 16821 | /* See the tool/mkopcodeh.tcl script for details */ |
| 16786 | 16822 | #define OP_Savepoint 0 |
| 16787 | 16823 | #define OP_AutoCommit 1 |
| 16788 | 16824 | #define OP_Transaction 2 |
| | @@ -17020,10 +17056,11 @@ |
| 17020 | 17056 | */ |
| 17021 | 17057 | #define SQLITE_MX_JUMP_OPCODE 64 /* Maximum JUMP opcode */ |
| 17022 | 17058 | |
| 17023 | 17059 | /************** End of opcodes.h *********************************************/ |
| 17024 | 17060 | /************** Continuing where we left off in vdbe.h ***********************/ |
| 17061 | +#line 183 "tsrc/vdbe.h" |
| 17025 | 17062 | |
| 17026 | 17063 | /* |
| 17027 | 17064 | ** Additional non-public SQLITE_PREPARE_* flags |
| 17028 | 17065 | */ |
| 17029 | 17066 | #define SQLITE_PREPARE_SAVESQL 0x80 /* Preserve SQL text */ |
| | @@ -17269,12 +17306,14 @@ |
| 17269 | 17306 | |
| 17270 | 17307 | #endif /* SQLITE_VDBE_H */ |
| 17271 | 17308 | |
| 17272 | 17309 | /************** End of vdbe.h ************************************************/ |
| 17273 | 17310 | /************** Continuing where we left off in sqliteInt.h ******************/ |
| 17311 | +#line 1403 "tsrc/sqliteInt.h" |
| 17274 | 17312 | /************** Include pcache.h in the middle of sqliteInt.h ****************/ |
| 17275 | 17313 | /************** Begin file pcache.h ******************************************/ |
| 17314 | +#line 1 "tsrc/pcache.h" |
| 17276 | 17315 | /* |
| 17277 | 17316 | ** 2008 August 05 |
| 17278 | 17317 | ** |
| 17279 | 17318 | ** The author disclaims copyright to this source code. In place of |
| 17280 | 17319 | ** a legal notice, here is a blessing: |
| | @@ -17464,12 +17503,14 @@ |
| 17464 | 17503 | |
| 17465 | 17504 | #endif /* _PCACHE_H_ */ |
| 17466 | 17505 | |
| 17467 | 17506 | /************** End of pcache.h **********************************************/ |
| 17468 | 17507 | /************** Continuing where we left off in sqliteInt.h ******************/ |
| 17508 | +#line 1404 "tsrc/sqliteInt.h" |
| 17469 | 17509 | /************** Include mutex.h in the middle of sqliteInt.h *****************/ |
| 17470 | 17510 | /************** Begin file mutex.h *******************************************/ |
| 17511 | +#line 1 "tsrc/mutex.h" |
| 17471 | 17512 | /* |
| 17472 | 17513 | ** 2007 August 28 |
| 17473 | 17514 | ** |
| 17474 | 17515 | ** The author disclaims copyright to this source code. In place of |
| 17475 | 17516 | ** a legal notice, here is a blessing: |
| | @@ -17540,10 +17581,11 @@ |
| 17540 | 17581 | SQLITE_API int sqlite3_mutex_held(sqlite3_mutex*); |
| 17541 | 17582 | #endif /* defined(SQLITE_MUTEX_OMIT) */ |
| 17542 | 17583 | |
| 17543 | 17584 | /************** End of mutex.h ***********************************************/ |
| 17544 | 17585 | /************** Continuing where we left off in sqliteInt.h ******************/ |
| 17586 | +#line 1405 "tsrc/sqliteInt.h" |
| 17545 | 17587 | |
| 17546 | 17588 | /* The SQLITE_EXTRA_DURABLE compile-time option used to set the default |
| 17547 | 17589 | ** synchronous setting to EXTRA. It is no longer supported. |
| 17548 | 17590 | */ |
| 17549 | 17591 | #ifdef SQLITE_EXTRA_DURABLE |
| | @@ -17740,51 +17782,15 @@ |
| 17740 | 17782 | struct FuncDefHash { |
| 17741 | 17783 | FuncDef *a[SQLITE_FUNC_HASH_SZ]; /* Hash table for functions */ |
| 17742 | 17784 | }; |
| 17743 | 17785 | #define SQLITE_FUNC_HASH(C,L) (((C)+(L))%SQLITE_FUNC_HASH_SZ) |
| 17744 | 17786 | |
| 17745 | | -#if defined(SQLITE_USER_AUTHENTICATION) |
| 17746 | | -# warning "The SQLITE_USER_AUTHENTICATION extension is deprecated. \ |
| 17747 | | - See ext/userauth/user-auth.txt for details." |
| 17748 | | -#endif |
| 17749 | | -#ifdef SQLITE_USER_AUTHENTICATION |
| 17750 | | -/* |
| 17751 | | -** Information held in the "sqlite3" database connection object and used |
| 17752 | | -** to manage user authentication. |
| 17753 | | -*/ |
| 17754 | | -typedef struct sqlite3_userauth sqlite3_userauth; |
| 17755 | | -struct sqlite3_userauth { |
| 17756 | | - u8 authLevel; /* Current authentication level */ |
| 17757 | | - int nAuthPW; /* Size of the zAuthPW in bytes */ |
| 17758 | | - char *zAuthPW; /* Password used to authenticate */ |
| 17759 | | - char *zAuthUser; /* User name used to authenticate */ |
| 17760 | | -}; |
| 17761 | | - |
| 17762 | | -/* Allowed values for sqlite3_userauth.authLevel */ |
| 17763 | | -#define UAUTH_Unknown 0 /* Authentication not yet checked */ |
| 17764 | | -#define UAUTH_Fail 1 /* User authentication failed */ |
| 17765 | | -#define UAUTH_User 2 /* Authenticated as a normal user */ |
| 17766 | | -#define UAUTH_Admin 3 /* Authenticated as an administrator */ |
| 17767 | | - |
| 17768 | | -/* Functions used only by user authorization logic */ |
| 17769 | | -SQLITE_PRIVATE int sqlite3UserAuthTable(const char*); |
| 17770 | | -SQLITE_PRIVATE int sqlite3UserAuthCheckLogin(sqlite3*,const char*,u8*); |
| 17771 | | -SQLITE_PRIVATE void sqlite3UserAuthInit(sqlite3*); |
| 17772 | | -SQLITE_PRIVATE void sqlite3CryptFunc(sqlite3_context*,int,sqlite3_value**); |
| 17773 | | - |
| 17774 | | -#endif /* SQLITE_USER_AUTHENTICATION */ |
| 17775 | | - |
| 17776 | 17787 | /* |
| 17777 | 17788 | ** typedef for the authorization callback function. |
| 17778 | 17789 | */ |
| 17779 | | -#ifdef SQLITE_USER_AUTHENTICATION |
| 17780 | | - typedef int (*sqlite3_xauth)(void*,int,const char*,const char*,const char*, |
| 17781 | | - const char*, const char*); |
| 17782 | | -#else |
| 17783 | | - typedef int (*sqlite3_xauth)(void*,int,const char*,const char*,const char*, |
| 17784 | | - const char*); |
| 17785 | | -#endif |
| 17790 | +typedef int (*sqlite3_xauth)(void*,int,const char*,const char*,const char*, |
| 17791 | + const char*); |
| 17786 | 17792 | |
| 17787 | 17793 | #ifndef SQLITE_OMIT_DEPRECATED |
| 17788 | 17794 | /* This is an extra SQLITE_TRACE macro that indicates "legacy" tracing |
| 17789 | 17795 | ** in the style of sqlite3_trace() |
| 17790 | 17796 | */ |
| | @@ -17941,13 +17947,10 @@ |
| 17941 | 17947 | sqlite3 *pUnlockConnection; /* Connection to watch for unlock */ |
| 17942 | 17948 | void *pUnlockArg; /* Argument to xUnlockNotify */ |
| 17943 | 17949 | void (*xUnlockNotify)(void **, int); /* Unlock notify callback */ |
| 17944 | 17950 | sqlite3 *pNextBlocked; /* Next in list of all blocked connections */ |
| 17945 | 17951 | #endif |
| 17946 | | -#ifdef SQLITE_USER_AUTHENTICATION |
| 17947 | | - sqlite3_userauth auth; /* User authentication information */ |
| 17948 | | -#endif |
| 17949 | 17952 | }; |
| 17950 | 17953 | |
| 17951 | 17954 | /* |
| 17952 | 17955 | ** A macro to discover the encoding of a database. |
| 17953 | 17956 | */ |
| | @@ -21979,10 +21982,11 @@ |
| 21979 | 21982 | |
| 21980 | 21983 | #endif /* SQLITEINT_H */ |
| 21981 | 21984 | |
| 21982 | 21985 | /************** End of sqliteInt.h *******************************************/ |
| 21983 | 21986 | /************** Begin file os_common.h ***************************************/ |
| 21987 | +#line 1 "tsrc/os_common.h" |
| 21984 | 21988 | /* |
| 21985 | 21989 | ** 2004 May 22 |
| 21986 | 21990 | ** |
| 21987 | 21991 | ** The author disclaims copyright to this source code. In place of |
| 21988 | 21992 | ** a legal notice, here is a blessing: |
| | @@ -22081,10 +22085,11 @@ |
| 22081 | 22085 | |
| 22082 | 22086 | #endif /* !defined(_OS_COMMON_H_) */ |
| 22083 | 22087 | |
| 22084 | 22088 | /************** End of os_common.h *******************************************/ |
| 22085 | 22089 | /************** Begin file ctime.c *******************************************/ |
| 22090 | +#line 1 "tsrc/ctime.c" |
| 22086 | 22091 | /* DO NOT EDIT! |
| 22087 | 22092 | ** This file is automatically generated by the script in the canonical |
| 22088 | 22093 | ** SQLite source tree at tool/mkctimec.tcl. |
| 22089 | 22094 | ** |
| 22090 | 22095 | ** To modify this header, edit any of the various lists in that script |
| | @@ -22850,13 +22855,10 @@ |
| 22850 | 22855 | "UNLINK_AFTER_CLOSE", |
| 22851 | 22856 | #endif |
| 22852 | 22857 | #ifdef SQLITE_UNTESTABLE |
| 22853 | 22858 | "UNTESTABLE", |
| 22854 | 22859 | #endif |
| 22855 | | -#ifdef SQLITE_USER_AUTHENTICATION |
| 22856 | | - "USER_AUTHENTICATION", |
| 22857 | | -#endif |
| 22858 | 22860 | #ifdef SQLITE_USE_ALLOCA |
| 22859 | 22861 | "USE_ALLOCA", |
| 22860 | 22862 | #endif |
| 22861 | 22863 | #ifdef SQLITE_USE_FCNTL_TRACE |
| 22862 | 22864 | "USE_FCNTL_TRACE", |
| | @@ -22883,10 +22885,11 @@ |
| 22883 | 22885 | |
| 22884 | 22886 | #endif /* SQLITE_OMIT_COMPILEOPTION_DIAGS */ |
| 22885 | 22887 | |
| 22886 | 22888 | /************** End of ctime.c ***********************************************/ |
| 22887 | 22889 | /************** Begin file global.c ******************************************/ |
| 22890 | +#line 1 "tsrc/global.c" |
| 22888 | 22891 | /* |
| 22889 | 22892 | ** 2008 June 13 |
| 22890 | 22893 | ** |
| 22891 | 22894 | ** The author disclaims copyright to this source code. In place of |
| 22892 | 22895 | ** a legal notice, here is a blessing: |
| | @@ -23287,10 +23290,11 @@ |
| 23287 | 23290 | "TEXT" |
| 23288 | 23291 | }; |
| 23289 | 23292 | |
| 23290 | 23293 | /************** End of global.c **********************************************/ |
| 23291 | 23294 | /************** Begin file status.c ******************************************/ |
| 23295 | +#line 1 "tsrc/status.c" |
| 23292 | 23296 | /* |
| 23293 | 23297 | ** 2008 June 18 |
| 23294 | 23298 | ** |
| 23295 | 23299 | ** The author disclaims copyright to this source code. In place of |
| 23296 | 23300 | ** a legal notice, here is a blessing: |
| | @@ -23305,10 +23309,11 @@ |
| 23305 | 23309 | ** functionality. |
| 23306 | 23310 | */ |
| 23307 | 23311 | /* #include "sqliteInt.h" */ |
| 23308 | 23312 | /************** Include vdbeInt.h in the middle of status.c ******************/ |
| 23309 | 23313 | /************** Begin file vdbeInt.h *****************************************/ |
| 23314 | +#line 1 "tsrc/vdbeInt.h" |
| 23310 | 23315 | /* |
| 23311 | 23316 | ** 2003 September 6 |
| 23312 | 23317 | ** |
| 23313 | 23318 | ** The author disclaims copyright to this source code. In place of |
| 23314 | 23319 | ** a legal notice, here is a blessing: |
| | @@ -23847,10 +23852,11 @@ |
| 23847 | 23852 | UnpackedRecord *pNewUnpacked; /* Unpacked version of new.* record */ |
| 23848 | 23853 | int iNewReg; /* Register for new.* values */ |
| 23849 | 23854 | int iBlobWrite; /* Value returned by preupdate_blobwrite() */ |
| 23850 | 23855 | i64 iKey1; /* First key value passed to hook */ |
| 23851 | 23856 | i64 iKey2; /* Second key value passed to hook */ |
| 23857 | + Mem oldipk; /* Memory cell holding "old" IPK value */ |
| 23852 | 23858 | Mem *aNew; /* Array of new.* values */ |
| 23853 | 23859 | Table *pTab; /* Schema object being updated */ |
| 23854 | 23860 | Index *pPk; /* PK index if pTab is WITHOUT ROWID */ |
| 23855 | 23861 | sqlite3_value **apDflt; /* Array of default values, if required */ |
| 23856 | 23862 | }; |
| | @@ -24040,10 +24046,11 @@ |
| 24040 | 24046 | |
| 24041 | 24047 | #endif /* !defined(SQLITE_VDBEINT_H) */ |
| 24042 | 24048 | |
| 24043 | 24049 | /************** End of vdbeInt.h *********************************************/ |
| 24044 | 24050 | /************** Continuing where we left off in status.c *********************/ |
| 24051 | +#line 18 "tsrc/status.c" |
| 24045 | 24052 | |
| 24046 | 24053 | /* |
| 24047 | 24054 | ** Variables in which to record status information. |
| 24048 | 24055 | */ |
| 24049 | 24056 | #if SQLITE_PTRSIZE>4 |
| | @@ -24424,10 +24431,11 @@ |
| 24424 | 24431 | return rc; |
| 24425 | 24432 | } |
| 24426 | 24433 | |
| 24427 | 24434 | /************** End of status.c **********************************************/ |
| 24428 | 24435 | /************** Begin file date.c ********************************************/ |
| 24436 | +#line 1 "tsrc/date.c" |
| 24429 | 24437 | /* |
| 24430 | 24438 | ** 2003 October 31 |
| 24431 | 24439 | ** |
| 24432 | 24440 | ** The author disclaims copyright to this source code. In place of |
| 24433 | 24441 | ** a legal notice, here is a blessing: |
| | @@ -26242,10 +26250,11 @@ |
| 26242 | 26250 | sqlite3InsertBuiltinFuncs(aDateTimeFuncs, ArraySize(aDateTimeFuncs)); |
| 26243 | 26251 | } |
| 26244 | 26252 | |
| 26245 | 26253 | /************** End of date.c ************************************************/ |
| 26246 | 26254 | /************** Begin file os.c **********************************************/ |
| 26255 | +#line 1 "tsrc/os.c" |
| 26247 | 26256 | /* |
| 26248 | 26257 | ** 2005 November 29 |
| 26249 | 26258 | ** |
| 26250 | 26259 | ** The author disclaims copyright to this source code. In place of |
| 26251 | 26260 | ** a legal notice, here is a blessing: |
| | @@ -26692,10 +26701,11 @@ |
| 26692 | 26701 | return SQLITE_OK; |
| 26693 | 26702 | } |
| 26694 | 26703 | |
| 26695 | 26704 | /************** End of os.c **************************************************/ |
| 26696 | 26705 | /************** Begin file fault.c *******************************************/ |
| 26706 | +#line 1 "tsrc/fault.c" |
| 26697 | 26707 | /* |
| 26698 | 26708 | ** 2008 Jan 22 |
| 26699 | 26709 | ** |
| 26700 | 26710 | ** The author disclaims copyright to this source code. In place of |
| 26701 | 26711 | ** a legal notice, here is a blessing: |
| | @@ -26782,10 +26792,11 @@ |
| 26782 | 26792 | |
| 26783 | 26793 | #endif /* #ifndef SQLITE_UNTESTABLE */ |
| 26784 | 26794 | |
| 26785 | 26795 | /************** End of fault.c ***********************************************/ |
| 26786 | 26796 | /************** Begin file mem0.c ********************************************/ |
| 26797 | +#line 1 "tsrc/mem0.c" |
| 26787 | 26798 | /* |
| 26788 | 26799 | ** 2008 October 28 |
| 26789 | 26800 | ** |
| 26790 | 26801 | ** The author disclaims copyright to this source code. In place of |
| 26791 | 26802 | ** a legal notice, here is a blessing: |
| | @@ -26844,10 +26855,11 @@ |
| 26844 | 26855 | |
| 26845 | 26856 | #endif /* SQLITE_ZERO_MALLOC */ |
| 26846 | 26857 | |
| 26847 | 26858 | /************** End of mem0.c ************************************************/ |
| 26848 | 26859 | /************** Begin file mem1.c ********************************************/ |
| 26860 | +#line 1 "tsrc/mem1.c" |
| 26849 | 26861 | /* |
| 26850 | 26862 | ** 2007 August 14 |
| 26851 | 26863 | ** |
| 26852 | 26864 | ** The author disclaims copyright to this source code. In place of |
| 26853 | 26865 | ** a legal notice, here is a blessing: |
| | @@ -27138,10 +27150,11 @@ |
| 27138 | 27150 | |
| 27139 | 27151 | #endif /* SQLITE_SYSTEM_MALLOC */ |
| 27140 | 27152 | |
| 27141 | 27153 | /************** End of mem1.c ************************************************/ |
| 27142 | 27154 | /************** Begin file mem2.c ********************************************/ |
| 27155 | +#line 1 "tsrc/mem2.c" |
| 27143 | 27156 | /* |
| 27144 | 27157 | ** 2007 August 15 |
| 27145 | 27158 | ** |
| 27146 | 27159 | ** The author disclaims copyright to this source code. In place of |
| 27147 | 27160 | ** a legal notice, here is a blessing: |
| | @@ -27669,10 +27682,11 @@ |
| 27669 | 27682 | |
| 27670 | 27683 | #endif /* SQLITE_MEMDEBUG */ |
| 27671 | 27684 | |
| 27672 | 27685 | /************** End of mem2.c ************************************************/ |
| 27673 | 27686 | /************** Begin file mem3.c ********************************************/ |
| 27687 | +#line 1 "tsrc/mem3.c" |
| 27674 | 27688 | /* |
| 27675 | 27689 | ** 2007 October 14 |
| 27676 | 27690 | ** |
| 27677 | 27691 | ** The author disclaims copyright to this source code. In place of |
| 27678 | 27692 | ** a legal notice, here is a blessing: |
| | @@ -28359,10 +28373,11 @@ |
| 28359 | 28373 | |
| 28360 | 28374 | #endif /* SQLITE_ENABLE_MEMSYS3 */ |
| 28361 | 28375 | |
| 28362 | 28376 | /************** End of mem3.c ************************************************/ |
| 28363 | 28377 | /************** Begin file mem5.c ********************************************/ |
| 28378 | +#line 1 "tsrc/mem5.c" |
| 28364 | 28379 | /* |
| 28365 | 28380 | ** 2007 October 14 |
| 28366 | 28381 | ** |
| 28367 | 28382 | ** The author disclaims copyright to this source code. In place of |
| 28368 | 28383 | ** a legal notice, here is a blessing: |
| | @@ -28947,10 +28962,11 @@ |
| 28947 | 28962 | |
| 28948 | 28963 | #endif /* SQLITE_ENABLE_MEMSYS5 */ |
| 28949 | 28964 | |
| 28950 | 28965 | /************** End of mem5.c ************************************************/ |
| 28951 | 28966 | /************** Begin file mutex.c *******************************************/ |
| 28967 | +#line 1 "tsrc/mutex.c" |
| 28952 | 28968 | /* |
| 28953 | 28969 | ** 2007 August 14 |
| 28954 | 28970 | ** |
| 28955 | 28971 | ** The author disclaims copyright to this source code. In place of |
| 28956 | 28972 | ** a legal notice, here is a blessing: |
| | @@ -29324,10 +29340,11 @@ |
| 29324 | 29340 | |
| 29325 | 29341 | #endif /* !defined(SQLITE_MUTEX_OMIT) */ |
| 29326 | 29342 | |
| 29327 | 29343 | /************** End of mutex.c ***********************************************/ |
| 29328 | 29344 | /************** Begin file mutex_noop.c **************************************/ |
| 29345 | +#line 1 "tsrc/mutex_noop.c" |
| 29329 | 29346 | /* |
| 29330 | 29347 | ** 2008 October 07 |
| 29331 | 29348 | ** |
| 29332 | 29349 | ** The author disclaims copyright to this source code. In place of |
| 29333 | 29350 | ** a legal notice, here is a blessing: |
| | @@ -29542,10 +29559,11 @@ |
| 29542 | 29559 | #endif /* defined(SQLITE_MUTEX_NOOP) */ |
| 29543 | 29560 | #endif /* !defined(SQLITE_MUTEX_OMIT) */ |
| 29544 | 29561 | |
| 29545 | 29562 | /************** End of mutex_noop.c ******************************************/ |
| 29546 | 29563 | /************** Begin file mutex_unix.c **************************************/ |
| 29564 | +#line 1 "tsrc/mutex_unix.c" |
| 29547 | 29565 | /* |
| 29548 | 29566 | ** 2007 August 28 |
| 29549 | 29567 | ** |
| 29550 | 29568 | ** The author disclaims copyright to this source code. In place of |
| 29551 | 29569 | ** a legal notice, here is a blessing: |
| | @@ -29939,10 +29957,11 @@ |
| 29939 | 29957 | |
| 29940 | 29958 | #endif /* SQLITE_MUTEX_PTHREADS */ |
| 29941 | 29959 | |
| 29942 | 29960 | /************** End of mutex_unix.c ******************************************/ |
| 29943 | 29961 | /************** Begin file mutex_w32.c ***************************************/ |
| 29962 | +#line 1 "tsrc/mutex_w32.c" |
| 29944 | 29963 | /* |
| 29945 | 29964 | ** 2007 August 14 |
| 29946 | 29965 | ** |
| 29947 | 29966 | ** The author disclaims copyright to this source code. In place of |
| 29948 | 29967 | ** a legal notice, here is a blessing: |
| | @@ -29965,10 +29984,11 @@ |
| 29965 | 29984 | /* |
| 29966 | 29985 | ** Include the header file for the Windows VFS. |
| 29967 | 29986 | */ |
| 29968 | 29987 | /************** Include os_win.h in the middle of mutex_w32.c ****************/ |
| 29969 | 29988 | /************** Begin file os_win.h ******************************************/ |
| 29989 | +#line 1 "tsrc/os_win.h" |
| 29970 | 29990 | /* |
| 29971 | 29991 | ** 2013 November 25 |
| 29972 | 29992 | ** |
| 29973 | 29993 | ** The author disclaims copyright to this source code. In place of |
| 29974 | 29994 | ** a legal notice, here is a blessing: |
| | @@ -30056,10 +30076,11 @@ |
| 30056 | 30076 | |
| 30057 | 30077 | #endif /* SQLITE_OS_WIN_H */ |
| 30058 | 30078 | |
| 30059 | 30079 | /************** End of os_win.h **********************************************/ |
| 30060 | 30080 | /************** Continuing where we left off in mutex_w32.c ******************/ |
| 30081 | +#line 26 "tsrc/mutex_w32.c" |
| 30061 | 30082 | #endif |
| 30062 | 30083 | |
| 30063 | 30084 | /* |
| 30064 | 30085 | ** The code in this file is only used if we are compiling multithreaded |
| 30065 | 30086 | ** on a Win32 system. |
| | @@ -30433,10 +30454,11 @@ |
| 30433 | 30454 | |
| 30434 | 30455 | #endif /* SQLITE_MUTEX_W32 */ |
| 30435 | 30456 | |
| 30436 | 30457 | /************** End of mutex_w32.c *******************************************/ |
| 30437 | 30458 | /************** Begin file malloc.c ******************************************/ |
| 30459 | +#line 1 "tsrc/malloc.c" |
| 30438 | 30460 | /* |
| 30439 | 30461 | ** 2001 September 15 |
| 30440 | 30462 | ** |
| 30441 | 30463 | ** The author disclaims copyright to this source code. In place of |
| 30442 | 30464 | ** a legal notice, here is a blessing: |
| | @@ -31356,10 +31378,11 @@ |
| 31356 | 31378 | return 0; |
| 31357 | 31379 | } |
| 31358 | 31380 | |
| 31359 | 31381 | /************** End of malloc.c **********************************************/ |
| 31360 | 31382 | /************** Begin file printf.c ******************************************/ |
| 31383 | +#line 1 "tsrc/printf.c" |
| 31361 | 31384 | /* |
| 31362 | 31385 | ** The "printf" code that follows dates from the 1980's. It is in |
| 31363 | 31386 | ** the public domain. |
| 31364 | 31387 | ** |
| 31365 | 31388 | ************************************************************************** |
| | @@ -32805,10 +32828,11 @@ |
| 32805 | 32828 | } |
| 32806 | 32829 | } |
| 32807 | 32830 | |
| 32808 | 32831 | /************** End of printf.c **********************************************/ |
| 32809 | 32832 | /************** Begin file treeview.c ****************************************/ |
| 32833 | +#line 1 "tsrc/treeview.c" |
| 32810 | 32834 | /* |
| 32811 | 32835 | ** 2015-06-08 |
| 32812 | 32836 | ** |
| 32813 | 32837 | ** The author disclaims copyright to this source code. In place of |
| 32814 | 32838 | ** a legal notice, here is a blessing: |
| | @@ -34136,10 +34160,11 @@ |
| 34136 | 34160 | |
| 34137 | 34161 | #endif /* SQLITE_DEBUG */ |
| 34138 | 34162 | |
| 34139 | 34163 | /************** End of treeview.c ********************************************/ |
| 34140 | 34164 | /************** Begin file random.c ******************************************/ |
| 34165 | +#line 1 "tsrc/random.c" |
| 34141 | 34166 | /* |
| 34142 | 34167 | ** 2001 September 15 |
| 34143 | 34168 | ** |
| 34144 | 34169 | ** The author disclaims copyright to this source code. In place of |
| 34145 | 34170 | ** a legal notice, here is a blessing: |
| | @@ -34296,10 +34321,11 @@ |
| 34296 | 34321 | } |
| 34297 | 34322 | #endif /* SQLITE_UNTESTABLE */ |
| 34298 | 34323 | |
| 34299 | 34324 | /************** End of random.c **********************************************/ |
| 34300 | 34325 | /************** Begin file threads.c *****************************************/ |
| 34326 | +#line 1 "tsrc/threads.c" |
| 34301 | 34327 | /* |
| 34302 | 34328 | ** 2012 July 21 |
| 34303 | 34329 | ** |
| 34304 | 34330 | ** The author disclaims copyright to this source code. In place of |
| 34305 | 34331 | ** a legal notice, here is a blessing: |
| | @@ -34573,10 +34599,11 @@ |
| 34573 | 34599 | /****************************** End Single-Threaded *************************/ |
| 34574 | 34600 | #endif /* SQLITE_MAX_WORKER_THREADS>0 */ |
| 34575 | 34601 | |
| 34576 | 34602 | /************** End of threads.c *********************************************/ |
| 34577 | 34603 | /************** Begin file utf.c *********************************************/ |
| 34604 | +#line 1 "tsrc/utf.c" |
| 34578 | 34605 | /* |
| 34579 | 34606 | ** 2004 April 13 |
| 34580 | 34607 | ** |
| 34581 | 34608 | ** The author disclaims copyright to this source code. In place of |
| 34582 | 34609 | ** a legal notice, here is a blessing: |
| | @@ -35144,10 +35171,11 @@ |
| 35144 | 35171 | #endif /* SQLITE_TEST */ |
| 35145 | 35172 | #endif /* SQLITE_OMIT_UTF16 */ |
| 35146 | 35173 | |
| 35147 | 35174 | /************** End of utf.c *************************************************/ |
| 35148 | 35175 | /************** Begin file util.c ********************************************/ |
| 35176 | +#line 1 "tsrc/util.c" |
| 35149 | 35177 | /* |
| 35150 | 35178 | ** 2001 September 15 |
| 35151 | 35179 | ** |
| 35152 | 35180 | ** The author disclaims copyright to this source code. In place of |
| 35153 | 35181 | ** a legal notice, here is a blessing: |
| | @@ -36995,10 +37023,11 @@ |
| 36995 | 37023 | return 0; |
| 36996 | 37024 | } |
| 36997 | 37025 | |
| 36998 | 37026 | /************** End of util.c ************************************************/ |
| 36999 | 37027 | /************** Begin file hash.c ********************************************/ |
| 37028 | +#line 1 "tsrc/hash.c" |
| 37000 | 37029 | /* |
| 37001 | 37030 | ** 2001 September 22 |
| 37002 | 37031 | ** |
| 37003 | 37032 | ** The author disclaims copyright to this source code. In place of |
| 37004 | 37033 | ** a legal notice, here is a blessing: |
| | @@ -37268,10 +37297,11 @@ |
| 37268 | 37297 | return 0; |
| 37269 | 37298 | } |
| 37270 | 37299 | |
| 37271 | 37300 | /************** End of hash.c ************************************************/ |
| 37272 | 37301 | /************** Begin file opcodes.c *****************************************/ |
| 37302 | +#line 1 "tsrc/opcodes.c" |
| 37273 | 37303 | /* Automatically generated. Do not edit */ |
| 37274 | 37304 | /* See the tool/mkopcodec.tcl script for details. */ |
| 37275 | 37305 | #if !defined(SQLITE_OMIT_EXPLAIN) \ |
| 37276 | 37306 | || defined(VDBE_PROFILE) \ |
| 37277 | 37307 | || defined(SQLITE_DEBUG) |
| | @@ -37477,10 +37507,11 @@ |
| 37477 | 37507 | } |
| 37478 | 37508 | #endif |
| 37479 | 37509 | |
| 37480 | 37510 | /************** End of opcodes.c *********************************************/ |
| 37481 | 37511 | /************** Begin file os_kv.c *******************************************/ |
| 37512 | +#line 1 "tsrc/os_kv.c" |
| 37482 | 37513 | /* |
| 37483 | 37514 | ** 2022-09-06 |
| 37484 | 37515 | ** |
| 37485 | 37516 | ** The author disclaims copyright to this source code. In place of |
| 37486 | 37517 | ** a legal notice, here is a blessing: |
| | @@ -38459,10 +38490,11 @@ |
| 38459 | 38490 | } |
| 38460 | 38491 | #endif |
| 38461 | 38492 | |
| 38462 | 38493 | /************** End of os_kv.c ***********************************************/ |
| 38463 | 38494 | /************** Begin file os_unix.c *****************************************/ |
| 38495 | +#line 1 "tsrc/os_unix.c" |
| 38464 | 38496 | /* |
| 38465 | 38497 | ** 2004 May 22 |
| 38466 | 38498 | ** |
| 38467 | 38499 | ** The author disclaims copyright to this source code. In place of |
| 38468 | 38500 | ** a legal notice, here is a blessing: |
| | @@ -38674,11 +38706,11 @@ |
| 38674 | 38706 | # define F_SETLKW 7 |
| 38675 | 38707 | # endif |
| 38676 | 38708 | # endif |
| 38677 | 38709 | #else /* !SQLITE_WASI */ |
| 38678 | 38710 | # ifndef HAVE_FCHMOD |
| 38679 | | -# define HAVE_FCHMOD |
| 38711 | +# define HAVE_FCHMOD 1 |
| 38680 | 38712 | # endif |
| 38681 | 38713 | #endif /* SQLITE_WASI */ |
| 38682 | 38714 | |
| 38683 | 38715 | #ifdef SQLITE_WASI |
| 38684 | 38716 | # define osGetpid(X) (pid_t)1 |
| | @@ -42589,10 +42621,11 @@ |
| 42589 | 42621 | |
| 42590 | 42622 | /* Set the POWERSAFE_OVERWRITE flag if requested. */ |
| 42591 | 42623 | if( pFd->ctrlFlags & UNIXFILE_PSOW ){ |
| 42592 | 42624 | pFd->deviceCharacteristics |= SQLITE_IOCAP_POWERSAFE_OVERWRITE; |
| 42593 | 42625 | } |
| 42626 | + pFd->deviceCharacteristics |= SQLITE_IOCAP_SUBPAGE_READ; |
| 42594 | 42627 | |
| 42595 | 42628 | pFd->sectorSize = SQLITE_DEFAULT_SECTOR_SIZE; |
| 42596 | 42629 | } |
| 42597 | 42630 | } |
| 42598 | 42631 | #else |
| | @@ -46727,10 +46760,11 @@ |
| 46727 | 46760 | |
| 46728 | 46761 | #endif /* SQLITE_OS_UNIX */ |
| 46729 | 46762 | |
| 46730 | 46763 | /************** End of os_unix.c *********************************************/ |
| 46731 | 46764 | /************** Begin file os_win.c ******************************************/ |
| 46765 | +#line 1 "tsrc/os_win.c" |
| 46732 | 46766 | /* |
| 46733 | 46767 | ** 2004 May 22 |
| 46734 | 46768 | ** |
| 46735 | 46769 | ** The author disclaims copyright to this source code. In place of |
| 46736 | 46770 | ** a legal notice, here is a blessing: |
| | @@ -50389,11 +50423,11 @@ |
| 50389 | 50423 | /* |
| 50390 | 50424 | ** Return a vector of device characteristics. |
| 50391 | 50425 | */ |
| 50392 | 50426 | static int winDeviceCharacteristics(sqlite3_file *id){ |
| 50393 | 50427 | winFile *p = (winFile*)id; |
| 50394 | | - return SQLITE_IOCAP_UNDELETABLE_WHEN_OPEN | |
| 50428 | + return SQLITE_IOCAP_UNDELETABLE_WHEN_OPEN | SQLITE_IOCAP_SUBPAGE_READ | |
| 50395 | 50429 | ((p->ctrlFlags & WINFILE_PSOW)?SQLITE_IOCAP_POWERSAFE_OVERWRITE:0); |
| 50396 | 50430 | } |
| 50397 | 50431 | |
| 50398 | 50432 | /* |
| 50399 | 50433 | ** Windows will only let you create file view mappings |
| | @@ -52941,10 +52975,11 @@ |
| 52941 | 52975 | |
| 52942 | 52976 | #endif /* SQLITE_OS_WIN */ |
| 52943 | 52977 | |
| 52944 | 52978 | /************** End of os_win.c **********************************************/ |
| 52945 | 52979 | /************** Begin file memdb.c *******************************************/ |
| 52980 | +#line 1 "tsrc/memdb.c" |
| 52946 | 52981 | /* |
| 52947 | 52982 | ** 2016-09-07 |
| 52948 | 52983 | ** |
| 52949 | 52984 | ** The author disclaims copyright to this source code. In place of |
| 52950 | 52985 | ** a legal notice, here is a blessing: |
| | @@ -53880,10 +53915,11 @@ |
| 53880 | 53915 | } |
| 53881 | 53916 | #endif /* SQLITE_OMIT_DESERIALIZE */ |
| 53882 | 53917 | |
| 53883 | 53918 | /************** End of memdb.c ***********************************************/ |
| 53884 | 53919 | /************** Begin file bitvec.c ******************************************/ |
| 53920 | +#line 1 "tsrc/bitvec.c" |
| 53885 | 53921 | /* |
| 53886 | 53922 | ** 2008 February 16 |
| 53887 | 53923 | ** |
| 53888 | 53924 | ** The author disclaims copyright to this source code. In place of |
| 53889 | 53925 | ** a legal notice, here is a blessing: |
| | @@ -54294,10 +54330,11 @@ |
| 54294 | 54330 | } |
| 54295 | 54331 | #endif /* SQLITE_UNTESTABLE */ |
| 54296 | 54332 | |
| 54297 | 54333 | /************** End of bitvec.c **********************************************/ |
| 54298 | 54334 | /************** Begin file pcache.c ******************************************/ |
| 54335 | +#line 1 "tsrc/pcache.c" |
| 54299 | 54336 | /* |
| 54300 | 54337 | ** 2008 August 05 |
| 54301 | 54338 | ** |
| 54302 | 54339 | ** The author disclaims copyright to this source code. In place of |
| 54303 | 54340 | ** a legal notice, here is a blessing: |
| | @@ -55233,10 +55270,11 @@ |
| 55233 | 55270 | } |
| 55234 | 55271 | #endif |
| 55235 | 55272 | |
| 55236 | 55273 | /************** End of pcache.c **********************************************/ |
| 55237 | 55274 | /************** Begin file pcache1.c *****************************************/ |
| 55275 | +#line 1 "tsrc/pcache1.c" |
| 55238 | 55276 | /* |
| 55239 | 55277 | ** 2008 November 05 |
| 55240 | 55278 | ** |
| 55241 | 55279 | ** The author disclaims copyright to this source code. In place of |
| 55242 | 55280 | ** a legal notice, here is a blessing: |
| | @@ -56518,10 +56556,11 @@ |
| 56518 | 56556 | } |
| 56519 | 56557 | #endif |
| 56520 | 56558 | |
| 56521 | 56559 | /************** End of pcache1.c *********************************************/ |
| 56522 | 56560 | /************** Begin file rowset.c ******************************************/ |
| 56561 | +#line 1 "tsrc/rowset.c" |
| 56523 | 56562 | /* |
| 56524 | 56563 | ** 2008 December 3 |
| 56525 | 56564 | ** |
| 56526 | 56565 | ** The author disclaims copyright to this source code. In place of |
| 56527 | 56566 | ** a legal notice, here is a blessing: |
| | @@ -57023,10 +57062,11 @@ |
| 57023 | 57062 | return 0; |
| 57024 | 57063 | } |
| 57025 | 57064 | |
| 57026 | 57065 | /************** End of rowset.c **********************************************/ |
| 57027 | 57066 | /************** Begin file pager.c *******************************************/ |
| 57067 | +#line 1 "tsrc/pager.c" |
| 57028 | 57068 | /* |
| 57029 | 57069 | ** 2001 September 15 |
| 57030 | 57070 | ** |
| 57031 | 57071 | ** The author disclaims copyright to this source code. In place of |
| 57032 | 57072 | ** a legal notice, here is a blessing: |
| | @@ -57047,10 +57087,11 @@ |
| 57047 | 57087 | */ |
| 57048 | 57088 | #ifndef SQLITE_OMIT_DISKIO |
| 57049 | 57089 | /* #include "sqliteInt.h" */ |
| 57050 | 57090 | /************** Include wal.h in the middle of pager.c ***********************/ |
| 57051 | 57091 | /************** Begin file wal.h *********************************************/ |
| 57092 | +#line 1 "tsrc/wal.h" |
| 57052 | 57093 | /* |
| 57053 | 57094 | ** 2010 February 1 |
| 57054 | 57095 | ** |
| 57055 | 57096 | ** The author disclaims copyright to this source code. In place of |
| 57056 | 57097 | ** a legal notice, here is a blessing: |
| | @@ -57210,10 +57251,11 @@ |
| 57210 | 57251 | #endif /* ifndef SQLITE_OMIT_WAL */ |
| 57211 | 57252 | #endif /* SQLITE_WAL_H */ |
| 57212 | 57253 | |
| 57213 | 57254 | /************** End of wal.h *************************************************/ |
| 57214 | 57255 | /************** Continuing where we left off in pager.c **********************/ |
| 57256 | +#line 24 "tsrc/pager.c" |
| 57215 | 57257 | |
| 57216 | 57258 | |
| 57217 | 57259 | /******************* NOTES ON THE DESIGN OF THE PAGER ************************ |
| 57218 | 57260 | ** |
| 57219 | 57261 | ** This comment block describes invariants that hold when using a rollback |
| | @@ -57997,24 +58039,32 @@ |
| 57997 | 58039 | #ifdef SQLITE_DIRECT_OVERFLOW_READ |
| 57998 | 58040 | /* |
| 57999 | 58041 | ** Return true if page pgno can be read directly from the database file |
| 58000 | 58042 | ** by the b-tree layer. This is the case if: |
| 58001 | 58043 | ** |
| 58002 | | -** * the database file is open, |
| 58003 | | -** * there are no dirty pages in the cache, and |
| 58004 | | -** * the desired page is not currently in the wal file. |
| 58044 | +** (1) the database file is open |
| 58045 | +** (2) the VFS for the database is able to do unaligned sub-page reads |
| 58046 | +** (3) there are no dirty pages in the cache, and |
| 58047 | +** (4) the desired page is not currently in the wal file. |
| 58005 | 58048 | */ |
| 58006 | 58049 | SQLITE_PRIVATE int sqlite3PagerDirectReadOk(Pager *pPager, Pgno pgno){ |
| 58007 | | - if( pPager->fd->pMethods==0 ) return 0; |
| 58008 | | - if( sqlite3PCacheIsDirty(pPager->pPCache) ) return 0; |
| 58050 | + assert( pPager!=0 ); |
| 58051 | + assert( pPager->fd!=0 ); |
| 58052 | + if( pPager->fd->pMethods==0 ) return 0; /* Case (1) */ |
| 58053 | + if( sqlite3PCacheIsDirty(pPager->pPCache) ) return 0; /* Failed (3) */ |
| 58009 | 58054 | #ifndef SQLITE_OMIT_WAL |
| 58010 | 58055 | if( pPager->pWal ){ |
| 58011 | 58056 | u32 iRead = 0; |
| 58012 | 58057 | (void)sqlite3WalFindFrame(pPager->pWal, pgno, &iRead); |
| 58013 | | - return iRead==0; |
| 58058 | + return iRead==0; /* Condition (4) */ |
| 58014 | 58059 | } |
| 58015 | 58060 | #endif |
| 58061 | + assert( pPager->fd->pMethods->xDeviceCharacteristics!=0 ); |
| 58062 | + if( (pPager->fd->pMethods->xDeviceCharacteristics(pPager->fd) |
| 58063 | + & SQLITE_IOCAP_SUBPAGE_READ)==0 ){ |
| 58064 | + return 0; /* Case (2) */ |
| 58065 | + } |
| 58016 | 58066 | return 1; |
| 58017 | 58067 | } |
| 58018 | 58068 | #endif |
| 58019 | 58069 | |
| 58020 | 58070 | #ifndef SQLITE_OMIT_WAL |
| | @@ -64991,10 +65041,11 @@ |
| 64991 | 65041 | |
| 64992 | 65042 | #endif /* SQLITE_OMIT_DISKIO */ |
| 64993 | 65043 | |
| 64994 | 65044 | /************** End of pager.c ***********************************************/ |
| 64995 | 65045 | /************** Begin file wal.c *********************************************/ |
| 65046 | +#line 1 "tsrc/wal.c" |
| 64996 | 65047 | /* |
| 64997 | 65048 | ** 2010 February 1 |
| 64998 | 65049 | ** |
| 64999 | 65050 | ** The author disclaims copyright to this source code. In place of |
| 65000 | 65051 | ** a legal notice, here is a blessing: |
| | @@ -69587,10 +69638,11 @@ |
| 69587 | 69638 | |
| 69588 | 69639 | #endif /* #ifndef SQLITE_OMIT_WAL */ |
| 69589 | 69640 | |
| 69590 | 69641 | /************** End of wal.c *************************************************/ |
| 69591 | 69642 | /************** Begin file btmutex.c *****************************************/ |
| 69643 | +#line 1 "tsrc/btmutex.c" |
| 69592 | 69644 | /* |
| 69593 | 69645 | ** 2007 August 27 |
| 69594 | 69646 | ** |
| 69595 | 69647 | ** The author disclaims copyright to this source code. In place of |
| 69596 | 69648 | ** a legal notice, here is a blessing: |
| | @@ -69606,10 +69658,11 @@ |
| 69606 | 69658 | ** big and we want to break it down some. This packaged seemed like |
| 69607 | 69659 | ** a good breakout. |
| 69608 | 69660 | */ |
| 69609 | 69661 | /************** Include btreeInt.h in the middle of btmutex.c ****************/ |
| 69610 | 69662 | /************** Begin file btreeInt.h ****************************************/ |
| 69663 | +#line 1 "tsrc/btreeInt.h" |
| 69611 | 69664 | /* |
| 69612 | 69665 | ** 2004 April 6 |
| 69613 | 69666 | ** |
| 69614 | 69667 | ** The author disclaims copyright to this source code. In place of |
| 69615 | 69668 | ** a legal notice, here is a blessing: |
| | @@ -70343,10 +70396,11 @@ |
| 70343 | 70396 | # define get2byteAligned(x) ((x)[0]<<8 | (x)[1]) |
| 70344 | 70397 | #endif |
| 70345 | 70398 | |
| 70346 | 70399 | /************** End of btreeInt.h ********************************************/ |
| 70347 | 70400 | /************** Continuing where we left off in btmutex.c ********************/ |
| 70401 | +#line 19 "tsrc/btmutex.c" |
| 70348 | 70402 | #ifndef SQLITE_OMIT_SHARED_CACHE |
| 70349 | 70403 | #if SQLITE_THREADSAFE |
| 70350 | 70404 | |
| 70351 | 70405 | /* |
| 70352 | 70406 | ** Obtain the BtShared mutex associated with B-Tree handle p. Also, |
| | @@ -70637,10 +70691,11 @@ |
| 70637 | 70691 | |
| 70638 | 70692 | #endif /* ifndef SQLITE_OMIT_SHARED_CACHE */ |
| 70639 | 70693 | |
| 70640 | 70694 | /************** End of btmutex.c *********************************************/ |
| 70641 | 70695 | /************** Begin file btree.c *******************************************/ |
| 70696 | +#line 1 "tsrc/btree.c" |
| 70642 | 70697 | /* |
| 70643 | 70698 | ** 2004 April 6 |
| 70644 | 70699 | ** |
| 70645 | 70700 | ** The author disclaims copyright to this source code. In place of |
| 70646 | 70701 | ** a legal notice, here is a blessing: |
| | @@ -82131,10 +82186,11 @@ |
| 82131 | 82186 | } |
| 82132 | 82187 | #endif |
| 82133 | 82188 | |
| 82134 | 82189 | /************** End of btree.c ***********************************************/ |
| 82135 | 82190 | /************** Begin file backup.c ******************************************/ |
| 82191 | +#line 1 "tsrc/backup.c" |
| 82136 | 82192 | /* |
| 82137 | 82193 | ** 2009 January 28 |
| 82138 | 82194 | ** |
| 82139 | 82195 | ** The author disclaims copyright to this source code. In place of |
| 82140 | 82196 | ** a legal notice, here is a blessing: |
| | @@ -82901,10 +82957,11 @@ |
| 82901 | 82957 | } |
| 82902 | 82958 | #endif /* SQLITE_OMIT_VACUUM */ |
| 82903 | 82959 | |
| 82904 | 82960 | /************** End of backup.c **********************************************/ |
| 82905 | 82961 | /************** Begin file vdbemem.c *****************************************/ |
| 82962 | +#line 1 "tsrc/vdbemem.c" |
| 82906 | 82963 | /* |
| 82907 | 82964 | ** 2004 May 26 |
| 82908 | 82965 | ** |
| 82909 | 82966 | ** The author disclaims copyright to this source code. In place of |
| 82910 | 82967 | ** a legal notice, here is a blessing: |
| | @@ -84957,10 +85014,11 @@ |
| 84957 | 85014 | return valueBytes(pVal, enc); |
| 84958 | 85015 | } |
| 84959 | 85016 | |
| 84960 | 85017 | /************** End of vdbemem.c *********************************************/ |
| 84961 | 85018 | /************** Begin file vdbeaux.c *****************************************/ |
| 85019 | +#line 1 "tsrc/vdbeaux.c" |
| 84962 | 85020 | /* |
| 84963 | 85021 | ** 2003 September 6 |
| 84964 | 85022 | ** |
| 84965 | 85023 | ** The author disclaims copyright to this source code. In place of |
| 84966 | 85024 | ** a legal notice, here is a blessing: |
| | @@ -90488,10 +90546,11 @@ |
| 90488 | 90546 | db->xPreUpdateCallback(db->pPreUpdateArg, db, op, zDb, zTbl, iKey1, iKey2); |
| 90489 | 90547 | db->pPreUpdate = 0; |
| 90490 | 90548 | sqlite3DbFree(db, preupdate.aRecord); |
| 90491 | 90549 | vdbeFreeUnpacked(db, preupdate.keyinfo.nKeyField+1, preupdate.pUnpacked); |
| 90492 | 90550 | vdbeFreeUnpacked(db, preupdate.keyinfo.nKeyField+1, preupdate.pNewUnpacked); |
| 90551 | + sqlite3VdbeMemRelease(&preupdate.oldipk); |
| 90493 | 90552 | if( preupdate.aNew ){ |
| 90494 | 90553 | int i; |
| 90495 | 90554 | for(i=0; i<pCsr->nField; i++){ |
| 90496 | 90555 | sqlite3VdbeMemRelease(&preupdate.aNew[i]); |
| 90497 | 90556 | } |
| | @@ -90507,10 +90566,11 @@ |
| 90507 | 90566 | } |
| 90508 | 90567 | #endif /* SQLITE_ENABLE_PREUPDATE_HOOK */ |
| 90509 | 90568 | |
| 90510 | 90569 | /************** End of vdbeaux.c *********************************************/ |
| 90511 | 90570 | /************** Begin file vdbeapi.c *****************************************/ |
| 90571 | +#line 1 "tsrc/vdbeapi.c" |
| 90512 | 90572 | /* |
| 90513 | 90573 | ** 2004 May 26 |
| 90514 | 90574 | ** |
| 90515 | 90575 | ** The author disclaims copyright to this source code. In place of |
| 90516 | 90576 | ** a legal notice, here is a blessing: |
| | @@ -92706,64 +92766,68 @@ |
| 92706 | 92766 | if( iIdx>=p->pCsr->nField || iIdx<0 ){ |
| 92707 | 92767 | rc = SQLITE_RANGE; |
| 92708 | 92768 | goto preupdate_old_out; |
| 92709 | 92769 | } |
| 92710 | 92770 | |
| 92711 | | - /* If the old.* record has not yet been loaded into memory, do so now. */ |
| 92712 | | - if( p->pUnpacked==0 ){ |
| 92713 | | - u32 nRec; |
| 92714 | | - u8 *aRec; |
| 92715 | | - |
| 92716 | | - assert( p->pCsr->eCurType==CURTYPE_BTREE ); |
| 92717 | | - nRec = sqlite3BtreePayloadSize(p->pCsr->uc.pCursor); |
| 92718 | | - aRec = sqlite3DbMallocRaw(db, nRec); |
| 92719 | | - if( !aRec ) goto preupdate_old_out; |
| 92720 | | - rc = sqlite3BtreePayload(p->pCsr->uc.pCursor, 0, nRec, aRec); |
| 92721 | | - if( rc==SQLITE_OK ){ |
| 92722 | | - p->pUnpacked = vdbeUnpackRecord(&p->keyinfo, nRec, aRec); |
| 92723 | | - if( !p->pUnpacked ) rc = SQLITE_NOMEM; |
| 92724 | | - } |
| 92725 | | - if( rc!=SQLITE_OK ){ |
| 92726 | | - sqlite3DbFree(db, aRec); |
| 92727 | | - goto preupdate_old_out; |
| 92728 | | - } |
| 92729 | | - p->aRecord = aRec; |
| 92730 | | - } |
| 92731 | | - |
| 92732 | | - pMem = *ppValue = &p->pUnpacked->aMem[iIdx]; |
| 92733 | 92771 | if( iIdx==p->pTab->iPKey ){ |
| 92772 | + *ppValue = pMem = &p->oldipk; |
| 92734 | 92773 | sqlite3VdbeMemSetInt64(pMem, p->iKey1); |
| 92735 | | - }else if( iIdx>=p->pUnpacked->nField ){ |
| 92736 | | - /* This occurs when the table has been extended using ALTER TABLE |
| 92737 | | - ** ADD COLUMN. The value to return is the default value of the column. */ |
| 92738 | | - Column *pCol = &p->pTab->aCol[iIdx]; |
| 92739 | | - if( pCol->iDflt>0 ){ |
| 92740 | | - if( p->apDflt==0 ){ |
| 92741 | | - int nByte = sizeof(sqlite3_value*)*p->pTab->nCol; |
| 92742 | | - p->apDflt = (sqlite3_value**)sqlite3DbMallocZero(db, nByte); |
| 92743 | | - if( p->apDflt==0 ) goto preupdate_old_out; |
| 92744 | | - } |
| 92745 | | - if( p->apDflt[iIdx]==0 ){ |
| 92746 | | - sqlite3_value *pVal = 0; |
| 92747 | | - Expr *pDflt; |
| 92748 | | - assert( p->pTab!=0 && IsOrdinaryTable(p->pTab) ); |
| 92749 | | - pDflt = p->pTab->u.tab.pDfltList->a[pCol->iDflt-1].pExpr; |
| 92750 | | - rc = sqlite3ValueFromExpr(db, pDflt, ENC(db), pCol->affinity, &pVal); |
| 92751 | | - if( rc==SQLITE_OK && pVal==0 ){ |
| 92752 | | - rc = SQLITE_CORRUPT_BKPT; |
| 92753 | | - } |
| 92754 | | - p->apDflt[iIdx] = pVal; |
| 92755 | | - } |
| 92756 | | - *ppValue = p->apDflt[iIdx]; |
| 92757 | | - }else{ |
| 92758 | | - *ppValue = (sqlite3_value *)columnNullValue(); |
| 92759 | | - } |
| 92760 | | - }else if( p->pTab->aCol[iIdx].affinity==SQLITE_AFF_REAL ){ |
| 92761 | | - if( pMem->flags & (MEM_Int|MEM_IntReal) ){ |
| 92762 | | - testcase( pMem->flags & MEM_Int ); |
| 92763 | | - testcase( pMem->flags & MEM_IntReal ); |
| 92764 | | - sqlite3VdbeMemRealify(pMem); |
| 92774 | + }else{ |
| 92775 | + |
| 92776 | + /* If the old.* record has not yet been loaded into memory, do so now. */ |
| 92777 | + if( p->pUnpacked==0 ){ |
| 92778 | + u32 nRec; |
| 92779 | + u8 *aRec; |
| 92780 | + |
| 92781 | + assert( p->pCsr->eCurType==CURTYPE_BTREE ); |
| 92782 | + nRec = sqlite3BtreePayloadSize(p->pCsr->uc.pCursor); |
| 92783 | + aRec = sqlite3DbMallocRaw(db, nRec); |
| 92784 | + if( !aRec ) goto preupdate_old_out; |
| 92785 | + rc = sqlite3BtreePayload(p->pCsr->uc.pCursor, 0, nRec, aRec); |
| 92786 | + if( rc==SQLITE_OK ){ |
| 92787 | + p->pUnpacked = vdbeUnpackRecord(&p->keyinfo, nRec, aRec); |
| 92788 | + if( !p->pUnpacked ) rc = SQLITE_NOMEM; |
| 92789 | + } |
| 92790 | + if( rc!=SQLITE_OK ){ |
| 92791 | + sqlite3DbFree(db, aRec); |
| 92792 | + goto preupdate_old_out; |
| 92793 | + } |
| 92794 | + p->aRecord = aRec; |
| 92795 | + } |
| 92796 | + |
| 92797 | + pMem = *ppValue = &p->pUnpacked->aMem[iIdx]; |
| 92798 | + if( iIdx>=p->pUnpacked->nField ){ |
| 92799 | + /* This occurs when the table has been extended using ALTER TABLE |
| 92800 | + ** ADD COLUMN. The value to return is the default value of the column. */ |
| 92801 | + Column *pCol = &p->pTab->aCol[iIdx]; |
| 92802 | + if( pCol->iDflt>0 ){ |
| 92803 | + if( p->apDflt==0 ){ |
| 92804 | + int nByte = sizeof(sqlite3_value*)*p->pTab->nCol; |
| 92805 | + p->apDflt = (sqlite3_value**)sqlite3DbMallocZero(db, nByte); |
| 92806 | + if( p->apDflt==0 ) goto preupdate_old_out; |
| 92807 | + } |
| 92808 | + if( p->apDflt[iIdx]==0 ){ |
| 92809 | + sqlite3_value *pVal = 0; |
| 92810 | + Expr *pDflt; |
| 92811 | + assert( p->pTab!=0 && IsOrdinaryTable(p->pTab) ); |
| 92812 | + pDflt = p->pTab->u.tab.pDfltList->a[pCol->iDflt-1].pExpr; |
| 92813 | + rc = sqlite3ValueFromExpr(db, pDflt, ENC(db), pCol->affinity, &pVal); |
| 92814 | + if( rc==SQLITE_OK && pVal==0 ){ |
| 92815 | + rc = SQLITE_CORRUPT_BKPT; |
| 92816 | + } |
| 92817 | + p->apDflt[iIdx] = pVal; |
| 92818 | + } |
| 92819 | + *ppValue = p->apDflt[iIdx]; |
| 92820 | + }else{ |
| 92821 | + *ppValue = (sqlite3_value *)columnNullValue(); |
| 92822 | + } |
| 92823 | + }else if( p->pTab->aCol[iIdx].affinity==SQLITE_AFF_REAL ){ |
| 92824 | + if( pMem->flags & (MEM_Int|MEM_IntReal) ){ |
| 92825 | + testcase( pMem->flags & MEM_Int ); |
| 92826 | + testcase( pMem->flags & MEM_IntReal ); |
| 92827 | + sqlite3VdbeMemRealify(pMem); |
| 92828 | + } |
| 92765 | 92829 | } |
| 92766 | 92830 | } |
| 92767 | 92831 | |
| 92768 | 92832 | preupdate_old_out: |
| 92769 | 92833 | sqlite3Error(db, rc); |
| | @@ -93089,10 +93153,11 @@ |
| 93089 | 93153 | } |
| 93090 | 93154 | #endif /* SQLITE_ENABLE_STMT_SCANSTATUS */ |
| 93091 | 93155 | |
| 93092 | 93156 | /************** End of vdbeapi.c *********************************************/ |
| 93093 | 93157 | /************** Begin file vdbetrace.c ***************************************/ |
| 93158 | +#line 1 "tsrc/vdbetrace.c" |
| 93094 | 93159 | /* |
| 93095 | 93160 | ** 2009 November 25 |
| 93096 | 93161 | ** |
| 93097 | 93162 | ** The author disclaims copyright to this source code. In place of |
| 93098 | 93163 | ** a legal notice, here is a blessing: |
| | @@ -93284,10 +93349,11 @@ |
| 93284 | 93349 | |
| 93285 | 93350 | #endif /* #ifndef SQLITE_OMIT_TRACE */ |
| 93286 | 93351 | |
| 93287 | 93352 | /************** End of vdbetrace.c *******************************************/ |
| 93288 | 93353 | /************** Begin file vdbe.c ********************************************/ |
| 93354 | +#line 1 "tsrc/vdbe.c" |
| 93289 | 93355 | /* |
| 93290 | 93356 | ** 2001 September 15 |
| 93291 | 93357 | ** |
| 93292 | 93358 | ** The author disclaims copyright to this source code. In place of |
| 93293 | 93359 | ** a legal notice, here is a blessing: |
| | @@ -93315,10 +93381,11 @@ |
| 93315 | 93381 | #if defined(VDBE_PROFILE) \ |
| 93316 | 93382 | || defined(SQLITE_PERFORMANCE_TRACE) \ |
| 93317 | 93383 | || defined(SQLITE_ENABLE_STMT_SCANSTATUS) |
| 93318 | 93384 | /************** Include hwtime.h in the middle of vdbe.c *********************/ |
| 93319 | 93385 | /************** Begin file hwtime.h ******************************************/ |
| 93386 | +#line 1 "tsrc/hwtime.h" |
| 93320 | 93387 | /* |
| 93321 | 93388 | ** 2008 May 27 |
| 93322 | 93389 | ** |
| 93323 | 93390 | ** The author disclaims copyright to this source code. In place of |
| 93324 | 93391 | ** a legal notice, here is a blessing: |
| | @@ -93403,10 +93470,11 @@ |
| 93403 | 93470 | |
| 93404 | 93471 | #endif /* !defined(SQLITE_HWTIME_H) */ |
| 93405 | 93472 | |
| 93406 | 93473 | /************** End of hwtime.h **********************************************/ |
| 93407 | 93474 | /************** Continuing where we left off in vdbe.c ***********************/ |
| 93475 | +#line 31 "tsrc/vdbe.c" |
| 93408 | 93476 | #endif |
| 93409 | 93477 | |
| 93410 | 93478 | /* |
| 93411 | 93479 | ** Invoke this macro on memory cells just prior to changing the |
| 93412 | 93480 | ** value of the cell. This macro verifies that shallow copies are |
| | @@ -97913,13 +97981,15 @@ |
| 97913 | 97981 | 0, pCx->uc.pCursor); |
| 97914 | 97982 | pCx->isTable = 1; |
| 97915 | 97983 | } |
| 97916 | 97984 | } |
| 97917 | 97985 | pCx->isOrdered = (pOp->p5!=BTREE_UNORDERED); |
| 97986 | + assert( p->apCsr[pOp->p1]==pCx ); |
| 97918 | 97987 | if( rc ){ |
| 97919 | 97988 | assert( !sqlite3BtreeClosesWithCursor(pCx->ub.pBtx, pCx->uc.pCursor) ); |
| 97920 | 97989 | sqlite3BtreeClose(pCx->ub.pBtx); |
| 97990 | + p->apCsr[pOp->p1] = 0; /* Not required; helps with static analysis */ |
| 97921 | 97991 | }else{ |
| 97922 | 97992 | assert( sqlite3BtreeClosesWithCursor(pCx->ub.pBtx, pCx->uc.pCursor) ); |
| 97923 | 97993 | } |
| 97924 | 97994 | } |
| 97925 | 97995 | } |
| | @@ -102594,10 +102664,11 @@ |
| 102594 | 102664 | } |
| 102595 | 102665 | |
| 102596 | 102666 | |
| 102597 | 102667 | /************** End of vdbe.c ************************************************/ |
| 102598 | 102668 | /************** Begin file vdbeblob.c ****************************************/ |
| 102669 | +#line 1 "tsrc/vdbeblob.c" |
| 102599 | 102670 | /* |
| 102600 | 102671 | ** 2007 May 1 |
| 102601 | 102672 | ** |
| 102602 | 102673 | ** The author disclaims copyright to this source code. In place of |
| 102603 | 102674 | ** a legal notice, here is a blessing: |
| | @@ -103117,10 +103188,11 @@ |
| 103117 | 103188 | |
| 103118 | 103189 | #endif /* #ifndef SQLITE_OMIT_INCRBLOB */ |
| 103119 | 103190 | |
| 103120 | 103191 | /************** End of vdbeblob.c ********************************************/ |
| 103121 | 103192 | /************** Begin file vdbesort.c ****************************************/ |
| 103193 | +#line 1 "tsrc/vdbesort.c" |
| 103122 | 103194 | /* |
| 103123 | 103195 | ** 2011-07-09 |
| 103124 | 103196 | ** |
| 103125 | 103197 | ** The author disclaims copyright to this source code. In place of |
| 103126 | 103198 | ** a legal notice, here is a blessing: |
| | @@ -105887,10 +105959,11 @@ |
| 105887 | 105959 | return SQLITE_OK; |
| 105888 | 105960 | } |
| 105889 | 105961 | |
| 105890 | 105962 | /************** End of vdbesort.c ********************************************/ |
| 105891 | 105963 | /************** Begin file vdbevtab.c ****************************************/ |
| 105964 | +#line 1 "tsrc/vdbevtab.c" |
| 105892 | 105965 | /* |
| 105893 | 105966 | ** 2020-03-23 |
| 105894 | 105967 | ** |
| 105895 | 105968 | ** The author disclaims copyright to this source code. In place of |
| 105896 | 105969 | ** a legal notice, here is a blessing: |
| | @@ -106336,10 +106409,11 @@ |
| 106336 | 106409 | SQLITE_PRIVATE int sqlite3VdbeBytecodeVtabInit(sqlite3 *db){ return SQLITE_OK; } |
| 106337 | 106410 | #endif /* SQLITE_ENABLE_BYTECODE_VTAB */ |
| 106338 | 106411 | |
| 106339 | 106412 | /************** End of vdbevtab.c ********************************************/ |
| 106340 | 106413 | /************** Begin file memjournal.c **************************************/ |
| 106414 | +#line 1 "tsrc/memjournal.c" |
| 106341 | 106415 | /* |
| 106342 | 106416 | ** 2008 October 7 |
| 106343 | 106417 | ** |
| 106344 | 106418 | ** The author disclaims copyright to this source code. In place of |
| 106345 | 106419 | ** a legal notice, here is a blessing: |
| | @@ -106779,10 +106853,11 @@ |
| 106779 | 106853 | return MAX(pVfs->szOsFile, (int)sizeof(MemJournal)); |
| 106780 | 106854 | } |
| 106781 | 106855 | |
| 106782 | 106856 | /************** End of memjournal.c ******************************************/ |
| 106783 | 106857 | /************** Begin file walker.c ******************************************/ |
| 106858 | +#line 1 "tsrc/walker.c" |
| 106784 | 106859 | /* |
| 106785 | 106860 | ** 2008 August 16 |
| 106786 | 106861 | ** |
| 106787 | 106862 | ** The author disclaims copyright to this source code. In place of |
| 106788 | 106863 | ** a legal notice, here is a blessing: |
| | @@ -107043,10 +107118,11 @@ |
| 107043 | 107118 | return WRC_Continue; |
| 107044 | 107119 | } |
| 107045 | 107120 | |
| 107046 | 107121 | /************** End of walker.c **********************************************/ |
| 107047 | 107122 | /************** Begin file resolve.c *****************************************/ |
| 107123 | +#line 1 "tsrc/resolve.c" |
| 107048 | 107124 | /* |
| 107049 | 107125 | ** 2008 August 18 |
| 107050 | 107126 | ** |
| 107051 | 107127 | ** The author disclaims copyright to this source code. In place of |
| 107052 | 107128 | ** a legal notice, here is a blessing: |
| | @@ -109364,10 +109440,11 @@ |
| 109364 | 109440 | return rc; |
| 109365 | 109441 | } |
| 109366 | 109442 | |
| 109367 | 109443 | /************** End of resolve.c *********************************************/ |
| 109368 | 109444 | /************** Begin file expr.c ********************************************/ |
| 109445 | +#line 1 "tsrc/expr.c" |
| 109369 | 109446 | /* |
| 109370 | 109447 | ** 2001 September 15 |
| 109371 | 109448 | ** |
| 109372 | 109449 | ** The author disclaims copyright to this source code. In place of |
| 109373 | 109450 | ** a legal notice, here is a blessing: |
| | @@ -116693,10 +116770,11 @@ |
| 116693 | 116770 | } |
| 116694 | 116771 | #endif /* SQLITE_DEBUG */ |
| 116695 | 116772 | |
| 116696 | 116773 | /************** End of expr.c ************************************************/ |
| 116697 | 116774 | /************** Begin file alter.c *******************************************/ |
| 116775 | +#line 1 "tsrc/alter.c" |
| 116698 | 116776 | /* |
| 116699 | 116777 | ** 2005 February 15 |
| 116700 | 116778 | ** |
| 116701 | 116779 | ** The author disclaims copyright to this source code. In place of |
| 116702 | 116780 | ** a legal notice, here is a blessing: |
| | @@ -119012,10 +119090,11 @@ |
| 119012 | 119090 | } |
| 119013 | 119091 | #endif /* SQLITE_ALTER_TABLE */ |
| 119014 | 119092 | |
| 119015 | 119093 | /************** End of alter.c ***********************************************/ |
| 119016 | 119094 | /************** Begin file analyze.c *****************************************/ |
| 119095 | +#line 1 "tsrc/analyze.c" |
| 119017 | 119096 | /* |
| 119018 | 119097 | ** 2005-07-08 |
| 119019 | 119098 | ** |
| 119020 | 119099 | ** The author disclaims copyright to this source code. In place of |
| 119021 | 119100 | ** a legal notice, here is a blessing: |
| | @@ -121036,10 +121115,11 @@ |
| 121036 | 121115 | |
| 121037 | 121116 | #endif /* SQLITE_OMIT_ANALYZE */ |
| 121038 | 121117 | |
| 121039 | 121118 | /************** End of analyze.c *********************************************/ |
| 121040 | 121119 | /************** Begin file attach.c ******************************************/ |
| 121120 | +#line 1 "tsrc/attach.c" |
| 121041 | 121121 | /* |
| 121042 | 121122 | ** 2003 April 6 |
| 121043 | 121123 | ** |
| 121044 | 121124 | ** The author disclaims copyright to this source code. In place of |
| 121045 | 121125 | ** a legal notice, here is a blessing: |
| | @@ -121265,19 +121345,10 @@ |
| 121265 | 121345 | rc = sqlite3Init(db, &zErrDyn); |
| 121266 | 121346 | } |
| 121267 | 121347 | sqlite3BtreeLeaveAll(db); |
| 121268 | 121348 | assert( zErrDyn==0 || rc!=SQLITE_OK ); |
| 121269 | 121349 | } |
| 121270 | | -#ifdef SQLITE_USER_AUTHENTICATION |
| 121271 | | - if( rc==SQLITE_OK && !REOPEN_AS_MEMDB(db) ){ |
| 121272 | | - u8 newAuth = 0; |
| 121273 | | - rc = sqlite3UserAuthCheckLogin(db, zName, &newAuth); |
| 121274 | | - if( newAuth<db->auth.authLevel ){ |
| 121275 | | - rc = SQLITE_AUTH_USER; |
| 121276 | | - } |
| 121277 | | - } |
| 121278 | | -#endif |
| 121279 | 121350 | if( rc ){ |
| 121280 | 121351 | if( ALWAYS(!REOPEN_AS_MEMDB(db)) ){ |
| 121281 | 121352 | int iDb = db->nDb - 1; |
| 121282 | 121353 | assert( iDb>=2 ); |
| 121283 | 121354 | if( db->aDb[iDb].pBt ){ |
| | @@ -121657,10 +121728,11 @@ |
| 121657 | 121728 | } |
| 121658 | 121729 | #endif |
| 121659 | 121730 | |
| 121660 | 121731 | /************** End of attach.c **********************************************/ |
| 121661 | 121732 | /************** Begin file auth.c ********************************************/ |
| 121733 | +#line 1 "tsrc/auth.c" |
| 121662 | 121734 | /* |
| 121663 | 121735 | ** 2003 January 11 |
| 121664 | 121736 | ** |
| 121665 | 121737 | ** The author disclaims copyright to this source code. In place of |
| 121666 | 121738 | ** a legal notice, here is a blessing: |
| | @@ -121771,15 +121843,11 @@ |
| 121771 | 121843 | sqlite3 *db = pParse->db; /* Database handle */ |
| 121772 | 121844 | char *zDb = db->aDb[iDb].zDbSName; /* Schema name of attached database */ |
| 121773 | 121845 | int rc; /* Auth callback return code */ |
| 121774 | 121846 | |
| 121775 | 121847 | if( db->init.busy ) return SQLITE_OK; |
| 121776 | | - rc = db->xAuth(db->pAuthArg, SQLITE_READ, zTab,zCol,zDb,pParse->zAuthContext |
| 121777 | | -#ifdef SQLITE_USER_AUTHENTICATION |
| 121778 | | - ,db->auth.zAuthUser |
| 121779 | | -#endif |
| 121780 | | - ); |
| 121848 | + rc = db->xAuth(db->pAuthArg, SQLITE_READ, zTab,zCol,zDb,pParse->zAuthContext); |
| 121781 | 121849 | if( rc==SQLITE_DENY ){ |
| 121782 | 121850 | char *z = sqlite3_mprintf("%s.%s", zTab, zCol); |
| 121783 | 121851 | if( db->nDb>2 || iDb!=0 ) z = sqlite3_mprintf("%s.%z", zDb, z); |
| 121784 | 121852 | sqlite3ErrorMsg(pParse, "access to %z is prohibited", z); |
| 121785 | 121853 | pParse->rc = SQLITE_AUTH; |
| | @@ -121882,15 +121950,11 @@ |
| 121882 | 121950 | testcase( zArg1==0 ); |
| 121883 | 121951 | testcase( zArg2==0 ); |
| 121884 | 121952 | testcase( zArg3==0 ); |
| 121885 | 121953 | testcase( pParse->zAuthContext==0 ); |
| 121886 | 121954 | |
| 121887 | | - rc = db->xAuth(db->pAuthArg, code, zArg1, zArg2, zArg3, pParse->zAuthContext |
| 121888 | | -#ifdef SQLITE_USER_AUTHENTICATION |
| 121889 | | - ,db->auth.zAuthUser |
| 121890 | | -#endif |
| 121891 | | - ); |
| 121955 | + rc = db->xAuth(db->pAuthArg,code,zArg1,zArg2,zArg3,pParse->zAuthContext); |
| 121892 | 121956 | if( rc==SQLITE_DENY ){ |
| 121893 | 121957 | sqlite3ErrorMsg(pParse, "not authorized"); |
| 121894 | 121958 | pParse->rc = SQLITE_AUTH; |
| 121895 | 121959 | }else if( rc!=SQLITE_OK && rc!=SQLITE_IGNORE ){ |
| 121896 | 121960 | rc = SQLITE_DENY; |
| | @@ -121928,10 +121992,11 @@ |
| 121928 | 121992 | |
| 121929 | 121993 | #endif /* SQLITE_OMIT_AUTHORIZATION */ |
| 121930 | 121994 | |
| 121931 | 121995 | /************** End of auth.c ************************************************/ |
| 121932 | 121996 | /************** Begin file build.c *******************************************/ |
| 121997 | +#line 1 "tsrc/build.c" |
| 121933 | 121998 | /* |
| 121934 | 121999 | ** 2001 September 15 |
| 121935 | 122000 | ** |
| 121936 | 122001 | ** The author disclaims copyright to this source code. In place of |
| 121937 | 122002 | ** a legal notice, here is a blessing: |
| | @@ -122119,21 +122184,10 @@ |
| 122119 | 122184 | sqlite3VdbeJumpHere(v, addrRewind); |
| 122120 | 122185 | } |
| 122121 | 122186 | } |
| 122122 | 122187 | sqlite3VdbeAddOp0(v, OP_Halt); |
| 122123 | 122188 | |
| 122124 | | -#if SQLITE_USER_AUTHENTICATION && !defined(SQLITE_OMIT_SHARED_CACHE) |
| 122125 | | - if( pParse->nTableLock>0 && db->init.busy==0 ){ |
| 122126 | | - sqlite3UserAuthInit(db); |
| 122127 | | - if( db->auth.authLevel<UAUTH_User ){ |
| 122128 | | - sqlite3ErrorMsg(pParse, "user not authenticated"); |
| 122129 | | - pParse->rc = SQLITE_AUTH_USER; |
| 122130 | | - return; |
| 122131 | | - } |
| 122132 | | - } |
| 122133 | | -#endif |
| 122134 | | - |
| 122135 | 122189 | /* The cookie mask contains one bit for each database file open. |
| 122136 | 122190 | ** (Bit 0 is for main, bit 1 is for temp, and so forth.) Bits are |
| 122137 | 122191 | ** set for each database that is used. Generate code to start a |
| 122138 | 122192 | ** transaction on each used database and to verify the schema cookie |
| 122139 | 122193 | ** on each used database. |
| | @@ -122258,20 +122312,10 @@ |
| 122258 | 122312 | sqlite3DbFree(db, zSql); |
| 122259 | 122313 | memcpy(PARSE_TAIL(pParse), saveBuf, PARSE_TAIL_SZ); |
| 122260 | 122314 | pParse->nested--; |
| 122261 | 122315 | } |
| 122262 | 122316 | |
| 122263 | | -#if SQLITE_USER_AUTHENTICATION |
| 122264 | | -/* |
| 122265 | | -** Return TRUE if zTable is the name of the system table that stores the |
| 122266 | | -** list of users and their access credentials. |
| 122267 | | -*/ |
| 122268 | | -SQLITE_PRIVATE int sqlite3UserAuthTable(const char *zTable){ |
| 122269 | | - return sqlite3_stricmp(zTable, "sqlite_user")==0; |
| 122270 | | -} |
| 122271 | | -#endif |
| 122272 | | - |
| 122273 | 122317 | /* |
| 122274 | 122318 | ** Locate the in-memory structure that describes a particular database |
| 122275 | 122319 | ** table given the name of that table and (optionally) the name of the |
| 122276 | 122320 | ** database containing the table. Return NULL if not found. |
| 122277 | 122321 | ** |
| | @@ -122286,17 +122330,10 @@ |
| 122286 | 122330 | Table *p = 0; |
| 122287 | 122331 | int i; |
| 122288 | 122332 | |
| 122289 | 122333 | /* All mutexes are required for schema access. Make sure we hold them. */ |
| 122290 | 122334 | assert( zDatabase!=0 || sqlite3BtreeHoldsAllMutexes(db) ); |
| 122291 | | -#if SQLITE_USER_AUTHENTICATION |
| 122292 | | - /* Only the admin user is allowed to know that the sqlite_user table |
| 122293 | | - ** exists */ |
| 122294 | | - if( db->auth.authLevel<UAUTH_Admin && sqlite3UserAuthTable(zName)!=0 ){ |
| 122295 | | - return 0; |
| 122296 | | - } |
| 122297 | | -#endif |
| 122298 | 122335 | if( zDatabase ){ |
| 122299 | 122336 | for(i=0; i<db->nDb; i++){ |
| 122300 | 122337 | if( sqlite3StrICmp(zDatabase, db->aDb[i].zDbSName)==0 ) break; |
| 122301 | 122338 | } |
| 122302 | 122339 | if( i>=db->nDb ){ |
| | @@ -125951,13 +125988,10 @@ |
| 125951 | 125988 | |
| 125952 | 125989 | assert( pTab!=0 ); |
| 125953 | 125990 | if( sqlite3StrNICmp(pTab->zName, "sqlite_", 7)==0 |
| 125954 | 125991 | && db->init.busy==0 |
| 125955 | 125992 | && pTblName!=0 |
| 125956 | | -#if SQLITE_USER_AUTHENTICATION |
| 125957 | | - && sqlite3UserAuthTable(pTab->zName)==0 |
| 125958 | | -#endif |
| 125959 | 125993 | ){ |
| 125960 | 125994 | sqlite3ErrorMsg(pParse, "table %s may not be indexed", pTab->zName); |
| 125961 | 125995 | goto exit_create_index; |
| 125962 | 125996 | } |
| 125963 | 125997 | #ifndef SQLITE_OMIT_VIEW |
| | @@ -127729,10 +127763,11 @@ |
| 127729 | 127763 | } |
| 127730 | 127764 | #endif /* !defined(SQLITE_OMIT_CTE) */ |
| 127731 | 127765 | |
| 127732 | 127766 | /************** End of build.c ***********************************************/ |
| 127733 | 127767 | /************** Begin file callback.c ****************************************/ |
| 127768 | +#line 1 "tsrc/callback.c" |
| 127734 | 127769 | /* |
| 127735 | 127770 | ** 2005 May 23 |
| 127736 | 127771 | ** |
| 127737 | 127772 | ** The author disclaims copyright to this source code. In place of |
| 127738 | 127773 | ** a legal notice, here is a blessing: |
| | @@ -128272,10 +128307,11 @@ |
| 128272 | 128307 | return p; |
| 128273 | 128308 | } |
| 128274 | 128309 | |
| 128275 | 128310 | /************** End of callback.c ********************************************/ |
| 128276 | 128311 | /************** Begin file delete.c ******************************************/ |
| 128312 | +#line 1 "tsrc/delete.c" |
| 128277 | 128313 | /* |
| 128278 | 128314 | ** 2001 September 15 |
| 128279 | 128315 | ** |
| 128280 | 128316 | ** The author disclaims copyright to this source code. In place of |
| 128281 | 128317 | ** a legal notice, here is a blessing: |
| | @@ -129305,10 +129341,11 @@ |
| 129305 | 129341 | } |
| 129306 | 129342 | } |
| 129307 | 129343 | |
| 129308 | 129344 | /************** End of delete.c **********************************************/ |
| 129309 | 129345 | /************** Begin file func.c ********************************************/ |
| 129346 | +#line 1 "tsrc/func.c" |
| 129310 | 129347 | /* |
| 129311 | 129348 | ** 2002 February 23 |
| 129312 | 129349 | ** |
| 129313 | 129350 | ** The author disclaims copyright to this source code. In place of |
| 129314 | 129351 | ** a legal notice, here is a blessing: |
| | @@ -131985,13 +132022,10 @@ |
| 131985 | 132022 | #endif |
| 131986 | 132023 | #ifndef SQLITE_OMIT_LOAD_EXTENSION |
| 131987 | 132024 | SFUNCTION(load_extension, 1, 0, 0, loadExt ), |
| 131988 | 132025 | SFUNCTION(load_extension, 2, 0, 0, loadExt ), |
| 131989 | 132026 | #endif |
| 131990 | | -#if SQLITE_USER_AUTHENTICATION |
| 131991 | | - FUNCTION(sqlite_crypt, 2, 0, 0, sqlite3CryptFunc ), |
| 131992 | | -#endif |
| 131993 | 132027 | #ifndef SQLITE_OMIT_COMPILEOPTION_DIAGS |
| 131994 | 132028 | DFUNCTION(sqlite_compileoption_used,1, 0, 0, compileoptionusedFunc ), |
| 131995 | 132029 | DFUNCTION(sqlite_compileoption_get, 1, 0, 0, compileoptiongetFunc ), |
| 131996 | 132030 | #endif /* SQLITE_OMIT_COMPILEOPTION_DIAGS */ |
| 131997 | 132031 | INLINE_FUNC(unlikely, 1, INLINEFUNC_unlikely, SQLITE_FUNC_UNLIKELY), |
| | @@ -132154,10 +132188,11 @@ |
| 132154 | 132188 | #endif |
| 132155 | 132189 | } |
| 132156 | 132190 | |
| 132157 | 132191 | /************** End of func.c ************************************************/ |
| 132158 | 132192 | /************** Begin file fkey.c ********************************************/ |
| 132193 | +#line 1 "tsrc/fkey.c" |
| 132159 | 132194 | /* |
| 132160 | 132195 | ** |
| 132161 | 132196 | ** The author disclaims copyright to this source code. In place of |
| 132162 | 132197 | ** a legal notice, here is a blessing: |
| 132163 | 132198 | ** |
| | @@ -133641,10 +133676,11 @@ |
| 133641 | 133676 | } |
| 133642 | 133677 | #endif /* ifndef SQLITE_OMIT_FOREIGN_KEY */ |
| 133643 | 133678 | |
| 133644 | 133679 | /************** End of fkey.c ************************************************/ |
| 133645 | 133680 | /************** Begin file insert.c ******************************************/ |
| 133681 | +#line 1 "tsrc/insert.c" |
| 133646 | 133682 | /* |
| 133647 | 133683 | ** 2001 September 15 |
| 133648 | 133684 | ** |
| 133649 | 133685 | ** The author disclaims copyright to this source code. In place of |
| 133650 | 133686 | ** a legal notice, here is a blessing: |
| | @@ -137036,10 +137072,11 @@ |
| 137036 | 137072 | } |
| 137037 | 137073 | #endif /* SQLITE_OMIT_XFER_OPT */ |
| 137038 | 137074 | |
| 137039 | 137075 | /************** End of insert.c **********************************************/ |
| 137040 | 137076 | /************** Begin file legacy.c ******************************************/ |
| 137077 | +#line 1 "tsrc/legacy.c" |
| 137041 | 137078 | /* |
| 137042 | 137079 | ** 2001 September 15 |
| 137043 | 137080 | ** |
| 137044 | 137081 | ** The author disclaims copyright to this source code. In place of |
| 137045 | 137082 | ** a legal notice, here is a blessing: |
| | @@ -137180,10 +137217,11 @@ |
| 137180 | 137217 | return rc; |
| 137181 | 137218 | } |
| 137182 | 137219 | |
| 137183 | 137220 | /************** End of legacy.c **********************************************/ |
| 137184 | 137221 | /************** Begin file loadext.c *****************************************/ |
| 137222 | +#line 1 "tsrc/loadext.c" |
| 137185 | 137223 | /* |
| 137186 | 137224 | ** 2006 June 7 |
| 137187 | 137225 | ** |
| 137188 | 137226 | ** The author disclaims copyright to this source code. In place of |
| 137189 | 137227 | ** a legal notice, here is a blessing: |
| | @@ -137200,10 +137238,11 @@ |
| 137200 | 137238 | #ifndef SQLITE_CORE |
| 137201 | 137239 | #define SQLITE_CORE 1 /* Disable the API redefinition in sqlite3ext.h */ |
| 137202 | 137240 | #endif |
| 137203 | 137241 | /************** Include sqlite3ext.h in the middle of loadext.c **************/ |
| 137204 | 137242 | /************** Begin file sqlite3ext.h **************************************/ |
| 137243 | +#line 1 "tsrc/sqlite3ext.h" |
| 137205 | 137244 | /* |
| 137206 | 137245 | ** 2006 June 7 |
| 137207 | 137246 | ** |
| 137208 | 137247 | ** The author disclaims copyright to this source code. In place of |
| 137209 | 137248 | ** a legal notice, here is a blessing: |
| | @@ -137922,10 +137961,11 @@ |
| 137922 | 137961 | |
| 137923 | 137962 | #endif /* SQLITE3EXT_H */ |
| 137924 | 137963 | |
| 137925 | 137964 | /************** End of sqlite3ext.h ******************************************/ |
| 137926 | 137965 | /************** Continuing where we left off in loadext.c ********************/ |
| 137966 | +#line 20 "tsrc/loadext.c" |
| 137927 | 137967 | /* #include "sqliteInt.h" */ |
| 137928 | 137968 | |
| 137929 | 137969 | #ifndef SQLITE_OMIT_LOAD_EXTENSION |
| 137930 | 137970 | /* |
| 137931 | 137971 | ** Some API routines are omitted when various features are |
| | @@ -138827,10 +138867,11 @@ |
| 138827 | 138867 | } |
| 138828 | 138868 | } |
| 138829 | 138869 | |
| 138830 | 138870 | /************** End of loadext.c *********************************************/ |
| 138831 | 138871 | /************** Begin file pragma.c ******************************************/ |
| 138872 | +#line 1 "tsrc/pragma.c" |
| 138832 | 138873 | /* |
| 138833 | 138874 | ** 2003 April 6 |
| 138834 | 138875 | ** |
| 138835 | 138876 | ** The author disclaims copyright to this source code. In place of |
| 138836 | 138877 | ** a legal notice, here is a blessing: |
| | @@ -138859,10 +138900,11 @@ |
| 138859 | 138900 | ** lexicographical order to facility a binary search of the pragma name. |
| 138860 | 138901 | ** Do not edit pragma.h directly. Edit and rerun the script in at |
| 138861 | 138902 | ** ../tool/mkpragmatab.tcl. */ |
| 138862 | 138903 | /************** Include pragma.h in the middle of pragma.c *******************/ |
| 138863 | 138904 | /************** Begin file pragma.h ******************************************/ |
| 138905 | +#line 1 "tsrc/pragma.h" |
| 138864 | 138906 | /* DO NOT EDIT! |
| 138865 | 138907 | ** This file is automatically generated by the script at |
| 138866 | 138908 | ** ../tool/mkpragmatab.tcl. To update the set of pragmas, edit |
| 138867 | 138909 | ** that script and rerun it. |
| 138868 | 138910 | */ |
| | @@ -139522,10 +139564,11 @@ |
| 139522 | 139564 | }; |
| 139523 | 139565 | /* Number of pragmas: 68 on by default, 78 total. */ |
| 139524 | 139566 | |
| 139525 | 139567 | /************** End of pragma.h **********************************************/ |
| 139526 | 139568 | /************** Continuing where we left off in pragma.c *********************/ |
| 139569 | +#line 32 "tsrc/pragma.c" |
| 139527 | 139570 | |
| 139528 | 139571 | /* |
| 139529 | 139572 | ** When the 0x10 bit of PRAGMA optimize is set, any ANALYZE commands |
| 139530 | 139573 | ** will be run with an analysis_limit set to the lessor of the value of |
| 139531 | 139574 | ** the following macro or to the actual analysis_limit if it is non-zero, |
| | @@ -140637,16 +140680,10 @@ |
| 140637 | 140680 | if( db->autoCommit==0 ){ |
| 140638 | 140681 | /* Foreign key support may not be enabled or disabled while not |
| 140639 | 140682 | ** in auto-commit mode. */ |
| 140640 | 140683 | mask &= ~(SQLITE_ForeignKeys); |
| 140641 | 140684 | } |
| 140642 | | -#if SQLITE_USER_AUTHENTICATION |
| 140643 | | - if( db->auth.authLevel==UAUTH_User ){ |
| 140644 | | - /* Do not allow non-admin users to modify the schema arbitrarily */ |
| 140645 | | - mask &= ~(SQLITE_WriteSchema); |
| 140646 | | - } |
| 140647 | | -#endif |
| 140648 | 140685 | |
| 140649 | 140686 | if( sqlite3GetBoolean(zRight, 0) ){ |
| 140650 | 140687 | if( (mask & SQLITE_WriteSchema)==0 |
| 140651 | 140688 | || (db->flags & SQLITE_Defensive)==0 |
| 140652 | 140689 | ){ |
| | @@ -142571,10 +142608,11 @@ |
| 142571 | 142608 | |
| 142572 | 142609 | #endif /* SQLITE_OMIT_PRAGMA */ |
| 142573 | 142610 | |
| 142574 | 142611 | /************** End of pragma.c **********************************************/ |
| 142575 | 142612 | /************** Begin file prepare.c *****************************************/ |
| 142613 | +#line 1 "tsrc/prepare.c" |
| 142576 | 142614 | /* |
| 142577 | 142615 | ** 2005 May 25 |
| 142578 | 142616 | ** |
| 142579 | 142617 | ** The author disclaims copyright to this source code. In place of |
| 142580 | 142618 | ** a legal notice, here is a blessing: |
| | @@ -142879,18 +142917,11 @@ |
| 142879 | 142917 | encoding = (u8)meta[BTREE_TEXT_ENCODING-1] & 3; |
| 142880 | 142918 | if( encoding==0 ) encoding = SQLITE_UTF8; |
| 142881 | 142919 | #else |
| 142882 | 142920 | encoding = SQLITE_UTF8; |
| 142883 | 142921 | #endif |
| 142884 | | - if( db->nVdbeActive>0 && encoding!=ENC(db) |
| 142885 | | - && (db->mDbFlags & DBFLAG_Vacuum)==0 |
| 142886 | | - ){ |
| 142887 | | - rc = SQLITE_LOCKED; |
| 142888 | | - goto initone_error_out; |
| 142889 | | - }else{ |
| 142890 | | - sqlite3SetTextEncoding(db, encoding); |
| 142891 | | - } |
| 142922 | + sqlite3SetTextEncoding(db, encoding); |
| 142892 | 142923 | }else{ |
| 142893 | 142924 | /* If opening an attached database, the encoding much match ENC(db) */ |
| 142894 | 142925 | if( (meta[BTREE_TEXT_ENCODING-1] & 3)!=ENC(db) ){ |
| 142895 | 142926 | sqlite3SetString(pzErrMsg, db, "attached databases must use the same" |
| 142896 | 142927 | " text encoding as main database"); |
| | @@ -143671,10 +143702,11 @@ |
| 143671 | 143702 | |
| 143672 | 143703 | #endif /* SQLITE_OMIT_UTF16 */ |
| 143673 | 143704 | |
| 143674 | 143705 | /************** End of prepare.c *********************************************/ |
| 143675 | 143706 | /************** Begin file select.c ******************************************/ |
| 143707 | +#line 1 "tsrc/select.c" |
| 143676 | 143708 | /* |
| 143677 | 143709 | ** 2001 September 15 |
| 143678 | 143710 | ** |
| 143679 | 143711 | ** The author disclaims copyright to this source code. In place of |
| 143680 | 143712 | ** a legal notice, here is a blessing: |
| | @@ -152443,10 +152475,11 @@ |
| 152443 | 152475 | return rc; |
| 152444 | 152476 | } |
| 152445 | 152477 | |
| 152446 | 152478 | /************** End of select.c **********************************************/ |
| 152447 | 152479 | /************** Begin file table.c *******************************************/ |
| 152480 | +#line 1 "tsrc/table.c" |
| 152448 | 152481 | /* |
| 152449 | 152482 | ** 2001 September 15 |
| 152450 | 152483 | ** |
| 152451 | 152484 | ** The author disclaims copyright to this source code. In place of |
| 152452 | 152485 | ** a legal notice, here is a blessing: |
| | @@ -152644,10 +152677,11 @@ |
| 152644 | 152677 | |
| 152645 | 152678 | #endif /* SQLITE_OMIT_GET_TABLE */ |
| 152646 | 152679 | |
| 152647 | 152680 | /************** End of table.c ***********************************************/ |
| 152648 | 152681 | /************** Begin file trigger.c *****************************************/ |
| 152682 | +#line 1 "tsrc/trigger.c" |
| 152649 | 152683 | /* |
| 152650 | 152684 | ** |
| 152651 | 152685 | ** The author disclaims copyright to this source code. In place of |
| 152652 | 152686 | ** a legal notice, here is a blessing: |
| 152653 | 152687 | ** |
| | @@ -154210,10 +154244,11 @@ |
| 154210 | 154244 | |
| 154211 | 154245 | #endif /* !defined(SQLITE_OMIT_TRIGGER) */ |
| 154212 | 154246 | |
| 154213 | 154247 | /************** End of trigger.c *********************************************/ |
| 154214 | 154248 | /************** Begin file update.c ******************************************/ |
| 154249 | +#line 1 "tsrc/update.c" |
| 154215 | 154250 | /* |
| 154216 | 154251 | ** 2001 September 15 |
| 154217 | 154252 | ** |
| 154218 | 154253 | ** The author disclaims copyright to this source code. In place of |
| 154219 | 154254 | ** a legal notice, here is a blessing: |
| | @@ -155581,10 +155616,11 @@ |
| 155581 | 155616 | } |
| 155582 | 155617 | #endif /* SQLITE_OMIT_VIRTUALTABLE */ |
| 155583 | 155618 | |
| 155584 | 155619 | /************** End of update.c **********************************************/ |
| 155585 | 155620 | /************** Begin file upsert.c ******************************************/ |
| 155621 | +#line 1 "tsrc/upsert.c" |
| 155586 | 155622 | /* |
| 155587 | 155623 | ** 2018-04-12 |
| 155588 | 155624 | ** |
| 155589 | 155625 | ** The author disclaims copyright to this source code. In place of |
| 155590 | 155626 | ** a legal notice, here is a blessing: |
| | @@ -155913,10 +155949,11 @@ |
| 155913 | 155949 | |
| 155914 | 155950 | #endif /* SQLITE_OMIT_UPSERT */ |
| 155915 | 155951 | |
| 155916 | 155952 | /************** End of upsert.c **********************************************/ |
| 155917 | 155953 | /************** Begin file vacuum.c ******************************************/ |
| 155954 | +#line 1 "tsrc/vacuum.c" |
| 155918 | 155955 | /* |
| 155919 | 155956 | ** 2003 April 6 |
| 155920 | 155957 | ** |
| 155921 | 155958 | ** The author disclaims copyright to this source code. In place of |
| 155922 | 155959 | ** a legal notice, here is a blessing: |
| | @@ -156334,10 +156371,11 @@ |
| 156334 | 156371 | |
| 156335 | 156372 | #endif /* SQLITE_OMIT_VACUUM && SQLITE_OMIT_ATTACH */ |
| 156336 | 156373 | |
| 156337 | 156374 | /************** End of vacuum.c **********************************************/ |
| 156338 | 156375 | /************** Begin file vtab.c ********************************************/ |
| 156376 | +#line 1 "tsrc/vtab.c" |
| 156339 | 156377 | /* |
| 156340 | 156378 | ** 2006 June 10 |
| 156341 | 156379 | ** |
| 156342 | 156380 | ** The author disclaims copyright to this source code. In place of |
| 156343 | 156381 | ** a legal notice, here is a blessing: |
| | @@ -157711,10 +157749,11 @@ |
| 157711 | 157749 | |
| 157712 | 157750 | #endif /* SQLITE_OMIT_VIRTUALTABLE */ |
| 157713 | 157751 | |
| 157714 | 157752 | /************** End of vtab.c ************************************************/ |
| 157715 | 157753 | /************** Begin file wherecode.c ***************************************/ |
| 157754 | +#line 1 "tsrc/wherecode.c" |
| 157716 | 157755 | /* |
| 157717 | 157756 | ** 2015-06-06 |
| 157718 | 157757 | ** |
| 157719 | 157758 | ** The author disclaims copyright to this source code. In place of |
| 157720 | 157759 | ** a legal notice, here is a blessing: |
| | @@ -157733,10 +157772,11 @@ |
| 157733 | 157772 | ** file retains the code that does query planning and analysis. |
| 157734 | 157773 | */ |
| 157735 | 157774 | /* #include "sqliteInt.h" */ |
| 157736 | 157775 | /************** Include whereInt.h in the middle of wherecode.c **************/ |
| 157737 | 157776 | /************** Begin file whereInt.h ****************************************/ |
| 157777 | +#line 1 "tsrc/whereInt.h" |
| 157738 | 157778 | /* |
| 157739 | 157779 | ** 2013-11-12 |
| 157740 | 157780 | ** |
| 157741 | 157781 | ** The author disclaims copyright to this source code. In place of |
| 157742 | 157782 | ** a legal notice, here is a blessing: |
| | @@ -158268,13 +158308,21 @@ |
| 158268 | 158308 | SQLITE_PRIVATE int sqlite3WhereExplainBloomFilter( |
| 158269 | 158309 | const Parse *pParse, /* Parse context */ |
| 158270 | 158310 | const WhereInfo *pWInfo, /* WHERE clause */ |
| 158271 | 158311 | const WhereLevel *pLevel /* Bloom filter on this level */ |
| 158272 | 158312 | ); |
| 158313 | +SQLITE_PRIVATE void sqlite3WhereAddExplainText( |
| 158314 | + Parse *pParse, /* Parse context */ |
| 158315 | + int addr, |
| 158316 | + SrcList *pTabList, /* Table list this loop refers to */ |
| 158317 | + WhereLevel *pLevel, /* Scan to write OP_Explain opcode for */ |
| 158318 | + u16 wctrlFlags /* Flags passed to sqlite3WhereBegin() */ |
| 158319 | +); |
| 158273 | 158320 | #else |
| 158274 | 158321 | # define sqlite3WhereExplainOneScan(u,v,w,x) 0 |
| 158275 | 158322 | # define sqlite3WhereExplainBloomFilter(u,v,w) 0 |
| 158323 | +# define sqlite3WhereAddExplainText(u,v,w,x,y) |
| 158276 | 158324 | #endif /* SQLITE_OMIT_EXPLAIN */ |
| 158277 | 158325 | #ifdef SQLITE_ENABLE_STMT_SCANSTATUS |
| 158278 | 158326 | SQLITE_PRIVATE void sqlite3WhereAddScanStatus( |
| 158279 | 158327 | Vdbe *v, /* Vdbe to add scanstatus entry to */ |
| 158280 | 158328 | SrcList *pSrclist, /* FROM clause pLvl reads data from */ |
| | @@ -158381,10 +158429,11 @@ |
| 158381 | 158429 | |
| 158382 | 158430 | #endif /* !defined(SQLITE_WHEREINT_H) */ |
| 158383 | 158431 | |
| 158384 | 158432 | /************** End of whereInt.h ********************************************/ |
| 158385 | 158433 | /************** Continuing where we left off in wherecode.c ******************/ |
| 158434 | +#line 22 "tsrc/wherecode.c" |
| 158386 | 158435 | |
| 158387 | 158436 | #ifndef SQLITE_OMIT_EXPLAIN |
| 158388 | 158437 | |
| 158389 | 158438 | /* |
| 158390 | 158439 | ** Return the name of the i-th column of the pIdx index. |
| | @@ -158472,42 +158521,42 @@ |
| 158472 | 158521 | } |
| 158473 | 158522 | sqlite3_str_append(pStr, ")", 1); |
| 158474 | 158523 | } |
| 158475 | 158524 | |
| 158476 | 158525 | /* |
| 158477 | | -** This function is a no-op unless currently processing an EXPLAIN QUERY PLAN |
| 158478 | | -** command, or if stmt_scanstatus_v2() stats are enabled, or if SQLITE_DEBUG |
| 158479 | | -** was defined at compile-time. If it is not a no-op, a single OP_Explain |
| 158480 | | -** opcode is added to the output to describe the table scan strategy in pLevel. |
| 158481 | | -** |
| 158482 | | -** If an OP_Explain opcode is added to the VM, its address is returned. |
| 158483 | | -** Otherwise, if no OP_Explain is coded, zero is returned. |
| 158526 | +** This function sets the P4 value of an existing OP_Explain opcode to |
| 158527 | +** text describing the loop in pLevel. If the OP_Explain opcode already has |
| 158528 | +** a P4 value, it is freed before it is overwritten. |
| 158484 | 158529 | */ |
| 158485 | | -SQLITE_PRIVATE int sqlite3WhereExplainOneScan( |
| 158530 | +SQLITE_PRIVATE void sqlite3WhereAddExplainText( |
| 158486 | 158531 | Parse *pParse, /* Parse context */ |
| 158532 | + int addr, /* Address of OP_Explain opcode */ |
| 158487 | 158533 | SrcList *pTabList, /* Table list this loop refers to */ |
| 158488 | 158534 | WhereLevel *pLevel, /* Scan to write OP_Explain opcode for */ |
| 158489 | 158535 | u16 wctrlFlags /* Flags passed to sqlite3WhereBegin() */ |
| 158490 | 158536 | ){ |
| 158491 | | - int ret = 0; |
| 158492 | 158537 | #if !defined(SQLITE_DEBUG) |
| 158493 | 158538 | if( sqlite3ParseToplevel(pParse)->explain==2 || IS_STMT_SCANSTATUS(pParse->db) ) |
| 158494 | 158539 | #endif |
| 158495 | 158540 | { |
| 158541 | + VdbeOp *pOp = sqlite3VdbeGetOp(pParse->pVdbe, addr); |
| 158542 | + |
| 158496 | 158543 | SrcItem *pItem = &pTabList->a[pLevel->iFrom]; |
| 158497 | | - Vdbe *v = pParse->pVdbe; /* VM being constructed */ |
| 158498 | 158544 | sqlite3 *db = pParse->db; /* Database handle */ |
| 158499 | 158545 | int isSearch; /* True for a SEARCH. False for SCAN. */ |
| 158500 | 158546 | WhereLoop *pLoop; /* The controlling WhereLoop object */ |
| 158501 | 158547 | u32 flags; /* Flags that describe this loop */ |
| 158548 | +#if defined(SQLITE_DEBUG) && !defined(SQLITE_OMIT_EXPLAIN) |
| 158502 | 158549 | char *zMsg; /* Text to add to EQP output */ |
| 158550 | +#endif |
| 158503 | 158551 | StrAccum str; /* EQP output string */ |
| 158504 | 158552 | char zBuf[100]; /* Initial space for EQP output string */ |
| 158505 | 158553 | |
| 158554 | + if( db->mallocFailed ) return; |
| 158555 | + |
| 158506 | 158556 | pLoop = pLevel->pWLoop; |
| 158507 | 158557 | flags = pLoop->wsFlags; |
| 158508 | | - if( (flags&WHERE_MULTI_OR) || (wctrlFlags&WHERE_OR_SUBCLAUSE) ) return 0; |
| 158509 | 158558 | |
| 158510 | 158559 | isSearch = (flags&(WHERE_BTM_LIMIT|WHERE_TOP_LIMIT))!=0 |
| 158511 | 158560 | || ((flags&WHERE_VIRTUALTABLE)==0 && (pLoop->u.btree.nEq>0)) |
| 158512 | 158561 | || (wctrlFlags&(WHERE_ORDERBY_MIN|WHERE_ORDERBY_MAX)); |
| 158513 | 158562 | |
| | @@ -158527,11 +158576,11 @@ |
| 158527 | 158576 | } |
| 158528 | 158577 | }else if( flags & WHERE_PARTIALIDX ){ |
| 158529 | 158578 | zFmt = "AUTOMATIC PARTIAL COVERING INDEX"; |
| 158530 | 158579 | }else if( flags & WHERE_AUTO_INDEX ){ |
| 158531 | 158580 | zFmt = "AUTOMATIC COVERING INDEX"; |
| 158532 | | - }else if( flags & WHERE_IDX_ONLY ){ |
| 158581 | + }else if( flags & (WHERE_IDX_ONLY|WHERE_EXPRIDX) ){ |
| 158533 | 158582 | zFmt = "COVERING INDEX %s"; |
| 158534 | 158583 | }else{ |
| 158535 | 158584 | zFmt = "INDEX %s"; |
| 158536 | 158585 | } |
| 158537 | 158586 | if( zFmt ){ |
| | @@ -158579,15 +158628,54 @@ |
| 158579 | 158628 | sqlite3LogEstToInt(pLoop->nOut)); |
| 158580 | 158629 | }else{ |
| 158581 | 158630 | sqlite3_str_append(&str, " (~1 row)", 9); |
| 158582 | 158631 | } |
| 158583 | 158632 | #endif |
| 158633 | +#if defined(SQLITE_DEBUG) && !defined(SQLITE_OMIT_EXPLAIN) |
| 158584 | 158634 | zMsg = sqlite3StrAccumFinish(&str); |
| 158585 | 158635 | sqlite3ExplainBreakpoint("",zMsg); |
| 158586 | | - ret = sqlite3VdbeAddOp4(v, OP_Explain, sqlite3VdbeCurrentAddr(v), |
| 158587 | | - pParse->addrExplain, pLoop->rRun, |
| 158588 | | - zMsg, P4_DYNAMIC); |
| 158636 | +#endif |
| 158637 | + |
| 158638 | + assert( pOp->opcode==OP_Explain ); |
| 158639 | + assert( pOp->p4type==P4_DYNAMIC || pOp->p4.z==0 ); |
| 158640 | + sqlite3DbFree(db, pOp->p4.z); |
| 158641 | + pOp->p4type = P4_DYNAMIC; |
| 158642 | + pOp->p4.z = sqlite3StrAccumFinish(&str); |
| 158643 | + } |
| 158644 | +} |
| 158645 | + |
| 158646 | + |
| 158647 | +/* |
| 158648 | +** This function is a no-op unless currently processing an EXPLAIN QUERY PLAN |
| 158649 | +** command, or if stmt_scanstatus_v2() stats are enabled, or if SQLITE_DEBUG |
| 158650 | +** was defined at compile-time. If it is not a no-op, a single OP_Explain |
| 158651 | +** opcode is added to the output to describe the table scan strategy in pLevel. |
| 158652 | +** |
| 158653 | +** If an OP_Explain opcode is added to the VM, its address is returned. |
| 158654 | +** Otherwise, if no OP_Explain is coded, zero is returned. |
| 158655 | +*/ |
| 158656 | +SQLITE_PRIVATE int sqlite3WhereExplainOneScan( |
| 158657 | + Parse *pParse, /* Parse context */ |
| 158658 | + SrcList *pTabList, /* Table list this loop refers to */ |
| 158659 | + WhereLevel *pLevel, /* Scan to write OP_Explain opcode for */ |
| 158660 | + u16 wctrlFlags /* Flags passed to sqlite3WhereBegin() */ |
| 158661 | +){ |
| 158662 | + int ret = 0; |
| 158663 | +#if !defined(SQLITE_DEBUG) |
| 158664 | + if( sqlite3ParseToplevel(pParse)->explain==2 || IS_STMT_SCANSTATUS(pParse->db) ) |
| 158665 | +#endif |
| 158666 | + { |
| 158667 | + if( (pLevel->pWLoop->wsFlags & WHERE_MULTI_OR)==0 |
| 158668 | + && (wctrlFlags & WHERE_OR_SUBCLAUSE)==0 |
| 158669 | + ){ |
| 158670 | + Vdbe *v = pParse->pVdbe; |
| 158671 | + int addr = sqlite3VdbeCurrentAddr(v); |
| 158672 | + ret = sqlite3VdbeAddOp3( |
| 158673 | + v, OP_Explain, addr, pParse->addrExplain, pLevel->pWLoop->rRun |
| 158674 | + ); |
| 158675 | + sqlite3WhereAddExplainText(pParse, addr, pTabList, pLevel, wctrlFlags); |
| 158676 | + } |
| 158589 | 158677 | } |
| 158590 | 158678 | return ret; |
| 158591 | 158679 | } |
| 158592 | 158680 | |
| 158593 | 158681 | /* |
| | @@ -158682,13 +158770,14 @@ |
| 158682 | 158770 | if( wsFlags & WHERE_INDEXED ){ |
| 158683 | 158771 | sqlite3VdbeScanStatusRange(v, addrExplain, -1, pLvl->iIdxCur); |
| 158684 | 158772 | } |
| 158685 | 158773 | }else{ |
| 158686 | 158774 | int addr; |
| 158775 | + VdbeOp *pOp; |
| 158687 | 158776 | assert( pSrclist->a[pLvl->iFrom].fg.isSubquery ); |
| 158688 | 158777 | addr = pSrclist->a[pLvl->iFrom].u4.pSubq->addrFillSub; |
| 158689 | | - VdbeOp *pOp = sqlite3VdbeGetOp(v, addr-1); |
| 158778 | + pOp = sqlite3VdbeGetOp(v, addr-1); |
| 158690 | 158779 | assert( sqlite3VdbeDb(v)->mallocFailed || pOp->opcode==OP_InitCoroutine ); |
| 158691 | 158780 | assert( sqlite3VdbeDb(v)->mallocFailed || pOp->p2>addr ); |
| 158692 | 158781 | sqlite3VdbeScanStatusRange(v, addrExplain, addr, pOp->p2-1); |
| 158693 | 158782 | } |
| 158694 | 158783 | } |
| | @@ -161263,10 +161352,11 @@ |
| 161263 | 161352 | pParse->withinRJSubrtn--; |
| 161264 | 161353 | } |
| 161265 | 161354 | |
| 161266 | 161355 | /************** End of wherecode.c *******************************************/ |
| 161267 | 161356 | /************** Begin file whereexpr.c ***************************************/ |
| 161357 | +#line 1 "tsrc/whereexpr.c" |
| 161268 | 161358 | /* |
| 161269 | 161359 | ** 2015-06-08 |
| 161270 | 161360 | ** |
| 161271 | 161361 | ** The author disclaims copyright to this source code. In place of |
| 161272 | 161362 | ** a legal notice, here is a blessing: |
| | @@ -163168,10 +163258,11 @@ |
| 163168 | 163258 | } |
| 163169 | 163259 | } |
| 163170 | 163260 | |
| 163171 | 163261 | /************** End of whereexpr.c *******************************************/ |
| 163172 | 163262 | /************** Begin file where.c *******************************************/ |
| 163263 | +#line 1 "tsrc/where.c" |
| 163173 | 163264 | /* |
| 163174 | 163265 | ** 2001 September 15 |
| 163175 | 163266 | ** |
| 163176 | 163267 | ** The author disclaims copyright to this source code. In place of |
| 163177 | 163268 | ** a legal notice, here is a blessing: |
| | @@ -170611,18 +170702,32 @@ |
| 170611 | 170702 | x = sqlite3TableColumnToIndex(pIdx, x); |
| 170612 | 170703 | if( x>=0 ){ |
| 170613 | 170704 | pOp->p2 = x; |
| 170614 | 170705 | pOp->p1 = pLevel->iIdxCur; |
| 170615 | 170706 | OpcodeRewriteTrace(db, k, pOp); |
| 170616 | | - }else{ |
| 170617 | | - /* Unable to translate the table reference into an index |
| 170618 | | - ** reference. Verify that this is harmless - that the |
| 170619 | | - ** table being referenced really is open. |
| 170620 | | - */ |
| 170707 | + }else if( pLoop->wsFlags & (WHERE_IDX_ONLY|WHERE_EXPRIDX) ){ |
| 170621 | 170708 | if( pLoop->wsFlags & WHERE_IDX_ONLY ){ |
| 170709 | + /* An error. pLoop is supposed to be a covering index loop, |
| 170710 | + ** and yet the VM code refers to a column of the table that |
| 170711 | + ** is not part of the index. */ |
| 170622 | 170712 | sqlite3ErrorMsg(pParse, "internal query planner error"); |
| 170623 | 170713 | pParse->rc = SQLITE_INTERNAL; |
| 170714 | + }else{ |
| 170715 | + /* The WHERE_EXPRIDX flag is set by the planner when it is likely |
| 170716 | + ** that pLoop is a covering index loop, but it is not possible |
| 170717 | + ** to be 100% sure. In this case, any OP_Explain opcode |
| 170718 | + ** corresponding to this loop describes the index as a "COVERING |
| 170719 | + ** INDEX". But, pOp proves that pLoop is not actually a covering |
| 170720 | + ** index loop. So clear the WHERE_EXPRIDX flag and rewrite the |
| 170721 | + ** text that accompanies the OP_Explain opcode, if any. */ |
| 170722 | + pLoop->wsFlags &= ~WHERE_EXPRIDX; |
| 170723 | + sqlite3WhereAddExplainText(pParse, |
| 170724 | + pLevel->addrBody-1, |
| 170725 | + pTabList, |
| 170726 | + pLevel, |
| 170727 | + pWInfo->wctrlFlags |
| 170728 | + ); |
| 170624 | 170729 | } |
| 170625 | 170730 | } |
| 170626 | 170731 | }else if( pOp->opcode==OP_Rowid ){ |
| 170627 | 170732 | pOp->p1 = pLevel->iIdxCur; |
| 170628 | 170733 | pOp->opcode = OP_IdxRowid; |
| | @@ -170654,10 +170759,11 @@ |
| 170654 | 170759 | return; |
| 170655 | 170760 | } |
| 170656 | 170761 | |
| 170657 | 170762 | /************** End of where.c ***********************************************/ |
| 170658 | 170763 | /************** Begin file window.c ******************************************/ |
| 170764 | +#line 1 "tsrc/window.c" |
| 170659 | 170765 | /* |
| 170660 | 170766 | ** 2018 May 08 |
| 170661 | 170767 | ** |
| 170662 | 170768 | ** The author disclaims copyright to this source code. In place of |
| 170663 | 170769 | ** a legal notice, here is a blessing: |
| | @@ -173763,10 +173869,11 @@ |
| 173763 | 173869 | |
| 173764 | 173870 | #endif /* SQLITE_OMIT_WINDOWFUNC */ |
| 173765 | 173871 | |
| 173766 | 173872 | /************** End of window.c **********************************************/ |
| 173767 | 173873 | /************** Begin file parse.c *******************************************/ |
| 173874 | +#line 1 "tsrc/parse.c" |
| 173768 | 173875 | /* This file is automatically generated by Lemon from input grammar |
| 173769 | 173876 | ** source file "parse.y". |
| 173770 | 173877 | */ |
| 173771 | 173878 | /* |
| 173772 | 173879 | ** 2001-09-15 |
| | @@ -173786,10 +173893,11 @@ |
| 173786 | 173893 | ** That input file is processed by Lemon to generate a C-language |
| 173787 | 173894 | ** implementation of a parser for the given grammar. You might be reading |
| 173788 | 173895 | ** this comment as part of the translated C-code. Edits should be made |
| 173789 | 173896 | ** to the original parse.y sources. |
| 173790 | 173897 | */ |
| 173898 | +#line 62 "parse.y" |
| 173791 | 173899 | |
| 173792 | 173900 | /* #include "sqliteInt.h" */ |
| 173793 | 173901 | |
| 173794 | 173902 | /* |
| 173795 | 173903 | ** Disable all error recovery processing in the parser push-down |
| | @@ -173869,10 +173977,11 @@ |
| 173869 | 173977 | sqlite3ExprListDelete(pParse->db, pOrderBy); |
| 173870 | 173978 | sqlite3ExprDelete(pParse->db, pLimit); |
| 173871 | 173979 | } |
| 173872 | 173980 | #endif /* SQLITE_ENABLE_UPDATE_DELETE_LIMIT */ |
| 173873 | 173981 | |
| 173982 | +#line 517 "parse.y" |
| 173874 | 173983 | |
| 173875 | 173984 | /* |
| 173876 | 173985 | ** For a compound SELECT statement, make sure p->pPrior->pNext==p for |
| 173877 | 173986 | ** all elements in the list. And make sure list length does not exceed |
| 173878 | 173987 | ** SQLITE_LIMIT_COMPOUND_SELECT. |
| | @@ -173923,10 +174032,11 @@ |
| 173923 | 174032 | ** testing. |
| 173924 | 174033 | */ |
| 173925 | 174034 | static void *parserStackRealloc(void *pOld, sqlite3_uint64 newSize){ |
| 173926 | 174035 | return sqlite3FaultSim(700) ? 0 : sqlite3_realloc(pOld, newSize); |
| 173927 | 174036 | } |
| 174037 | +#line 1085 "parse.y" |
| 173928 | 174038 | |
| 173929 | 174039 | |
| 173930 | 174040 | /* Construct a new Expr object from a single token */ |
| 173931 | 174041 | static Expr *tokenExpr(Parse *pParse, int op, Token t){ |
| 173932 | 174042 | Expr *p = sqlite3DbMallocRawNN(pParse->db, sizeof(Expr)+t.n+1); |
| | @@ -173959,10 +174069,11 @@ |
| 173959 | 174069 | } |
| 173960 | 174070 | } |
| 173961 | 174071 | return p; |
| 173962 | 174072 | } |
| 173963 | 174073 | |
| 174074 | +#line 1329 "parse.y" |
| 173964 | 174075 | |
| 173965 | 174076 | /* A routine to convert a binary TK_IS or TK_ISNOT expression into a |
| 173966 | 174077 | ** unary TK_ISNULL or TK_NOTNULL expression. */ |
| 173967 | 174078 | static void binaryToUnaryIfNull(Parse *pParse, Expr *pY, Expr *pA, int op){ |
| 173968 | 174079 | sqlite3 *db = pParse->db; |
| | @@ -173970,10 +174081,11 @@ |
| 173970 | 174081 | pA->op = (u8)op; |
| 173971 | 174082 | sqlite3ExprDelete(db, pA->pRight); |
| 173972 | 174083 | pA->pRight = 0; |
| 173973 | 174084 | } |
| 173974 | 174085 | } |
| 174086 | +#line 1564 "parse.y" |
| 173975 | 174087 | |
| 173976 | 174088 | /* Add a single new term to an ExprList that is used to store a |
| 173977 | 174089 | ** list of identifiers. Report an error if the ID list contains |
| 173978 | 174090 | ** a COLLATE clause or an ASC or DESC keyword, except ignore the |
| 173979 | 174091 | ** error while parsing a legacy schema. |
| | @@ -173993,14 +174105,16 @@ |
| 173993 | 174105 | pIdToken->n, pIdToken->z); |
| 173994 | 174106 | } |
| 173995 | 174107 | sqlite3ExprListSetName(pParse, p, pIdToken, 1); |
| 173996 | 174108 | return p; |
| 173997 | 174109 | } |
| 174110 | +#line 2048 "parse.y" |
| 173998 | 174111 | |
| 173999 | 174112 | #if TK_SPAN>255 |
| 174000 | 174113 | # error too many tokens in the grammar |
| 174001 | 174114 | #endif |
| 174115 | +#line 267 "parse.sql" |
| 174002 | 174116 | /**************** End of %include directives **********************************/ |
| 174003 | 174117 | /* These constants specify the various numeric values for terminal symbols. |
| 174004 | 174118 | ***************** Begin token definitions *************************************/ |
| 174005 | 174119 | #ifndef TK_SEMI |
| 174006 | 174120 | #define TK_SEMI 1 |
| | @@ -176181,11 +176295,13 @@ |
| 176181 | 176295 | case 240: /* selectnowith */ |
| 176182 | 176296 | case 241: /* oneselect */ |
| 176183 | 176297 | case 253: /* values */ |
| 176184 | 176298 | case 255: /* mvalues */ |
| 176185 | 176299 | { |
| 176300 | +#line 511 "parse.y" |
| 176186 | 176301 | sqlite3SelectDelete(pParse->db, (yypminor->yy555)); |
| 176302 | +#line 2453 "parse.sql" |
| 176187 | 176303 | } |
| 176188 | 176304 | break; |
| 176189 | 176305 | case 217: /* term */ |
| 176190 | 176306 | case 218: /* expr */ |
| 176191 | 176307 | case 247: /* where_opt */ |
| | @@ -176196,11 +176312,13 @@ |
| 176196 | 176312 | case 285: /* vinto */ |
| 176197 | 176313 | case 292: /* when_clause */ |
| 176198 | 176314 | case 297: /* key_opt */ |
| 176199 | 176315 | case 314: /* filter_clause */ |
| 176200 | 176316 | { |
| 176317 | +#line 1083 "parse.y" |
| 176201 | 176318 | sqlite3ExprDelete(pParse->db, (yypminor->yy454)); |
| 176319 | +#line 2470 "parse.sql" |
| 176202 | 176320 | } |
| 176203 | 176321 | break; |
| 176204 | 176322 | case 222: /* eidlist_opt */ |
| 176205 | 176323 | case 232: /* sortlist */ |
| 176206 | 176324 | case 233: /* eidlist */ |
| | @@ -176213,64 +176331,82 @@ |
| 176213 | 176331 | case 270: /* setlist */ |
| 176214 | 176332 | case 279: /* paren_exprlist */ |
| 176215 | 176333 | case 281: /* case_exprlist */ |
| 176216 | 176334 | case 313: /* part_opt */ |
| 176217 | 176335 | { |
| 176336 | +#line 1562 "parse.y" |
| 176218 | 176337 | sqlite3ExprListDelete(pParse->db, (yypminor->yy14)); |
| 176338 | +#line 2489 "parse.sql" |
| 176219 | 176339 | } |
| 176220 | 176340 | break; |
| 176221 | 176341 | case 239: /* fullname */ |
| 176222 | 176342 | case 246: /* from */ |
| 176223 | 176343 | case 258: /* seltablist */ |
| 176224 | 176344 | case 259: /* stl_prefix */ |
| 176225 | 176345 | case 264: /* xfullname */ |
| 176226 | 176346 | { |
| 176347 | +#line 789 "parse.y" |
| 176227 | 176348 | sqlite3SrcListDelete(pParse->db, (yypminor->yy203)); |
| 176349 | +#line 2500 "parse.sql" |
| 176228 | 176350 | } |
| 176229 | 176351 | break; |
| 176230 | 176352 | case 242: /* wqlist */ |
| 176231 | 176353 | { |
| 176354 | +#line 1849 "parse.y" |
| 176232 | 176355 | sqlite3WithDelete(pParse->db, (yypminor->yy59)); |
| 176356 | +#line 2507 "parse.sql" |
| 176233 | 176357 | } |
| 176234 | 176358 | break; |
| 176235 | 176359 | case 252: /* window_clause */ |
| 176236 | 176360 | case 309: /* windowdefn_list */ |
| 176237 | 176361 | { |
| 176362 | +#line 1977 "parse.y" |
| 176238 | 176363 | sqlite3WindowListDelete(pParse->db, (yypminor->yy211)); |
| 176364 | +#line 2515 "parse.sql" |
| 176239 | 176365 | } |
| 176240 | 176366 | break; |
| 176241 | 176367 | case 265: /* idlist */ |
| 176242 | 176368 | case 272: /* idlist_opt */ |
| 176243 | 176369 | { |
| 176370 | +#line 1068 "parse.y" |
| 176244 | 176371 | sqlite3IdListDelete(pParse->db, (yypminor->yy132)); |
| 176372 | +#line 2523 "parse.sql" |
| 176245 | 176373 | } |
| 176246 | 176374 | break; |
| 176247 | 176375 | case 275: /* filter_over */ |
| 176248 | 176376 | case 310: /* windowdefn */ |
| 176249 | 176377 | case 311: /* window */ |
| 176250 | 176378 | case 312: /* frame_opt */ |
| 176251 | 176379 | case 315: /* over_clause */ |
| 176252 | 176380 | { |
| 176381 | +#line 1916 "parse.y" |
| 176253 | 176382 | sqlite3WindowDelete(pParse->db, (yypminor->yy211)); |
| 176383 | +#line 2534 "parse.sql" |
| 176254 | 176384 | } |
| 176255 | 176385 | break; |
| 176256 | 176386 | case 288: /* trigger_cmd_list */ |
| 176257 | 176387 | case 293: /* trigger_cmd */ |
| 176258 | 176388 | { |
| 176389 | +#line 1677 "parse.y" |
| 176259 | 176390 | sqlite3DeleteTriggerStep(pParse->db, (yypminor->yy427)); |
| 176391 | +#line 2542 "parse.sql" |
| 176260 | 176392 | } |
| 176261 | 176393 | break; |
| 176262 | 176394 | case 290: /* trigger_event */ |
| 176263 | 176395 | { |
| 176396 | +#line 1663 "parse.y" |
| 176264 | 176397 | sqlite3IdListDelete(pParse->db, (yypminor->yy286).b); |
| 176398 | +#line 2549 "parse.sql" |
| 176265 | 176399 | } |
| 176266 | 176400 | break; |
| 176267 | 176401 | case 317: /* frame_bound */ |
| 176268 | 176402 | case 318: /* frame_bound_s */ |
| 176269 | 176403 | case 319: /* frame_bound_e */ |
| 176270 | 176404 | { |
| 176405 | +#line 1921 "parse.y" |
| 176271 | 176406 | sqlite3ExprDelete(pParse->db, (yypminor->yy509).pExpr); |
| 176407 | +#line 2558 "parse.sql" |
| 176272 | 176408 | } |
| 176273 | 176409 | break; |
| 176274 | 176410 | /********* End destructor definitions *****************************************/ |
| 176275 | 176411 | default: break; /* If no destructor action specified: do nothing */ |
| 176276 | 176412 | } |
| | @@ -176501,12 +176637,14 @@ |
| 176501 | 176637 | #endif |
| 176502 | 176638 | while( yypParser->yytos>yypParser->yystack ) yy_pop_parser_stack(yypParser); |
| 176503 | 176639 | /* Here code is inserted which will execute if the parser |
| 176504 | 176640 | ** stack every overflows */ |
| 176505 | 176641 | /******** Begin %stack_overflow code ******************************************/ |
| 176642 | +#line 51 "parse.y" |
| 176506 | 176643 | |
| 176507 | 176644 | sqlite3OomFault(pParse->db); |
| 176645 | +#line 2796 "parse.sql" |
| 176508 | 176646 | /******** End %stack_overflow code ********************************************/ |
| 176509 | 176647 | sqlite3ParserARG_STORE /* Suppress warning about unused %extra_argument var */ |
| 176510 | 176648 | sqlite3ParserCTX_STORE |
| 176511 | 176649 | } |
| 176512 | 176650 | |
| | @@ -177433,326 +177571,481 @@ |
| 177433 | 177571 | ** break; |
| 177434 | 177572 | */ |
| 177435 | 177573 | /********** Begin reduce actions **********************************************/ |
| 177436 | 177574 | YYMINORTYPE yylhsminor; |
| 177437 | 177575 | case 0: /* explain ::= EXPLAIN */ |
| 177576 | +#line 155 "parse.y" |
| 177438 | 177577 | { if( pParse->pReprepare==0 ) pParse->explain = 1; } |
| 177578 | +#line 3729 "parse.sql" |
| 177439 | 177579 | break; |
| 177440 | 177580 | case 1: /* explain ::= EXPLAIN QUERY PLAN */ |
| 177581 | +#line 156 "parse.y" |
| 177441 | 177582 | { if( pParse->pReprepare==0 ) pParse->explain = 2; } |
| 177583 | +#line 3734 "parse.sql" |
| 177442 | 177584 | break; |
| 177443 | 177585 | case 2: /* cmdx ::= cmd */ |
| 177586 | +#line 158 "parse.y" |
| 177444 | 177587 | { sqlite3FinishCoding(pParse); } |
| 177588 | +#line 3739 "parse.sql" |
| 177445 | 177589 | break; |
| 177446 | 177590 | case 3: /* cmd ::= BEGIN transtype trans_opt */ |
| 177591 | +#line 163 "parse.y" |
| 177447 | 177592 | {sqlite3BeginTransaction(pParse, yymsp[-1].minor.yy144);} |
| 177593 | +#line 3744 "parse.sql" |
| 177448 | 177594 | break; |
| 177449 | 177595 | case 4: /* transtype ::= */ |
| 177596 | +#line 168 "parse.y" |
| 177450 | 177597 | {yymsp[1].minor.yy144 = TK_DEFERRED;} |
| 177598 | +#line 3749 "parse.sql" |
| 177451 | 177599 | break; |
| 177452 | 177600 | case 5: /* transtype ::= DEFERRED */ |
| 177453 | 177601 | case 6: /* transtype ::= IMMEDIATE */ yytestcase(yyruleno==6); |
| 177454 | 177602 | case 7: /* transtype ::= EXCLUSIVE */ yytestcase(yyruleno==7); |
| 177455 | 177603 | case 324: /* range_or_rows ::= RANGE|ROWS|GROUPS */ yytestcase(yyruleno==324); |
| 177604 | +#line 169 "parse.y" |
| 177456 | 177605 | {yymsp[0].minor.yy144 = yymsp[0].major; /*A-overwrites-X*/} |
| 177606 | +#line 3757 "parse.sql" |
| 177457 | 177607 | break; |
| 177458 | 177608 | case 8: /* cmd ::= COMMIT|END trans_opt */ |
| 177459 | 177609 | case 9: /* cmd ::= ROLLBACK trans_opt */ yytestcase(yyruleno==9); |
| 177610 | +#line 172 "parse.y" |
| 177460 | 177611 | {sqlite3EndTransaction(pParse,yymsp[-1].major);} |
| 177612 | +#line 3763 "parse.sql" |
| 177461 | 177613 | break; |
| 177462 | 177614 | case 10: /* cmd ::= SAVEPOINT nm */ |
| 177615 | +#line 177 "parse.y" |
| 177463 | 177616 | { |
| 177464 | 177617 | sqlite3Savepoint(pParse, SAVEPOINT_BEGIN, &yymsp[0].minor.yy0); |
| 177465 | 177618 | } |
| 177619 | +#line 3770 "parse.sql" |
| 177466 | 177620 | break; |
| 177467 | 177621 | case 11: /* cmd ::= RELEASE savepoint_opt nm */ |
| 177622 | +#line 180 "parse.y" |
| 177468 | 177623 | { |
| 177469 | 177624 | sqlite3Savepoint(pParse, SAVEPOINT_RELEASE, &yymsp[0].minor.yy0); |
| 177470 | 177625 | } |
| 177626 | +#line 3777 "parse.sql" |
| 177471 | 177627 | break; |
| 177472 | 177628 | case 12: /* cmd ::= ROLLBACK trans_opt TO savepoint_opt nm */ |
| 177629 | +#line 183 "parse.y" |
| 177473 | 177630 | { |
| 177474 | 177631 | sqlite3Savepoint(pParse, SAVEPOINT_ROLLBACK, &yymsp[0].minor.yy0); |
| 177475 | 177632 | } |
| 177633 | +#line 3784 "parse.sql" |
| 177476 | 177634 | break; |
| 177477 | 177635 | case 13: /* create_table ::= createkw temp TABLE ifnotexists nm dbnm */ |
| 177636 | +#line 190 "parse.y" |
| 177478 | 177637 | { |
| 177479 | 177638 | sqlite3StartTable(pParse,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy0,yymsp[-4].minor.yy144,0,0,yymsp[-2].minor.yy144); |
| 177480 | 177639 | } |
| 177640 | +#line 3791 "parse.sql" |
| 177481 | 177641 | break; |
| 177482 | 177642 | case 14: /* createkw ::= CREATE */ |
| 177643 | +#line 193 "parse.y" |
| 177483 | 177644 | {disableLookaside(pParse);} |
| 177645 | +#line 3796 "parse.sql" |
| 177484 | 177646 | break; |
| 177485 | 177647 | case 15: /* ifnotexists ::= */ |
| 177486 | 177648 | case 18: /* temp ::= */ yytestcase(yyruleno==18); |
| 177487 | 177649 | case 47: /* autoinc ::= */ yytestcase(yyruleno==47); |
| 177488 | 177650 | case 62: /* init_deferred_pred_opt ::= */ yytestcase(yyruleno==62); |
| 177489 | 177651 | case 72: /* defer_subclause_opt ::= */ yytestcase(yyruleno==72); |
| 177490 | 177652 | case 81: /* ifexists ::= */ yytestcase(yyruleno==81); |
| 177491 | 177653 | case 100: /* distinct ::= */ yytestcase(yyruleno==100); |
| 177492 | 177654 | case 246: /* collate ::= */ yytestcase(yyruleno==246); |
| 177655 | +#line 196 "parse.y" |
| 177493 | 177656 | {yymsp[1].minor.yy144 = 0;} |
| 177657 | +#line 3808 "parse.sql" |
| 177494 | 177658 | break; |
| 177495 | 177659 | case 16: /* ifnotexists ::= IF NOT EXISTS */ |
| 177660 | +#line 197 "parse.y" |
| 177496 | 177661 | {yymsp[-2].minor.yy144 = 1;} |
| 177662 | +#line 3813 "parse.sql" |
| 177497 | 177663 | break; |
| 177498 | 177664 | case 17: /* temp ::= TEMP */ |
| 177665 | +#line 200 "parse.y" |
| 177499 | 177666 | {yymsp[0].minor.yy144 = pParse->db->init.busy==0;} |
| 177667 | +#line 3818 "parse.sql" |
| 177500 | 177668 | break; |
| 177501 | 177669 | case 19: /* create_table_args ::= LP columnlist conslist_opt RP table_option_set */ |
| 177670 | +#line 203 "parse.y" |
| 177502 | 177671 | { |
| 177503 | 177672 | sqlite3EndTable(pParse,&yymsp[-2].minor.yy0,&yymsp[-1].minor.yy0,yymsp[0].minor.yy391,0); |
| 177504 | 177673 | } |
| 177674 | +#line 3825 "parse.sql" |
| 177505 | 177675 | break; |
| 177506 | 177676 | case 20: /* create_table_args ::= AS select */ |
| 177677 | +#line 206 "parse.y" |
| 177507 | 177678 | { |
| 177508 | 177679 | sqlite3EndTable(pParse,0,0,0,yymsp[0].minor.yy555); |
| 177509 | 177680 | sqlite3SelectDelete(pParse->db, yymsp[0].minor.yy555); |
| 177510 | 177681 | } |
| 177682 | +#line 3833 "parse.sql" |
| 177511 | 177683 | break; |
| 177512 | 177684 | case 21: /* table_option_set ::= */ |
| 177685 | +#line 212 "parse.y" |
| 177513 | 177686 | {yymsp[1].minor.yy391 = 0;} |
| 177687 | +#line 3838 "parse.sql" |
| 177514 | 177688 | break; |
| 177515 | 177689 | case 22: /* table_option_set ::= table_option_set COMMA table_option */ |
| 177690 | +#line 214 "parse.y" |
| 177516 | 177691 | {yylhsminor.yy391 = yymsp[-2].minor.yy391|yymsp[0].minor.yy391;} |
| 177692 | +#line 3843 "parse.sql" |
| 177517 | 177693 | yymsp[-2].minor.yy391 = yylhsminor.yy391; |
| 177518 | 177694 | break; |
| 177519 | 177695 | case 23: /* table_option ::= WITHOUT nm */ |
| 177696 | +#line 215 "parse.y" |
| 177520 | 177697 | { |
| 177521 | 177698 | if( yymsp[0].minor.yy0.n==5 && sqlite3_strnicmp(yymsp[0].minor.yy0.z,"rowid",5)==0 ){ |
| 177522 | 177699 | yymsp[-1].minor.yy391 = TF_WithoutRowid | TF_NoVisibleRowid; |
| 177523 | 177700 | }else{ |
| 177524 | 177701 | yymsp[-1].minor.yy391 = 0; |
| 177525 | 177702 | sqlite3ErrorMsg(pParse, "unknown table option: %.*s", yymsp[0].minor.yy0.n, yymsp[0].minor.yy0.z); |
| 177526 | 177703 | } |
| 177527 | 177704 | } |
| 177705 | +#line 3856 "parse.sql" |
| 177528 | 177706 | break; |
| 177529 | 177707 | case 24: /* table_option ::= nm */ |
| 177708 | +#line 223 "parse.y" |
| 177530 | 177709 | { |
| 177531 | 177710 | if( yymsp[0].minor.yy0.n==6 && sqlite3_strnicmp(yymsp[0].minor.yy0.z,"strict",6)==0 ){ |
| 177532 | 177711 | yylhsminor.yy391 = TF_Strict; |
| 177533 | 177712 | }else{ |
| 177534 | 177713 | yylhsminor.yy391 = 0; |
| 177535 | 177714 | sqlite3ErrorMsg(pParse, "unknown table option: %.*s", yymsp[0].minor.yy0.n, yymsp[0].minor.yy0.z); |
| 177536 | 177715 | } |
| 177537 | 177716 | } |
| 177717 | +#line 3868 "parse.sql" |
| 177538 | 177718 | yymsp[0].minor.yy391 = yylhsminor.yy391; |
| 177539 | 177719 | break; |
| 177540 | 177720 | case 25: /* columnname ::= nm typetoken */ |
| 177721 | +#line 233 "parse.y" |
| 177541 | 177722 | {sqlite3AddColumn(pParse,yymsp[-1].minor.yy0,yymsp[0].minor.yy0);} |
| 177723 | +#line 3874 "parse.sql" |
| 177542 | 177724 | break; |
| 177543 | 177725 | case 26: /* typetoken ::= */ |
| 177544 | 177726 | case 65: /* conslist_opt ::= */ yytestcase(yyruleno==65); |
| 177545 | 177727 | case 106: /* as ::= */ yytestcase(yyruleno==106); |
| 177728 | +#line 327 "parse.y" |
| 177546 | 177729 | {yymsp[1].minor.yy0.n = 0; yymsp[1].minor.yy0.z = 0;} |
| 177730 | +#line 3881 "parse.sql" |
| 177547 | 177731 | break; |
| 177548 | 177732 | case 27: /* typetoken ::= typename LP signed RP */ |
| 177733 | +#line 329 "parse.y" |
| 177549 | 177734 | { |
| 177550 | 177735 | yymsp[-3].minor.yy0.n = (int)(&yymsp[0].minor.yy0.z[yymsp[0].minor.yy0.n] - yymsp[-3].minor.yy0.z); |
| 177551 | 177736 | } |
| 177737 | +#line 3888 "parse.sql" |
| 177552 | 177738 | break; |
| 177553 | 177739 | case 28: /* typetoken ::= typename LP signed COMMA signed RP */ |
| 177740 | +#line 332 "parse.y" |
| 177554 | 177741 | { |
| 177555 | 177742 | yymsp[-5].minor.yy0.n = (int)(&yymsp[0].minor.yy0.z[yymsp[0].minor.yy0.n] - yymsp[-5].minor.yy0.z); |
| 177556 | 177743 | } |
| 177744 | +#line 3895 "parse.sql" |
| 177557 | 177745 | break; |
| 177558 | 177746 | case 29: /* typename ::= typename ID|STRING */ |
| 177747 | +#line 337 "parse.y" |
| 177559 | 177748 | {yymsp[-1].minor.yy0.n=yymsp[0].minor.yy0.n+(int)(yymsp[0].minor.yy0.z-yymsp[-1].minor.yy0.z);} |
| 177749 | +#line 3900 "parse.sql" |
| 177560 | 177750 | break; |
| 177561 | 177751 | case 30: /* scanpt ::= */ |
| 177752 | +#line 355 "parse.y" |
| 177562 | 177753 | { |
| 177563 | 177754 | assert( yyLookahead!=YYNOCODE ); |
| 177564 | 177755 | yymsp[1].minor.yy168 = yyLookaheadToken.z; |
| 177565 | 177756 | } |
| 177757 | +#line 3908 "parse.sql" |
| 177566 | 177758 | break; |
| 177567 | 177759 | case 31: /* scantok ::= */ |
| 177760 | +#line 359 "parse.y" |
| 177568 | 177761 | { |
| 177569 | 177762 | assert( yyLookahead!=YYNOCODE ); |
| 177570 | 177763 | yymsp[1].minor.yy0 = yyLookaheadToken; |
| 177571 | 177764 | } |
| 177765 | +#line 3916 "parse.sql" |
| 177572 | 177766 | break; |
| 177573 | 177767 | case 32: /* ccons ::= CONSTRAINT nm */ |
| 177574 | 177768 | case 67: /* tcons ::= CONSTRAINT nm */ yytestcase(yyruleno==67); |
| 177769 | +#line 369 "parse.y" |
| 177575 | 177770 | {pParse->constraintName = yymsp[0].minor.yy0;} |
| 177771 | +#line 3922 "parse.sql" |
| 177576 | 177772 | break; |
| 177577 | 177773 | case 33: /* ccons ::= DEFAULT scantok term */ |
| 177774 | +#line 371 "parse.y" |
| 177578 | 177775 | {sqlite3AddDefaultValue(pParse,yymsp[0].minor.yy454,yymsp[-1].minor.yy0.z,&yymsp[-1].minor.yy0.z[yymsp[-1].minor.yy0.n]);} |
| 177776 | +#line 3927 "parse.sql" |
| 177579 | 177777 | break; |
| 177580 | 177778 | case 34: /* ccons ::= DEFAULT LP expr RP */ |
| 177779 | +#line 373 "parse.y" |
| 177581 | 177780 | {sqlite3AddDefaultValue(pParse,yymsp[-1].minor.yy454,yymsp[-2].minor.yy0.z+1,yymsp[0].minor.yy0.z);} |
| 177781 | +#line 3932 "parse.sql" |
| 177582 | 177782 | break; |
| 177583 | 177783 | case 35: /* ccons ::= DEFAULT PLUS scantok term */ |
| 177784 | +#line 375 "parse.y" |
| 177584 | 177785 | {sqlite3AddDefaultValue(pParse,yymsp[0].minor.yy454,yymsp[-2].minor.yy0.z,&yymsp[-1].minor.yy0.z[yymsp[-1].minor.yy0.n]);} |
| 177786 | +#line 3937 "parse.sql" |
| 177585 | 177787 | break; |
| 177586 | 177788 | case 36: /* ccons ::= DEFAULT MINUS scantok term */ |
| 177789 | +#line 376 "parse.y" |
| 177587 | 177790 | { |
| 177588 | 177791 | Expr *p = sqlite3PExpr(pParse, TK_UMINUS, yymsp[0].minor.yy454, 0); |
| 177589 | 177792 | sqlite3AddDefaultValue(pParse,p,yymsp[-2].minor.yy0.z,&yymsp[-1].minor.yy0.z[yymsp[-1].minor.yy0.n]); |
| 177590 | 177793 | } |
| 177794 | +#line 3945 "parse.sql" |
| 177591 | 177795 | break; |
| 177592 | 177796 | case 37: /* ccons ::= DEFAULT scantok ID|INDEXED */ |
| 177797 | +#line 380 "parse.y" |
| 177593 | 177798 | { |
| 177594 | 177799 | Expr *p = tokenExpr(pParse, TK_STRING, yymsp[0].minor.yy0); |
| 177595 | 177800 | if( p ){ |
| 177596 | 177801 | sqlite3ExprIdToTrueFalse(p); |
| 177597 | 177802 | testcase( p->op==TK_TRUEFALSE && sqlite3ExprTruthValue(p) ); |
| 177598 | 177803 | } |
| 177599 | 177804 | sqlite3AddDefaultValue(pParse,p,yymsp[0].minor.yy0.z,yymsp[0].minor.yy0.z+yymsp[0].minor.yy0.n); |
| 177600 | 177805 | } |
| 177806 | +#line 3957 "parse.sql" |
| 177601 | 177807 | break; |
| 177602 | 177808 | case 38: /* ccons ::= NOT NULL onconf */ |
| 177809 | +#line 393 "parse.y" |
| 177603 | 177810 | {sqlite3AddNotNull(pParse, yymsp[0].minor.yy144);} |
| 177811 | +#line 3962 "parse.sql" |
| 177604 | 177812 | break; |
| 177605 | 177813 | case 39: /* ccons ::= PRIMARY KEY sortorder onconf autoinc */ |
| 177814 | +#line 395 "parse.y" |
| 177606 | 177815 | {sqlite3AddPrimaryKey(pParse,0,yymsp[-1].minor.yy144,yymsp[0].minor.yy144,yymsp[-2].minor.yy144);} |
| 177816 | +#line 3967 "parse.sql" |
| 177607 | 177817 | break; |
| 177608 | 177818 | case 40: /* ccons ::= UNIQUE onconf */ |
| 177819 | +#line 396 "parse.y" |
| 177609 | 177820 | {sqlite3CreateIndex(pParse,0,0,0,0,yymsp[0].minor.yy144,0,0,0,0, |
| 177610 | 177821 | SQLITE_IDXTYPE_UNIQUE);} |
| 177822 | +#line 3973 "parse.sql" |
| 177611 | 177823 | break; |
| 177612 | 177824 | case 41: /* ccons ::= CHECK LP expr RP */ |
| 177825 | +#line 398 "parse.y" |
| 177613 | 177826 | {sqlite3AddCheckConstraint(pParse,yymsp[-1].minor.yy454,yymsp[-2].minor.yy0.z,yymsp[0].minor.yy0.z);} |
| 177827 | +#line 3978 "parse.sql" |
| 177614 | 177828 | break; |
| 177615 | 177829 | case 42: /* ccons ::= REFERENCES nm eidlist_opt refargs */ |
| 177830 | +#line 400 "parse.y" |
| 177616 | 177831 | {sqlite3CreateForeignKey(pParse,0,&yymsp[-2].minor.yy0,yymsp[-1].minor.yy14,yymsp[0].minor.yy144);} |
| 177832 | +#line 3983 "parse.sql" |
| 177617 | 177833 | break; |
| 177618 | 177834 | case 43: /* ccons ::= defer_subclause */ |
| 177835 | +#line 401 "parse.y" |
| 177619 | 177836 | {sqlite3DeferForeignKey(pParse,yymsp[0].minor.yy144);} |
| 177837 | +#line 3988 "parse.sql" |
| 177620 | 177838 | break; |
| 177621 | 177839 | case 44: /* ccons ::= COLLATE ID|STRING */ |
| 177840 | +#line 402 "parse.y" |
| 177622 | 177841 | {sqlite3AddCollateType(pParse, &yymsp[0].minor.yy0);} |
| 177842 | +#line 3993 "parse.sql" |
| 177623 | 177843 | break; |
| 177624 | 177844 | case 45: /* generated ::= LP expr RP */ |
| 177845 | +#line 405 "parse.y" |
| 177625 | 177846 | {sqlite3AddGenerated(pParse,yymsp[-1].minor.yy454,0);} |
| 177847 | +#line 3998 "parse.sql" |
| 177626 | 177848 | break; |
| 177627 | 177849 | case 46: /* generated ::= LP expr RP ID */ |
| 177850 | +#line 406 "parse.y" |
| 177628 | 177851 | {sqlite3AddGenerated(pParse,yymsp[-2].minor.yy454,&yymsp[0].minor.yy0);} |
| 177852 | +#line 4003 "parse.sql" |
| 177629 | 177853 | break; |
| 177630 | 177854 | case 48: /* autoinc ::= AUTOINCR */ |
| 177855 | +#line 411 "parse.y" |
| 177631 | 177856 | {yymsp[0].minor.yy144 = 1;} |
| 177857 | +#line 4008 "parse.sql" |
| 177632 | 177858 | break; |
| 177633 | 177859 | case 49: /* refargs ::= */ |
| 177860 | +#line 419 "parse.y" |
| 177634 | 177861 | { yymsp[1].minor.yy144 = OE_None*0x0101; /* EV: R-19803-45884 */} |
| 177862 | +#line 4013 "parse.sql" |
| 177635 | 177863 | break; |
| 177636 | 177864 | case 50: /* refargs ::= refargs refarg */ |
| 177865 | +#line 420 "parse.y" |
| 177637 | 177866 | { yymsp[-1].minor.yy144 = (yymsp[-1].minor.yy144 & ~yymsp[0].minor.yy383.mask) | yymsp[0].minor.yy383.value; } |
| 177867 | +#line 4018 "parse.sql" |
| 177638 | 177868 | break; |
| 177639 | 177869 | case 51: /* refarg ::= MATCH nm */ |
| 177870 | +#line 422 "parse.y" |
| 177640 | 177871 | { yymsp[-1].minor.yy383.value = 0; yymsp[-1].minor.yy383.mask = 0x000000; } |
| 177872 | +#line 4023 "parse.sql" |
| 177641 | 177873 | break; |
| 177642 | 177874 | case 52: /* refarg ::= ON INSERT refact */ |
| 177875 | +#line 423 "parse.y" |
| 177643 | 177876 | { yymsp[-2].minor.yy383.value = 0; yymsp[-2].minor.yy383.mask = 0x000000; } |
| 177877 | +#line 4028 "parse.sql" |
| 177644 | 177878 | break; |
| 177645 | 177879 | case 53: /* refarg ::= ON DELETE refact */ |
| 177880 | +#line 424 "parse.y" |
| 177646 | 177881 | { yymsp[-2].minor.yy383.value = yymsp[0].minor.yy144; yymsp[-2].minor.yy383.mask = 0x0000ff; } |
| 177882 | +#line 4033 "parse.sql" |
| 177647 | 177883 | break; |
| 177648 | 177884 | case 54: /* refarg ::= ON UPDATE refact */ |
| 177885 | +#line 425 "parse.y" |
| 177649 | 177886 | { yymsp[-2].minor.yy383.value = yymsp[0].minor.yy144<<8; yymsp[-2].minor.yy383.mask = 0x00ff00; } |
| 177887 | +#line 4038 "parse.sql" |
| 177650 | 177888 | break; |
| 177651 | 177889 | case 55: /* refact ::= SET NULL */ |
| 177890 | +#line 427 "parse.y" |
| 177652 | 177891 | { yymsp[-1].minor.yy144 = OE_SetNull; /* EV: R-33326-45252 */} |
| 177892 | +#line 4043 "parse.sql" |
| 177653 | 177893 | break; |
| 177654 | 177894 | case 56: /* refact ::= SET DEFAULT */ |
| 177895 | +#line 428 "parse.y" |
| 177655 | 177896 | { yymsp[-1].minor.yy144 = OE_SetDflt; /* EV: R-33326-45252 */} |
| 177897 | +#line 4048 "parse.sql" |
| 177656 | 177898 | break; |
| 177657 | 177899 | case 57: /* refact ::= CASCADE */ |
| 177900 | +#line 429 "parse.y" |
| 177658 | 177901 | { yymsp[0].minor.yy144 = OE_Cascade; /* EV: R-33326-45252 */} |
| 177902 | +#line 4053 "parse.sql" |
| 177659 | 177903 | break; |
| 177660 | 177904 | case 58: /* refact ::= RESTRICT */ |
| 177905 | +#line 430 "parse.y" |
| 177661 | 177906 | { yymsp[0].minor.yy144 = OE_Restrict; /* EV: R-33326-45252 */} |
| 177907 | +#line 4058 "parse.sql" |
| 177662 | 177908 | break; |
| 177663 | 177909 | case 59: /* refact ::= NO ACTION */ |
| 177910 | +#line 431 "parse.y" |
| 177664 | 177911 | { yymsp[-1].minor.yy144 = OE_None; /* EV: R-33326-45252 */} |
| 177912 | +#line 4063 "parse.sql" |
| 177665 | 177913 | break; |
| 177666 | 177914 | case 60: /* defer_subclause ::= NOT DEFERRABLE init_deferred_pred_opt */ |
| 177915 | +#line 433 "parse.y" |
| 177667 | 177916 | {yymsp[-2].minor.yy144 = 0;} |
| 177917 | +#line 4068 "parse.sql" |
| 177668 | 177918 | break; |
| 177669 | 177919 | case 61: /* defer_subclause ::= DEFERRABLE init_deferred_pred_opt */ |
| 177670 | 177920 | case 76: /* orconf ::= OR resolvetype */ yytestcase(yyruleno==76); |
| 177671 | 177921 | case 173: /* insert_cmd ::= INSERT orconf */ yytestcase(yyruleno==173); |
| 177922 | +#line 434 "parse.y" |
| 177672 | 177923 | {yymsp[-1].minor.yy144 = yymsp[0].minor.yy144;} |
| 177924 | +#line 4075 "parse.sql" |
| 177673 | 177925 | break; |
| 177674 | 177926 | case 63: /* init_deferred_pred_opt ::= INITIALLY DEFERRED */ |
| 177675 | 177927 | case 80: /* ifexists ::= IF EXISTS */ yytestcase(yyruleno==80); |
| 177676 | 177928 | case 219: /* between_op ::= NOT BETWEEN */ yytestcase(yyruleno==219); |
| 177677 | 177929 | case 222: /* in_op ::= NOT IN */ yytestcase(yyruleno==222); |
| 177678 | 177930 | case 247: /* collate ::= COLLATE ID|STRING */ yytestcase(yyruleno==247); |
| 177931 | +#line 437 "parse.y" |
| 177679 | 177932 | {yymsp[-1].minor.yy144 = 1;} |
| 177933 | +#line 4084 "parse.sql" |
| 177680 | 177934 | break; |
| 177681 | 177935 | case 64: /* init_deferred_pred_opt ::= INITIALLY IMMEDIATE */ |
| 177936 | +#line 438 "parse.y" |
| 177682 | 177937 | {yymsp[-1].minor.yy144 = 0;} |
| 177938 | +#line 4089 "parse.sql" |
| 177683 | 177939 | break; |
| 177684 | 177940 | case 66: /* tconscomma ::= COMMA */ |
| 177941 | +#line 444 "parse.y" |
| 177685 | 177942 | {pParse->constraintName.n = 0;} |
| 177943 | +#line 4094 "parse.sql" |
| 177686 | 177944 | break; |
| 177687 | 177945 | case 68: /* tcons ::= PRIMARY KEY LP sortlist autoinc RP onconf */ |
| 177946 | +#line 448 "parse.y" |
| 177688 | 177947 | {sqlite3AddPrimaryKey(pParse,yymsp[-3].minor.yy14,yymsp[0].minor.yy144,yymsp[-2].minor.yy144,0);} |
| 177948 | +#line 4099 "parse.sql" |
| 177689 | 177949 | break; |
| 177690 | 177950 | case 69: /* tcons ::= UNIQUE LP sortlist RP onconf */ |
| 177951 | +#line 450 "parse.y" |
| 177691 | 177952 | {sqlite3CreateIndex(pParse,0,0,0,yymsp[-2].minor.yy14,yymsp[0].minor.yy144,0,0,0,0, |
| 177692 | 177953 | SQLITE_IDXTYPE_UNIQUE);} |
| 177954 | +#line 4105 "parse.sql" |
| 177693 | 177955 | break; |
| 177694 | 177956 | case 70: /* tcons ::= CHECK LP expr RP onconf */ |
| 177957 | +#line 453 "parse.y" |
| 177695 | 177958 | {sqlite3AddCheckConstraint(pParse,yymsp[-2].minor.yy454,yymsp[-3].minor.yy0.z,yymsp[-1].minor.yy0.z);} |
| 177959 | +#line 4110 "parse.sql" |
| 177696 | 177960 | break; |
| 177697 | 177961 | case 71: /* tcons ::= FOREIGN KEY LP eidlist RP REFERENCES nm eidlist_opt refargs defer_subclause_opt */ |
| 177962 | +#line 455 "parse.y" |
| 177698 | 177963 | { |
| 177699 | 177964 | sqlite3CreateForeignKey(pParse, yymsp[-6].minor.yy14, &yymsp[-3].minor.yy0, yymsp[-2].minor.yy14, yymsp[-1].minor.yy144); |
| 177700 | 177965 | sqlite3DeferForeignKey(pParse, yymsp[0].minor.yy144); |
| 177701 | 177966 | } |
| 177967 | +#line 4118 "parse.sql" |
| 177702 | 177968 | break; |
| 177703 | 177969 | case 73: /* onconf ::= */ |
| 177704 | 177970 | case 75: /* orconf ::= */ yytestcase(yyruleno==75); |
| 177971 | +#line 469 "parse.y" |
| 177705 | 177972 | {yymsp[1].minor.yy144 = OE_Default;} |
| 177973 | +#line 4124 "parse.sql" |
| 177706 | 177974 | break; |
| 177707 | 177975 | case 74: /* onconf ::= ON CONFLICT resolvetype */ |
| 177976 | +#line 470 "parse.y" |
| 177708 | 177977 | {yymsp[-2].minor.yy144 = yymsp[0].minor.yy144;} |
| 177978 | +#line 4129 "parse.sql" |
| 177709 | 177979 | break; |
| 177710 | 177980 | case 77: /* resolvetype ::= IGNORE */ |
| 177981 | +#line 474 "parse.y" |
| 177711 | 177982 | {yymsp[0].minor.yy144 = OE_Ignore;} |
| 177983 | +#line 4134 "parse.sql" |
| 177712 | 177984 | break; |
| 177713 | 177985 | case 78: /* resolvetype ::= REPLACE */ |
| 177714 | 177986 | case 174: /* insert_cmd ::= REPLACE */ yytestcase(yyruleno==174); |
| 177987 | +#line 475 "parse.y" |
| 177715 | 177988 | {yymsp[0].minor.yy144 = OE_Replace;} |
| 177989 | +#line 4140 "parse.sql" |
| 177716 | 177990 | break; |
| 177717 | 177991 | case 79: /* cmd ::= DROP TABLE ifexists fullname */ |
| 177992 | +#line 479 "parse.y" |
| 177718 | 177993 | { |
| 177719 | 177994 | sqlite3DropTable(pParse, yymsp[0].minor.yy203, 0, yymsp[-1].minor.yy144); |
| 177720 | 177995 | } |
| 177996 | +#line 4147 "parse.sql" |
| 177721 | 177997 | break; |
| 177722 | 177998 | case 82: /* cmd ::= createkw temp VIEW ifnotexists nm dbnm eidlist_opt AS select */ |
| 177999 | +#line 490 "parse.y" |
| 177723 | 178000 | { |
| 177724 | 178001 | sqlite3CreateView(pParse, &yymsp[-8].minor.yy0, &yymsp[-4].minor.yy0, &yymsp[-3].minor.yy0, yymsp[-2].minor.yy14, yymsp[0].minor.yy555, yymsp[-7].minor.yy144, yymsp[-5].minor.yy144); |
| 177725 | 178002 | } |
| 178003 | +#line 4154 "parse.sql" |
| 177726 | 178004 | break; |
| 177727 | 178005 | case 83: /* cmd ::= DROP VIEW ifexists fullname */ |
| 178006 | +#line 493 "parse.y" |
| 177728 | 178007 | { |
| 177729 | 178008 | sqlite3DropTable(pParse, yymsp[0].minor.yy203, 1, yymsp[-1].minor.yy144); |
| 177730 | 178009 | } |
| 178010 | +#line 4161 "parse.sql" |
| 177731 | 178011 | break; |
| 177732 | 178012 | case 84: /* cmd ::= select */ |
| 178013 | +#line 500 "parse.y" |
| 177733 | 178014 | { |
| 177734 | 178015 | SelectDest dest = {SRT_Output, 0, 0, 0, 0, 0, 0}; |
| 177735 | | - sqlite3Select(pParse, yymsp[0].minor.yy555, &dest); |
| 178016 | + if( (pParse->db->mDbFlags & DBFLAG_EncodingFixed)!=0 |
| 178017 | + || sqlite3ReadSchema(pParse)==SQLITE_OK |
| 178018 | + ){ |
| 178019 | + sqlite3Select(pParse, yymsp[0].minor.yy555, &dest); |
| 178020 | + } |
| 177736 | 178021 | sqlite3SelectDelete(pParse->db, yymsp[0].minor.yy555); |
| 177737 | 178022 | } |
| 178023 | +#line 4174 "parse.sql" |
| 177738 | 178024 | break; |
| 177739 | 178025 | case 85: /* select ::= WITH wqlist selectnowith */ |
| 178026 | +#line 574 "parse.y" |
| 177740 | 178027 | {yymsp[-2].minor.yy555 = attachWithToSelect(pParse,yymsp[0].minor.yy555,yymsp[-1].minor.yy59);} |
| 178028 | +#line 4179 "parse.sql" |
| 177741 | 178029 | break; |
| 177742 | 178030 | case 86: /* select ::= WITH RECURSIVE wqlist selectnowith */ |
| 178031 | +#line 576 "parse.y" |
| 177743 | 178032 | {yymsp[-3].minor.yy555 = attachWithToSelect(pParse,yymsp[0].minor.yy555,yymsp[-1].minor.yy59);} |
| 178033 | +#line 4184 "parse.sql" |
| 177744 | 178034 | break; |
| 177745 | 178035 | case 87: /* select ::= selectnowith */ |
| 178036 | +#line 579 "parse.y" |
| 177746 | 178037 | { |
| 177747 | 178038 | Select *p = yymsp[0].minor.yy555; |
| 177748 | 178039 | if( p ){ |
| 177749 | 178040 | parserDoubleLinkSelect(pParse, p); |
| 177750 | 178041 | } |
| 177751 | 178042 | } |
| 178043 | +#line 4194 "parse.sql" |
| 177752 | 178044 | break; |
| 177753 | 178045 | case 88: /* selectnowith ::= selectnowith multiselect_op oneselect */ |
| 178046 | +#line 588 "parse.y" |
| 177754 | 178047 | { |
| 177755 | 178048 | Select *pRhs = yymsp[0].minor.yy555; |
| 177756 | 178049 | Select *pLhs = yymsp[-2].minor.yy555; |
| 177757 | 178050 | if( pRhs && pRhs->pPrior ){ |
| 177758 | 178051 | SrcList *pFrom; |
| | @@ -177771,131 +178064,175 @@ |
| 177771 | 178064 | }else{ |
| 177772 | 178065 | sqlite3SelectDelete(pParse->db, pLhs); |
| 177773 | 178066 | } |
| 177774 | 178067 | yymsp[-2].minor.yy555 = pRhs; |
| 177775 | 178068 | } |
| 178069 | +#line 4220 "parse.sql" |
| 177776 | 178070 | break; |
| 177777 | 178071 | case 89: /* multiselect_op ::= UNION */ |
| 177778 | 178072 | case 91: /* multiselect_op ::= EXCEPT|INTERSECT */ yytestcase(yyruleno==91); |
| 178073 | +#line 611 "parse.y" |
| 177779 | 178074 | {yymsp[0].minor.yy144 = yymsp[0].major; /*A-overwrites-OP*/} |
| 178075 | +#line 4226 "parse.sql" |
| 177780 | 178076 | break; |
| 177781 | 178077 | case 90: /* multiselect_op ::= UNION ALL */ |
| 178078 | +#line 612 "parse.y" |
| 177782 | 178079 | {yymsp[-1].minor.yy144 = TK_ALL;} |
| 178080 | +#line 4231 "parse.sql" |
| 177783 | 178081 | break; |
| 177784 | 178082 | case 92: /* oneselect ::= SELECT distinct selcollist from where_opt groupby_opt having_opt orderby_opt limit_opt */ |
| 178083 | +#line 618 "parse.y" |
| 177785 | 178084 | { |
| 177786 | 178085 | yymsp[-8].minor.yy555 = sqlite3SelectNew(pParse,yymsp[-6].minor.yy14,yymsp[-5].minor.yy203,yymsp[-4].minor.yy454,yymsp[-3].minor.yy14,yymsp[-2].minor.yy454,yymsp[-1].minor.yy14,yymsp[-7].minor.yy144,yymsp[0].minor.yy454); |
| 177787 | 178086 | } |
| 178087 | +#line 4238 "parse.sql" |
| 177788 | 178088 | break; |
| 177789 | 178089 | case 93: /* oneselect ::= SELECT distinct selcollist from where_opt groupby_opt having_opt window_clause orderby_opt limit_opt */ |
| 178090 | +#line 624 "parse.y" |
| 177790 | 178091 | { |
| 177791 | 178092 | yymsp[-9].minor.yy555 = sqlite3SelectNew(pParse,yymsp[-7].minor.yy14,yymsp[-6].minor.yy203,yymsp[-5].minor.yy454,yymsp[-4].minor.yy14,yymsp[-3].minor.yy454,yymsp[-1].minor.yy14,yymsp[-8].minor.yy144,yymsp[0].minor.yy454); |
| 177792 | 178093 | if( yymsp[-9].minor.yy555 ){ |
| 177793 | 178094 | yymsp[-9].minor.yy555->pWinDefn = yymsp[-2].minor.yy211; |
| 177794 | 178095 | }else{ |
| 177795 | 178096 | sqlite3WindowListDelete(pParse->db, yymsp[-2].minor.yy211); |
| 177796 | 178097 | } |
| 177797 | 178098 | } |
| 178099 | +#line 4250 "parse.sql" |
| 177798 | 178100 | break; |
| 177799 | 178101 | case 94: /* values ::= VALUES LP nexprlist RP */ |
| 178102 | +#line 640 "parse.y" |
| 177800 | 178103 | { |
| 177801 | 178104 | yymsp[-3].minor.yy555 = sqlite3SelectNew(pParse,yymsp[-1].minor.yy14,0,0,0,0,0,SF_Values,0); |
| 177802 | 178105 | } |
| 178106 | +#line 4257 "parse.sql" |
| 177803 | 178107 | break; |
| 177804 | 178108 | case 95: /* oneselect ::= mvalues */ |
| 178109 | +#line 647 "parse.y" |
| 177805 | 178110 | { |
| 177806 | 178111 | sqlite3MultiValuesEnd(pParse, yymsp[0].minor.yy555); |
| 177807 | 178112 | } |
| 178113 | +#line 4264 "parse.sql" |
| 177808 | 178114 | break; |
| 177809 | 178115 | case 96: /* mvalues ::= values COMMA LP nexprlist RP */ |
| 177810 | 178116 | case 97: /* mvalues ::= mvalues COMMA LP nexprlist RP */ yytestcase(yyruleno==97); |
| 178117 | +#line 651 "parse.y" |
| 177811 | 178118 | { |
| 177812 | 178119 | yymsp[-4].minor.yy555 = sqlite3MultiValues(pParse, yymsp[-4].minor.yy555, yymsp[-1].minor.yy14); |
| 177813 | 178120 | } |
| 178121 | +#line 4272 "parse.sql" |
| 177814 | 178122 | break; |
| 177815 | 178123 | case 98: /* distinct ::= DISTINCT */ |
| 178124 | +#line 662 "parse.y" |
| 177816 | 178125 | {yymsp[0].minor.yy144 = SF_Distinct;} |
| 178126 | +#line 4277 "parse.sql" |
| 177817 | 178127 | break; |
| 177818 | 178128 | case 99: /* distinct ::= ALL */ |
| 178129 | +#line 663 "parse.y" |
| 177819 | 178130 | {yymsp[0].minor.yy144 = SF_All;} |
| 178131 | +#line 4282 "parse.sql" |
| 177820 | 178132 | break; |
| 177821 | 178133 | case 101: /* sclp ::= */ |
| 177822 | 178134 | case 134: /* orderby_opt ::= */ yytestcase(yyruleno==134); |
| 177823 | 178135 | case 144: /* groupby_opt ::= */ yytestcase(yyruleno==144); |
| 177824 | 178136 | case 234: /* exprlist ::= */ yytestcase(yyruleno==234); |
| 177825 | 178137 | case 237: /* paren_exprlist ::= */ yytestcase(yyruleno==237); |
| 177826 | 178138 | case 242: /* eidlist_opt ::= */ yytestcase(yyruleno==242); |
| 178139 | +#line 676 "parse.y" |
| 177827 | 178140 | {yymsp[1].minor.yy14 = 0;} |
| 178141 | +#line 4292 "parse.sql" |
| 177828 | 178142 | break; |
| 177829 | 178143 | case 102: /* selcollist ::= sclp scanpt expr scanpt as */ |
| 178144 | +#line 677 "parse.y" |
| 177830 | 178145 | { |
| 177831 | 178146 | yymsp[-4].minor.yy14 = sqlite3ExprListAppend(pParse, yymsp[-4].minor.yy14, yymsp[-2].minor.yy454); |
| 177832 | 178147 | if( yymsp[0].minor.yy0.n>0 ) sqlite3ExprListSetName(pParse, yymsp[-4].minor.yy14, &yymsp[0].minor.yy0, 1); |
| 177833 | 178148 | sqlite3ExprListSetSpan(pParse,yymsp[-4].minor.yy14,yymsp[-3].minor.yy168,yymsp[-1].minor.yy168); |
| 177834 | 178149 | } |
| 178150 | +#line 4301 "parse.sql" |
| 177835 | 178151 | break; |
| 177836 | 178152 | case 103: /* selcollist ::= sclp scanpt STAR */ |
| 178153 | +#line 682 "parse.y" |
| 177837 | 178154 | { |
| 177838 | 178155 | Expr *p = sqlite3Expr(pParse->db, TK_ASTERISK, 0); |
| 177839 | 178156 | sqlite3ExprSetErrorOffset(p, (int)(yymsp[0].minor.yy0.z - pParse->zTail)); |
| 177840 | 178157 | yymsp[-2].minor.yy14 = sqlite3ExprListAppend(pParse, yymsp[-2].minor.yy14, p); |
| 177841 | 178158 | } |
| 178159 | +#line 4310 "parse.sql" |
| 177842 | 178160 | break; |
| 177843 | 178161 | case 104: /* selcollist ::= sclp scanpt nm DOT STAR */ |
| 178162 | +#line 687 "parse.y" |
| 177844 | 178163 | { |
| 177845 | 178164 | Expr *pRight, *pLeft, *pDot; |
| 177846 | 178165 | pRight = sqlite3PExpr(pParse, TK_ASTERISK, 0, 0); |
| 177847 | 178166 | sqlite3ExprSetErrorOffset(pRight, (int)(yymsp[0].minor.yy0.z - pParse->zTail)); |
| 177848 | 178167 | pLeft = tokenExpr(pParse, TK_ID, yymsp[-2].minor.yy0); |
| 177849 | 178168 | pDot = sqlite3PExpr(pParse, TK_DOT, pLeft, pRight); |
| 177850 | 178169 | yymsp[-4].minor.yy14 = sqlite3ExprListAppend(pParse,yymsp[-4].minor.yy14, pDot); |
| 177851 | 178170 | } |
| 178171 | +#line 4322 "parse.sql" |
| 177852 | 178172 | break; |
| 177853 | 178173 | case 105: /* as ::= AS nm */ |
| 177854 | 178174 | case 117: /* dbnm ::= DOT nm */ yytestcase(yyruleno==117); |
| 177855 | 178175 | case 258: /* plus_num ::= PLUS INTEGER|FLOAT */ yytestcase(yyruleno==258); |
| 177856 | 178176 | case 259: /* minus_num ::= MINUS INTEGER|FLOAT */ yytestcase(yyruleno==259); |
| 178177 | +#line 700 "parse.y" |
| 177857 | 178178 | {yymsp[-1].minor.yy0 = yymsp[0].minor.yy0;} |
| 178179 | +#line 4330 "parse.sql" |
| 177858 | 178180 | break; |
| 177859 | 178181 | case 107: /* from ::= */ |
| 177860 | 178182 | case 110: /* stl_prefix ::= */ yytestcase(yyruleno==110); |
| 178183 | +#line 714 "parse.y" |
| 177861 | 178184 | {yymsp[1].minor.yy203 = 0;} |
| 178185 | +#line 4336 "parse.sql" |
| 177862 | 178186 | break; |
| 177863 | 178187 | case 108: /* from ::= FROM seltablist */ |
| 178188 | +#line 715 "parse.y" |
| 177864 | 178189 | { |
| 177865 | 178190 | yymsp[-1].minor.yy203 = yymsp[0].minor.yy203; |
| 177866 | 178191 | sqlite3SrcListShiftJoinType(pParse,yymsp[-1].minor.yy203); |
| 177867 | 178192 | } |
| 178193 | +#line 4344 "parse.sql" |
| 177868 | 178194 | break; |
| 177869 | 178195 | case 109: /* stl_prefix ::= seltablist joinop */ |
| 178196 | +#line 723 "parse.y" |
| 177870 | 178197 | { |
| 177871 | 178198 | if( ALWAYS(yymsp[-1].minor.yy203 && yymsp[-1].minor.yy203->nSrc>0) ) yymsp[-1].minor.yy203->a[yymsp[-1].minor.yy203->nSrc-1].fg.jointype = (u8)yymsp[0].minor.yy144; |
| 177872 | 178199 | } |
| 178200 | +#line 4351 "parse.sql" |
| 177873 | 178201 | break; |
| 177874 | 178202 | case 111: /* seltablist ::= stl_prefix nm dbnm as on_using */ |
| 178203 | +#line 727 "parse.y" |
| 177875 | 178204 | { |
| 177876 | 178205 | yymsp[-4].minor.yy203 = sqlite3SrcListAppendFromTerm(pParse,yymsp[-4].minor.yy203,&yymsp[-3].minor.yy0,&yymsp[-2].minor.yy0,&yymsp[-1].minor.yy0,0,&yymsp[0].minor.yy269); |
| 177877 | 178206 | } |
| 178207 | +#line 4358 "parse.sql" |
| 177878 | 178208 | break; |
| 177879 | 178209 | case 112: /* seltablist ::= stl_prefix nm dbnm as indexed_by on_using */ |
| 178210 | +#line 730 "parse.y" |
| 177880 | 178211 | { |
| 177881 | 178212 | yymsp[-5].minor.yy203 = sqlite3SrcListAppendFromTerm(pParse,yymsp[-5].minor.yy203,&yymsp[-4].minor.yy0,&yymsp[-3].minor.yy0,&yymsp[-2].minor.yy0,0,&yymsp[0].minor.yy269); |
| 177882 | 178213 | sqlite3SrcListIndexedBy(pParse, yymsp[-5].minor.yy203, &yymsp[-1].minor.yy0); |
| 177883 | 178214 | } |
| 178215 | +#line 4366 "parse.sql" |
| 177884 | 178216 | break; |
| 177885 | 178217 | case 113: /* seltablist ::= stl_prefix nm dbnm LP exprlist RP as on_using */ |
| 178218 | +#line 734 "parse.y" |
| 177886 | 178219 | { |
| 177887 | 178220 | yymsp[-7].minor.yy203 = sqlite3SrcListAppendFromTerm(pParse,yymsp[-7].minor.yy203,&yymsp[-6].minor.yy0,&yymsp[-5].minor.yy0,&yymsp[-1].minor.yy0,0,&yymsp[0].minor.yy269); |
| 177888 | 178221 | sqlite3SrcListFuncArgs(pParse, yymsp[-7].minor.yy203, yymsp[-3].minor.yy14); |
| 177889 | 178222 | } |
| 178223 | +#line 4374 "parse.sql" |
| 177890 | 178224 | break; |
| 177891 | 178225 | case 114: /* seltablist ::= stl_prefix LP select RP as on_using */ |
| 178226 | +#line 739 "parse.y" |
| 177892 | 178227 | { |
| 177893 | 178228 | yymsp[-5].minor.yy203 = sqlite3SrcListAppendFromTerm(pParse,yymsp[-5].minor.yy203,0,0,&yymsp[-1].minor.yy0,yymsp[-3].minor.yy555,&yymsp[0].minor.yy269); |
| 177894 | 178229 | } |
| 178230 | +#line 4381 "parse.sql" |
| 177895 | 178231 | break; |
| 177896 | 178232 | case 115: /* seltablist ::= stl_prefix LP seltablist RP as on_using */ |
| 178233 | +#line 742 "parse.y" |
| 177897 | 178234 | { |
| 177898 | 178235 | if( yymsp[-5].minor.yy203==0 && yymsp[-1].minor.yy0.n==0 && yymsp[0].minor.yy269.pOn==0 && yymsp[0].minor.yy269.pUsing==0 ){ |
| 177899 | 178236 | yymsp[-5].minor.yy203 = yymsp[-3].minor.yy203; |
| 177900 | 178237 | }else if( ALWAYS(yymsp[-3].minor.yy203!=0) && yymsp[-3].minor.yy203->nSrc==1 ){ |
| 177901 | 178238 | yymsp[-5].minor.yy203 = sqlite3SrcListAppendFromTerm(pParse,yymsp[-5].minor.yy203,0,0,&yymsp[-1].minor.yy0,0,&yymsp[0].minor.yy269); |
| | @@ -177932,144 +178269,210 @@ |
| 177932 | 178269 | sqlite3SrcListShiftJoinType(pParse,yymsp[-3].minor.yy203); |
| 177933 | 178270 | pSubquery = sqlite3SelectNew(pParse,0,yymsp[-3].minor.yy203,0,0,0,0,SF_NestedFrom,0); |
| 177934 | 178271 | yymsp[-5].minor.yy203 = sqlite3SrcListAppendFromTerm(pParse,yymsp[-5].minor.yy203,0,0,&yymsp[-1].minor.yy0,pSubquery,&yymsp[0].minor.yy269); |
| 177935 | 178272 | } |
| 177936 | 178273 | } |
| 178274 | +#line 4425 "parse.sql" |
| 177937 | 178275 | break; |
| 177938 | 178276 | case 116: /* dbnm ::= */ |
| 177939 | 178277 | case 131: /* indexed_opt ::= */ yytestcase(yyruleno==131); |
| 178278 | +#line 785 "parse.y" |
| 177940 | 178279 | {yymsp[1].minor.yy0.z=0; yymsp[1].minor.yy0.n=0;} |
| 178280 | +#line 4431 "parse.sql" |
| 177941 | 178281 | break; |
| 177942 | 178282 | case 118: /* fullname ::= nm */ |
| 178283 | +#line 790 "parse.y" |
| 177943 | 178284 | { |
| 177944 | 178285 | yylhsminor.yy203 = sqlite3SrcListAppend(pParse,0,&yymsp[0].minor.yy0,0); |
| 177945 | 178286 | if( IN_RENAME_OBJECT && yylhsminor.yy203 ) sqlite3RenameTokenMap(pParse, yylhsminor.yy203->a[0].zName, &yymsp[0].minor.yy0); |
| 177946 | 178287 | } |
| 178288 | +#line 4439 "parse.sql" |
| 177947 | 178289 | yymsp[0].minor.yy203 = yylhsminor.yy203; |
| 177948 | 178290 | break; |
| 177949 | 178291 | case 119: /* fullname ::= nm DOT nm */ |
| 178292 | +#line 794 "parse.y" |
| 177950 | 178293 | { |
| 177951 | 178294 | yylhsminor.yy203 = sqlite3SrcListAppend(pParse,0,&yymsp[-2].minor.yy0,&yymsp[0].minor.yy0); |
| 177952 | 178295 | if( IN_RENAME_OBJECT && yylhsminor.yy203 ) sqlite3RenameTokenMap(pParse, yylhsminor.yy203->a[0].zName, &yymsp[0].minor.yy0); |
| 177953 | 178296 | } |
| 178297 | +#line 4448 "parse.sql" |
| 177954 | 178298 | yymsp[-2].minor.yy203 = yylhsminor.yy203; |
| 177955 | 178299 | break; |
| 177956 | 178300 | case 120: /* xfullname ::= nm */ |
| 178301 | +#line 802 "parse.y" |
| 177957 | 178302 | {yymsp[0].minor.yy203 = sqlite3SrcListAppend(pParse,0,&yymsp[0].minor.yy0,0); /*A-overwrites-X*/} |
| 178303 | +#line 4454 "parse.sql" |
| 177958 | 178304 | break; |
| 177959 | 178305 | case 121: /* xfullname ::= nm DOT nm */ |
| 178306 | +#line 804 "parse.y" |
| 177960 | 178307 | {yymsp[-2].minor.yy203 = sqlite3SrcListAppend(pParse,0,&yymsp[-2].minor.yy0,&yymsp[0].minor.yy0); /*A-overwrites-X*/} |
| 178308 | +#line 4459 "parse.sql" |
| 177961 | 178309 | break; |
| 177962 | 178310 | case 122: /* xfullname ::= nm DOT nm AS nm */ |
| 178311 | +#line 805 "parse.y" |
| 177963 | 178312 | { |
| 177964 | 178313 | yymsp[-4].minor.yy203 = sqlite3SrcListAppend(pParse,0,&yymsp[-4].minor.yy0,&yymsp[-2].minor.yy0); /*A-overwrites-X*/ |
| 177965 | 178314 | if( yymsp[-4].minor.yy203 ) yymsp[-4].minor.yy203->a[0].zAlias = sqlite3NameFromToken(pParse->db, &yymsp[0].minor.yy0); |
| 177966 | 178315 | } |
| 178316 | +#line 4467 "parse.sql" |
| 177967 | 178317 | break; |
| 177968 | 178318 | case 123: /* xfullname ::= nm AS nm */ |
| 178319 | +#line 809 "parse.y" |
| 177969 | 178320 | { |
| 177970 | 178321 | yymsp[-2].minor.yy203 = sqlite3SrcListAppend(pParse,0,&yymsp[-2].minor.yy0,0); /*A-overwrites-X*/ |
| 177971 | 178322 | if( yymsp[-2].minor.yy203 ) yymsp[-2].minor.yy203->a[0].zAlias = sqlite3NameFromToken(pParse->db, &yymsp[0].minor.yy0); |
| 177972 | 178323 | } |
| 178324 | +#line 4475 "parse.sql" |
| 177973 | 178325 | break; |
| 177974 | 178326 | case 124: /* joinop ::= COMMA|JOIN */ |
| 178327 | +#line 815 "parse.y" |
| 177975 | 178328 | { yymsp[0].minor.yy144 = JT_INNER; } |
| 178329 | +#line 4480 "parse.sql" |
| 177976 | 178330 | break; |
| 177977 | 178331 | case 125: /* joinop ::= JOIN_KW JOIN */ |
| 178332 | +#line 817 "parse.y" |
| 177978 | 178333 | {yymsp[-1].minor.yy144 = sqlite3JoinType(pParse,&yymsp[-1].minor.yy0,0,0); /*X-overwrites-A*/} |
| 178334 | +#line 4485 "parse.sql" |
| 177979 | 178335 | break; |
| 177980 | 178336 | case 126: /* joinop ::= JOIN_KW nm JOIN */ |
| 178337 | +#line 819 "parse.y" |
| 177981 | 178338 | {yymsp[-2].minor.yy144 = sqlite3JoinType(pParse,&yymsp[-2].minor.yy0,&yymsp[-1].minor.yy0,0); /*X-overwrites-A*/} |
| 178339 | +#line 4490 "parse.sql" |
| 177982 | 178340 | break; |
| 177983 | 178341 | case 127: /* joinop ::= JOIN_KW nm nm JOIN */ |
| 178342 | +#line 821 "parse.y" |
| 177984 | 178343 | {yymsp[-3].minor.yy144 = sqlite3JoinType(pParse,&yymsp[-3].minor.yy0,&yymsp[-2].minor.yy0,&yymsp[-1].minor.yy0);/*X-overwrites-A*/} |
| 178344 | +#line 4495 "parse.sql" |
| 177985 | 178345 | break; |
| 177986 | 178346 | case 128: /* on_using ::= ON expr */ |
| 178347 | +#line 842 "parse.y" |
| 177987 | 178348 | {yymsp[-1].minor.yy269.pOn = yymsp[0].minor.yy454; yymsp[-1].minor.yy269.pUsing = 0;} |
| 178349 | +#line 4500 "parse.sql" |
| 177988 | 178350 | break; |
| 177989 | 178351 | case 129: /* on_using ::= USING LP idlist RP */ |
| 178352 | +#line 843 "parse.y" |
| 177990 | 178353 | {yymsp[-3].minor.yy269.pOn = 0; yymsp[-3].minor.yy269.pUsing = yymsp[-1].minor.yy132;} |
| 178354 | +#line 4505 "parse.sql" |
| 177991 | 178355 | break; |
| 177992 | 178356 | case 130: /* on_using ::= */ |
| 178357 | +#line 844 "parse.y" |
| 177993 | 178358 | {yymsp[1].minor.yy269.pOn = 0; yymsp[1].minor.yy269.pUsing = 0;} |
| 178359 | +#line 4510 "parse.sql" |
| 177994 | 178360 | break; |
| 177995 | 178361 | case 132: /* indexed_by ::= INDEXED BY nm */ |
| 178362 | +#line 860 "parse.y" |
| 177996 | 178363 | {yymsp[-2].minor.yy0 = yymsp[0].minor.yy0;} |
| 178364 | +#line 4515 "parse.sql" |
| 177997 | 178365 | break; |
| 177998 | 178366 | case 133: /* indexed_by ::= NOT INDEXED */ |
| 178367 | +#line 861 "parse.y" |
| 177999 | 178368 | {yymsp[-1].minor.yy0.z=0; yymsp[-1].minor.yy0.n=1;} |
| 178369 | +#line 4520 "parse.sql" |
| 178000 | 178370 | break; |
| 178001 | 178371 | case 135: /* orderby_opt ::= ORDER BY sortlist */ |
| 178002 | 178372 | case 145: /* groupby_opt ::= GROUP BY nexprlist */ yytestcase(yyruleno==145); |
| 178373 | +#line 874 "parse.y" |
| 178003 | 178374 | {yymsp[-2].minor.yy14 = yymsp[0].minor.yy14;} |
| 178375 | +#line 4526 "parse.sql" |
| 178004 | 178376 | break; |
| 178005 | 178377 | case 136: /* sortlist ::= sortlist COMMA expr sortorder nulls */ |
| 178378 | +#line 875 "parse.y" |
| 178006 | 178379 | { |
| 178007 | 178380 | yymsp[-4].minor.yy14 = sqlite3ExprListAppend(pParse,yymsp[-4].minor.yy14,yymsp[-2].minor.yy454); |
| 178008 | 178381 | sqlite3ExprListSetSortOrder(yymsp[-4].minor.yy14,yymsp[-1].minor.yy144,yymsp[0].minor.yy144); |
| 178009 | 178382 | } |
| 178383 | +#line 4534 "parse.sql" |
| 178010 | 178384 | break; |
| 178011 | 178385 | case 137: /* sortlist ::= expr sortorder nulls */ |
| 178386 | +#line 879 "parse.y" |
| 178012 | 178387 | { |
| 178013 | 178388 | yymsp[-2].minor.yy14 = sqlite3ExprListAppend(pParse,0,yymsp[-2].minor.yy454); /*A-overwrites-Y*/ |
| 178014 | 178389 | sqlite3ExprListSetSortOrder(yymsp[-2].minor.yy14,yymsp[-1].minor.yy144,yymsp[0].minor.yy144); |
| 178015 | 178390 | } |
| 178391 | +#line 4542 "parse.sql" |
| 178016 | 178392 | break; |
| 178017 | 178393 | case 138: /* sortorder ::= ASC */ |
| 178394 | +#line 886 "parse.y" |
| 178018 | 178395 | {yymsp[0].minor.yy144 = SQLITE_SO_ASC;} |
| 178396 | +#line 4547 "parse.sql" |
| 178019 | 178397 | break; |
| 178020 | 178398 | case 139: /* sortorder ::= DESC */ |
| 178399 | +#line 887 "parse.y" |
| 178021 | 178400 | {yymsp[0].minor.yy144 = SQLITE_SO_DESC;} |
| 178401 | +#line 4552 "parse.sql" |
| 178022 | 178402 | break; |
| 178023 | 178403 | case 140: /* sortorder ::= */ |
| 178024 | 178404 | case 143: /* nulls ::= */ yytestcase(yyruleno==143); |
| 178405 | +#line 888 "parse.y" |
| 178025 | 178406 | {yymsp[1].minor.yy144 = SQLITE_SO_UNDEFINED;} |
| 178407 | +#line 4558 "parse.sql" |
| 178026 | 178408 | break; |
| 178027 | 178409 | case 141: /* nulls ::= NULLS FIRST */ |
| 178410 | +#line 891 "parse.y" |
| 178028 | 178411 | {yymsp[-1].minor.yy144 = SQLITE_SO_ASC;} |
| 178412 | +#line 4563 "parse.sql" |
| 178029 | 178413 | break; |
| 178030 | 178414 | case 142: /* nulls ::= NULLS LAST */ |
| 178415 | +#line 892 "parse.y" |
| 178031 | 178416 | {yymsp[-1].minor.yy144 = SQLITE_SO_DESC;} |
| 178417 | +#line 4568 "parse.sql" |
| 178032 | 178418 | break; |
| 178033 | 178419 | case 146: /* having_opt ::= */ |
| 178034 | 178420 | case 148: /* limit_opt ::= */ yytestcase(yyruleno==148); |
| 178035 | 178421 | case 153: /* where_opt ::= */ yytestcase(yyruleno==153); |
| 178036 | 178422 | case 155: /* where_opt_ret ::= */ yytestcase(yyruleno==155); |
| 178037 | 178423 | case 232: /* case_else ::= */ yytestcase(yyruleno==232); |
| 178038 | 178424 | case 233: /* case_operand ::= */ yytestcase(yyruleno==233); |
| 178039 | 178425 | case 252: /* vinto ::= */ yytestcase(yyruleno==252); |
| 178426 | +#line 902 "parse.y" |
| 178040 | 178427 | {yymsp[1].minor.yy454 = 0;} |
| 178428 | +#line 4579 "parse.sql" |
| 178041 | 178429 | break; |
| 178042 | 178430 | case 147: /* having_opt ::= HAVING expr */ |
| 178043 | 178431 | case 154: /* where_opt ::= WHERE expr */ yytestcase(yyruleno==154); |
| 178044 | 178432 | case 156: /* where_opt_ret ::= WHERE expr */ yytestcase(yyruleno==156); |
| 178045 | 178433 | case 231: /* case_else ::= ELSE expr */ yytestcase(yyruleno==231); |
| 178046 | 178434 | case 251: /* vinto ::= INTO expr */ yytestcase(yyruleno==251); |
| 178435 | +#line 903 "parse.y" |
| 178047 | 178436 | {yymsp[-1].minor.yy454 = yymsp[0].minor.yy454;} |
| 178437 | +#line 4588 "parse.sql" |
| 178048 | 178438 | break; |
| 178049 | 178439 | case 149: /* limit_opt ::= LIMIT expr */ |
| 178440 | +#line 917 "parse.y" |
| 178050 | 178441 | {yymsp[-1].minor.yy454 = sqlite3PExpr(pParse,TK_LIMIT,yymsp[0].minor.yy454,0);} |
| 178442 | +#line 4593 "parse.sql" |
| 178051 | 178443 | break; |
| 178052 | 178444 | case 150: /* limit_opt ::= LIMIT expr OFFSET expr */ |
| 178445 | +#line 919 "parse.y" |
| 178053 | 178446 | {yymsp[-3].minor.yy454 = sqlite3PExpr(pParse,TK_LIMIT,yymsp[-2].minor.yy454,yymsp[0].minor.yy454);} |
| 178447 | +#line 4598 "parse.sql" |
| 178054 | 178448 | break; |
| 178055 | 178449 | case 151: /* limit_opt ::= LIMIT expr COMMA expr */ |
| 178450 | +#line 921 "parse.y" |
| 178056 | 178451 | {yymsp[-3].minor.yy454 = sqlite3PExpr(pParse,TK_LIMIT,yymsp[0].minor.yy454,yymsp[-2].minor.yy454);} |
| 178452 | +#line 4603 "parse.sql" |
| 178057 | 178453 | break; |
| 178058 | 178454 | case 152: /* cmd ::= with DELETE FROM xfullname indexed_opt where_opt_ret */ |
| 178455 | +#line 939 "parse.y" |
| 178059 | 178456 | { |
| 178060 | 178457 | sqlite3SrcListIndexedBy(pParse, yymsp[-2].minor.yy203, &yymsp[-1].minor.yy0); |
| 178061 | 178458 | sqlite3DeleteFrom(pParse,yymsp[-2].minor.yy203,yymsp[0].minor.yy454,0,0); |
| 178062 | 178459 | } |
| 178460 | +#line 4611 "parse.sql" |
| 178063 | 178461 | break; |
| 178064 | 178462 | case 157: /* where_opt_ret ::= RETURNING selcollist */ |
| 178463 | +#line 955 "parse.y" |
| 178065 | 178464 | {sqlite3AddReturning(pParse,yymsp[0].minor.yy14); yymsp[-1].minor.yy454 = 0;} |
| 178465 | +#line 4616 "parse.sql" |
| 178066 | 178466 | break; |
| 178067 | 178467 | case 158: /* where_opt_ret ::= WHERE expr RETURNING selcollist */ |
| 178468 | +#line 957 "parse.y" |
| 178068 | 178469 | {sqlite3AddReturning(pParse,yymsp[0].minor.yy14); yymsp[-3].minor.yy454 = yymsp[-2].minor.yy454;} |
| 178470 | +#line 4621 "parse.sql" |
| 178069 | 178471 | break; |
| 178070 | 178472 | case 159: /* cmd ::= with UPDATE orconf xfullname indexed_opt SET setlist from where_opt_ret */ |
| 178473 | +#line 989 "parse.y" |
| 178071 | 178474 | { |
| 178072 | 178475 | sqlite3SrcListIndexedBy(pParse, yymsp[-5].minor.yy203, &yymsp[-4].minor.yy0); |
| 178073 | 178476 | sqlite3ExprListCheckLength(pParse,yymsp[-2].minor.yy14,"set list"); |
| 178074 | 178477 | if( yymsp[-1].minor.yy203 ){ |
| 178075 | 178478 | SrcList *pFromClause = yymsp[-1].minor.yy203; |
| | @@ -178083,92 +178486,134 @@ |
| 178083 | 178486 | } |
| 178084 | 178487 | yymsp[-5].minor.yy203 = sqlite3SrcListAppendList(pParse, yymsp[-5].minor.yy203, pFromClause); |
| 178085 | 178488 | } |
| 178086 | 178489 | sqlite3Update(pParse,yymsp[-5].minor.yy203,yymsp[-2].minor.yy14,yymsp[0].minor.yy454,yymsp[-6].minor.yy144,0,0,0); |
| 178087 | 178490 | } |
| 178491 | +#line 4642 "parse.sql" |
| 178088 | 178492 | break; |
| 178089 | 178493 | case 160: /* setlist ::= setlist COMMA nm EQ expr */ |
| 178494 | +#line 1013 "parse.y" |
| 178090 | 178495 | { |
| 178091 | 178496 | yymsp[-4].minor.yy14 = sqlite3ExprListAppend(pParse, yymsp[-4].minor.yy14, yymsp[0].minor.yy454); |
| 178092 | 178497 | sqlite3ExprListSetName(pParse, yymsp[-4].minor.yy14, &yymsp[-2].minor.yy0, 1); |
| 178093 | 178498 | } |
| 178499 | +#line 4650 "parse.sql" |
| 178094 | 178500 | break; |
| 178095 | 178501 | case 161: /* setlist ::= setlist COMMA LP idlist RP EQ expr */ |
| 178502 | +#line 1017 "parse.y" |
| 178096 | 178503 | { |
| 178097 | 178504 | yymsp[-6].minor.yy14 = sqlite3ExprListAppendVector(pParse, yymsp[-6].minor.yy14, yymsp[-3].minor.yy132, yymsp[0].minor.yy454); |
| 178098 | 178505 | } |
| 178506 | +#line 4657 "parse.sql" |
| 178099 | 178507 | break; |
| 178100 | 178508 | case 162: /* setlist ::= nm EQ expr */ |
| 178509 | +#line 1020 "parse.y" |
| 178101 | 178510 | { |
| 178102 | 178511 | yylhsminor.yy14 = sqlite3ExprListAppend(pParse, 0, yymsp[0].minor.yy454); |
| 178103 | 178512 | sqlite3ExprListSetName(pParse, yylhsminor.yy14, &yymsp[-2].minor.yy0, 1); |
| 178104 | 178513 | } |
| 178514 | +#line 4665 "parse.sql" |
| 178105 | 178515 | yymsp[-2].minor.yy14 = yylhsminor.yy14; |
| 178106 | 178516 | break; |
| 178107 | 178517 | case 163: /* setlist ::= LP idlist RP EQ expr */ |
| 178518 | +#line 1024 "parse.y" |
| 178108 | 178519 | { |
| 178109 | 178520 | yymsp[-4].minor.yy14 = sqlite3ExprListAppendVector(pParse, 0, yymsp[-3].minor.yy132, yymsp[0].minor.yy454); |
| 178110 | 178521 | } |
| 178522 | +#line 4673 "parse.sql" |
| 178111 | 178523 | break; |
| 178112 | 178524 | case 164: /* cmd ::= with insert_cmd INTO xfullname idlist_opt select upsert */ |
| 178525 | +#line 1031 "parse.y" |
| 178113 | 178526 | { |
| 178114 | 178527 | sqlite3Insert(pParse, yymsp[-3].minor.yy203, yymsp[-1].minor.yy555, yymsp[-2].minor.yy132, yymsp[-5].minor.yy144, yymsp[0].minor.yy122); |
| 178115 | 178528 | } |
| 178529 | +#line 4680 "parse.sql" |
| 178116 | 178530 | break; |
| 178117 | 178531 | case 165: /* cmd ::= with insert_cmd INTO xfullname idlist_opt DEFAULT VALUES returning */ |
| 178532 | +#line 1035 "parse.y" |
| 178118 | 178533 | { |
| 178119 | 178534 | sqlite3Insert(pParse, yymsp[-4].minor.yy203, 0, yymsp[-3].minor.yy132, yymsp[-6].minor.yy144, 0); |
| 178120 | 178535 | } |
| 178536 | +#line 4687 "parse.sql" |
| 178121 | 178537 | break; |
| 178122 | 178538 | case 166: /* upsert ::= */ |
| 178539 | +#line 1046 "parse.y" |
| 178123 | 178540 | { yymsp[1].minor.yy122 = 0; } |
| 178541 | +#line 4692 "parse.sql" |
| 178124 | 178542 | break; |
| 178125 | 178543 | case 167: /* upsert ::= RETURNING selcollist */ |
| 178544 | +#line 1047 "parse.y" |
| 178126 | 178545 | { yymsp[-1].minor.yy122 = 0; sqlite3AddReturning(pParse,yymsp[0].minor.yy14); } |
| 178546 | +#line 4697 "parse.sql" |
| 178127 | 178547 | break; |
| 178128 | 178548 | case 168: /* upsert ::= ON CONFLICT LP sortlist RP where_opt DO UPDATE SET setlist where_opt upsert */ |
| 178549 | +#line 1050 "parse.y" |
| 178129 | 178550 | { yymsp[-11].minor.yy122 = sqlite3UpsertNew(pParse->db,yymsp[-8].minor.yy14,yymsp[-6].minor.yy454,yymsp[-2].minor.yy14,yymsp[-1].minor.yy454,yymsp[0].minor.yy122);} |
| 178551 | +#line 4702 "parse.sql" |
| 178130 | 178552 | break; |
| 178131 | 178553 | case 169: /* upsert ::= ON CONFLICT LP sortlist RP where_opt DO NOTHING upsert */ |
| 178554 | +#line 1052 "parse.y" |
| 178132 | 178555 | { yymsp[-8].minor.yy122 = sqlite3UpsertNew(pParse->db,yymsp[-5].minor.yy14,yymsp[-3].minor.yy454,0,0,yymsp[0].minor.yy122); } |
| 178556 | +#line 4707 "parse.sql" |
| 178133 | 178557 | break; |
| 178134 | 178558 | case 170: /* upsert ::= ON CONFLICT DO NOTHING returning */ |
| 178559 | +#line 1054 "parse.y" |
| 178135 | 178560 | { yymsp[-4].minor.yy122 = sqlite3UpsertNew(pParse->db,0,0,0,0,0); } |
| 178561 | +#line 4712 "parse.sql" |
| 178136 | 178562 | break; |
| 178137 | 178563 | case 171: /* upsert ::= ON CONFLICT DO UPDATE SET setlist where_opt returning */ |
| 178564 | +#line 1056 "parse.y" |
| 178138 | 178565 | { yymsp[-7].minor.yy122 = sqlite3UpsertNew(pParse->db,0,0,yymsp[-2].minor.yy14,yymsp[-1].minor.yy454,0);} |
| 178566 | +#line 4717 "parse.sql" |
| 178139 | 178567 | break; |
| 178140 | 178568 | case 172: /* returning ::= RETURNING selcollist */ |
| 178569 | +#line 1058 "parse.y" |
| 178141 | 178570 | {sqlite3AddReturning(pParse,yymsp[0].minor.yy14);} |
| 178571 | +#line 4722 "parse.sql" |
| 178142 | 178572 | break; |
| 178143 | 178573 | case 175: /* idlist_opt ::= */ |
| 178574 | +#line 1070 "parse.y" |
| 178144 | 178575 | {yymsp[1].minor.yy132 = 0;} |
| 178576 | +#line 4727 "parse.sql" |
| 178145 | 178577 | break; |
| 178146 | 178578 | case 176: /* idlist_opt ::= LP idlist RP */ |
| 178579 | +#line 1071 "parse.y" |
| 178147 | 178580 | {yymsp[-2].minor.yy132 = yymsp[-1].minor.yy132;} |
| 178581 | +#line 4732 "parse.sql" |
| 178148 | 178582 | break; |
| 178149 | 178583 | case 177: /* idlist ::= idlist COMMA nm */ |
| 178584 | +#line 1073 "parse.y" |
| 178150 | 178585 | {yymsp[-2].minor.yy132 = sqlite3IdListAppend(pParse,yymsp[-2].minor.yy132,&yymsp[0].minor.yy0);} |
| 178586 | +#line 4737 "parse.sql" |
| 178151 | 178587 | break; |
| 178152 | 178588 | case 178: /* idlist ::= nm */ |
| 178589 | +#line 1075 "parse.y" |
| 178153 | 178590 | {yymsp[0].minor.yy132 = sqlite3IdListAppend(pParse,0,&yymsp[0].minor.yy0); /*A-overwrites-Y*/} |
| 178591 | +#line 4742 "parse.sql" |
| 178154 | 178592 | break; |
| 178155 | 178593 | case 179: /* expr ::= LP expr RP */ |
| 178594 | +#line 1124 "parse.y" |
| 178156 | 178595 | {yymsp[-2].minor.yy454 = yymsp[-1].minor.yy454;} |
| 178596 | +#line 4747 "parse.sql" |
| 178157 | 178597 | break; |
| 178158 | 178598 | case 180: /* expr ::= ID|INDEXED|JOIN_KW */ |
| 178599 | +#line 1125 "parse.y" |
| 178159 | 178600 | {yymsp[0].minor.yy454=tokenExpr(pParse,TK_ID,yymsp[0].minor.yy0); /*A-overwrites-X*/} |
| 178601 | +#line 4752 "parse.sql" |
| 178160 | 178602 | break; |
| 178161 | 178603 | case 181: /* expr ::= nm DOT nm */ |
| 178604 | +#line 1126 "parse.y" |
| 178162 | 178605 | { |
| 178163 | 178606 | Expr *temp1 = tokenExpr(pParse,TK_ID,yymsp[-2].minor.yy0); |
| 178164 | 178607 | Expr *temp2 = tokenExpr(pParse,TK_ID,yymsp[0].minor.yy0); |
| 178165 | 178608 | yylhsminor.yy454 = sqlite3PExpr(pParse, TK_DOT, temp1, temp2); |
| 178166 | 178609 | } |
| 178610 | +#line 4761 "parse.sql" |
| 178167 | 178611 | yymsp[-2].minor.yy454 = yylhsminor.yy454; |
| 178168 | 178612 | break; |
| 178169 | 178613 | case 182: /* expr ::= nm DOT nm DOT nm */ |
| 178614 | +#line 1131 "parse.y" |
| 178170 | 178615 | { |
| 178171 | 178616 | Expr *temp1 = tokenExpr(pParse,TK_ID,yymsp[-4].minor.yy0); |
| 178172 | 178617 | Expr *temp2 = tokenExpr(pParse,TK_ID,yymsp[-2].minor.yy0); |
| 178173 | 178618 | Expr *temp3 = tokenExpr(pParse,TK_ID,yymsp[0].minor.yy0); |
| 178174 | 178619 | Expr *temp4 = sqlite3PExpr(pParse, TK_DOT, temp2, temp3); |
| | @@ -178175,24 +178620,30 @@ |
| 178175 | 178620 | if( IN_RENAME_OBJECT ){ |
| 178176 | 178621 | sqlite3RenameTokenRemap(pParse, 0, temp1); |
| 178177 | 178622 | } |
| 178178 | 178623 | yylhsminor.yy454 = sqlite3PExpr(pParse, TK_DOT, temp1, temp4); |
| 178179 | 178624 | } |
| 178625 | +#line 4776 "parse.sql" |
| 178180 | 178626 | yymsp[-4].minor.yy454 = yylhsminor.yy454; |
| 178181 | 178627 | break; |
| 178182 | 178628 | case 183: /* term ::= NULL|FLOAT|BLOB */ |
| 178183 | 178629 | case 184: /* term ::= STRING */ yytestcase(yyruleno==184); |
| 178630 | +#line 1141 "parse.y" |
| 178184 | 178631 | {yymsp[0].minor.yy454=tokenExpr(pParse,yymsp[0].major,yymsp[0].minor.yy0); /*A-overwrites-X*/} |
| 178632 | +#line 4783 "parse.sql" |
| 178185 | 178633 | break; |
| 178186 | 178634 | case 185: /* term ::= INTEGER */ |
| 178635 | +#line 1143 "parse.y" |
| 178187 | 178636 | { |
| 178188 | 178637 | yylhsminor.yy454 = sqlite3ExprAlloc(pParse->db, TK_INTEGER, &yymsp[0].minor.yy0, 1); |
| 178189 | 178638 | if( yylhsminor.yy454 ) yylhsminor.yy454->w.iOfst = (int)(yymsp[0].minor.yy0.z - pParse->zTail); |
| 178190 | 178639 | } |
| 178640 | +#line 4791 "parse.sql" |
| 178191 | 178641 | yymsp[0].minor.yy454 = yylhsminor.yy454; |
| 178192 | 178642 | break; |
| 178193 | 178643 | case 186: /* expr ::= VARIABLE */ |
| 178644 | +#line 1147 "parse.y" |
| 178194 | 178645 | { |
| 178195 | 178646 | if( !(yymsp[0].minor.yy0.z[0]=='#' && sqlite3Isdigit(yymsp[0].minor.yy0.z[1])) ){ |
| 178196 | 178647 | u32 n = yymsp[0].minor.yy0.n; |
| 178197 | 178648 | yymsp[0].minor.yy454 = tokenExpr(pParse, TK_VARIABLE, yymsp[0].minor.yy0); |
| 178198 | 178649 | sqlite3ExprAssignVarNumber(pParse, yymsp[0].minor.yy454, n); |
| | @@ -178209,70 +178660,90 @@ |
| 178209 | 178660 | yymsp[0].minor.yy454 = sqlite3PExpr(pParse, TK_REGISTER, 0, 0); |
| 178210 | 178661 | if( yymsp[0].minor.yy454 ) sqlite3GetInt32(&t.z[1], &yymsp[0].minor.yy454->iTable); |
| 178211 | 178662 | } |
| 178212 | 178663 | } |
| 178213 | 178664 | } |
| 178665 | +#line 4816 "parse.sql" |
| 178214 | 178666 | break; |
| 178215 | 178667 | case 187: /* expr ::= expr COLLATE ID|STRING */ |
| 178668 | +#line 1167 "parse.y" |
| 178216 | 178669 | { |
| 178217 | 178670 | yymsp[-2].minor.yy454 = sqlite3ExprAddCollateToken(pParse, yymsp[-2].minor.yy454, &yymsp[0].minor.yy0, 1); |
| 178218 | 178671 | } |
| 178672 | +#line 4823 "parse.sql" |
| 178219 | 178673 | break; |
| 178220 | 178674 | case 188: /* expr ::= CAST LP expr AS typetoken RP */ |
| 178675 | +#line 1171 "parse.y" |
| 178221 | 178676 | { |
| 178222 | 178677 | yymsp[-5].minor.yy454 = sqlite3ExprAlloc(pParse->db, TK_CAST, &yymsp[-1].minor.yy0, 1); |
| 178223 | 178678 | sqlite3ExprAttachSubtrees(pParse->db, yymsp[-5].minor.yy454, yymsp[-3].minor.yy454, 0); |
| 178224 | 178679 | } |
| 178680 | +#line 4831 "parse.sql" |
| 178225 | 178681 | break; |
| 178226 | 178682 | case 189: /* expr ::= ID|INDEXED|JOIN_KW LP distinct exprlist RP */ |
| 178683 | +#line 1178 "parse.y" |
| 178227 | 178684 | { |
| 178228 | 178685 | yylhsminor.yy454 = sqlite3ExprFunction(pParse, yymsp[-1].minor.yy14, &yymsp[-4].minor.yy0, yymsp[-2].minor.yy144); |
| 178229 | 178686 | } |
| 178687 | +#line 4838 "parse.sql" |
| 178230 | 178688 | yymsp[-4].minor.yy454 = yylhsminor.yy454; |
| 178231 | 178689 | break; |
| 178232 | 178690 | case 190: /* expr ::= ID|INDEXED|JOIN_KW LP distinct exprlist ORDER BY sortlist RP */ |
| 178691 | +#line 1181 "parse.y" |
| 178233 | 178692 | { |
| 178234 | 178693 | yylhsminor.yy454 = sqlite3ExprFunction(pParse, yymsp[-4].minor.yy14, &yymsp[-7].minor.yy0, yymsp[-5].minor.yy144); |
| 178235 | 178694 | sqlite3ExprAddFunctionOrderBy(pParse, yylhsminor.yy454, yymsp[-1].minor.yy14); |
| 178236 | 178695 | } |
| 178696 | +#line 4847 "parse.sql" |
| 178237 | 178697 | yymsp[-7].minor.yy454 = yylhsminor.yy454; |
| 178238 | 178698 | break; |
| 178239 | 178699 | case 191: /* expr ::= ID|INDEXED|JOIN_KW LP STAR RP */ |
| 178700 | +#line 1185 "parse.y" |
| 178240 | 178701 | { |
| 178241 | 178702 | yylhsminor.yy454 = sqlite3ExprFunction(pParse, 0, &yymsp[-3].minor.yy0, 0); |
| 178242 | 178703 | } |
| 178704 | +#line 4855 "parse.sql" |
| 178243 | 178705 | yymsp[-3].minor.yy454 = yylhsminor.yy454; |
| 178244 | 178706 | break; |
| 178245 | 178707 | case 192: /* expr ::= ID|INDEXED|JOIN_KW LP distinct exprlist RP filter_over */ |
| 178708 | +#line 1249 "parse.y" |
| 178246 | 178709 | { |
| 178247 | 178710 | yylhsminor.yy454 = sqlite3ExprFunction(pParse, yymsp[-2].minor.yy14, &yymsp[-5].minor.yy0, yymsp[-3].minor.yy144); |
| 178248 | 178711 | sqlite3WindowAttach(pParse, yylhsminor.yy454, yymsp[0].minor.yy211); |
| 178249 | 178712 | } |
| 178713 | +#line 4864 "parse.sql" |
| 178250 | 178714 | yymsp[-5].minor.yy454 = yylhsminor.yy454; |
| 178251 | 178715 | break; |
| 178252 | 178716 | case 193: /* expr ::= ID|INDEXED|JOIN_KW LP distinct exprlist ORDER BY sortlist RP filter_over */ |
| 178717 | +#line 1253 "parse.y" |
| 178253 | 178718 | { |
| 178254 | 178719 | yylhsminor.yy454 = sqlite3ExprFunction(pParse, yymsp[-5].minor.yy14, &yymsp[-8].minor.yy0, yymsp[-6].minor.yy144); |
| 178255 | 178720 | sqlite3WindowAttach(pParse, yylhsminor.yy454, yymsp[0].minor.yy211); |
| 178256 | 178721 | sqlite3ExprAddFunctionOrderBy(pParse, yylhsminor.yy454, yymsp[-2].minor.yy14); |
| 178257 | 178722 | } |
| 178723 | +#line 4874 "parse.sql" |
| 178258 | 178724 | yymsp[-8].minor.yy454 = yylhsminor.yy454; |
| 178259 | 178725 | break; |
| 178260 | 178726 | case 194: /* expr ::= ID|INDEXED|JOIN_KW LP STAR RP filter_over */ |
| 178727 | +#line 1258 "parse.y" |
| 178261 | 178728 | { |
| 178262 | 178729 | yylhsminor.yy454 = sqlite3ExprFunction(pParse, 0, &yymsp[-4].minor.yy0, 0); |
| 178263 | 178730 | sqlite3WindowAttach(pParse, yylhsminor.yy454, yymsp[0].minor.yy211); |
| 178264 | 178731 | } |
| 178732 | +#line 4883 "parse.sql" |
| 178265 | 178733 | yymsp[-4].minor.yy454 = yylhsminor.yy454; |
| 178266 | 178734 | break; |
| 178267 | 178735 | case 195: /* term ::= CTIME_KW */ |
| 178736 | +#line 1272 "parse.y" |
| 178268 | 178737 | { |
| 178269 | 178738 | yylhsminor.yy454 = sqlite3ExprFunction(pParse, 0, &yymsp[0].minor.yy0, 0); |
| 178270 | 178739 | } |
| 178740 | +#line 4891 "parse.sql" |
| 178271 | 178741 | yymsp[0].minor.yy454 = yylhsminor.yy454; |
| 178272 | 178742 | break; |
| 178273 | 178743 | case 196: /* expr ::= LP nexprlist COMMA expr RP */ |
| 178744 | +#line 1276 "parse.y" |
| 178274 | 178745 | { |
| 178275 | 178746 | ExprList *pList = sqlite3ExprListAppend(pParse, yymsp[-3].minor.yy14, yymsp[-1].minor.yy454); |
| 178276 | 178747 | yymsp[-4].minor.yy454 = sqlite3PExpr(pParse, TK_VECTOR, 0, 0); |
| 178277 | 178748 | if( yymsp[-4].minor.yy454 ){ |
| 178278 | 178749 | yymsp[-4].minor.yy454->x.pList = pList; |
| | @@ -178281,27 +178752,35 @@ |
| 178281 | 178752 | } |
| 178282 | 178753 | }else{ |
| 178283 | 178754 | sqlite3ExprListDelete(pParse->db, pList); |
| 178284 | 178755 | } |
| 178285 | 178756 | } |
| 178757 | +#line 4908 "parse.sql" |
| 178286 | 178758 | break; |
| 178287 | 178759 | case 197: /* expr ::= expr AND expr */ |
| 178760 | +#line 1289 "parse.y" |
| 178288 | 178761 | {yymsp[-2].minor.yy454=sqlite3ExprAnd(pParse,yymsp[-2].minor.yy454,yymsp[0].minor.yy454);} |
| 178762 | +#line 4913 "parse.sql" |
| 178289 | 178763 | break; |
| 178290 | 178764 | case 198: /* expr ::= expr OR expr */ |
| 178291 | 178765 | case 199: /* expr ::= expr LT|GT|GE|LE expr */ yytestcase(yyruleno==199); |
| 178292 | 178766 | case 200: /* expr ::= expr EQ|NE expr */ yytestcase(yyruleno==200); |
| 178293 | 178767 | case 201: /* expr ::= expr BITAND|BITOR|LSHIFT|RSHIFT expr */ yytestcase(yyruleno==201); |
| 178294 | 178768 | case 202: /* expr ::= expr PLUS|MINUS expr */ yytestcase(yyruleno==202); |
| 178295 | 178769 | case 203: /* expr ::= expr STAR|SLASH|REM expr */ yytestcase(yyruleno==203); |
| 178296 | 178770 | case 204: /* expr ::= expr CONCAT expr */ yytestcase(yyruleno==204); |
| 178771 | +#line 1290 "parse.y" |
| 178297 | 178772 | {yymsp[-2].minor.yy454=sqlite3PExpr(pParse,yymsp[-1].major,yymsp[-2].minor.yy454,yymsp[0].minor.yy454);} |
| 178773 | +#line 4924 "parse.sql" |
| 178298 | 178774 | break; |
| 178299 | 178775 | case 205: /* likeop ::= NOT LIKE_KW|MATCH */ |
| 178776 | +#line 1303 "parse.y" |
| 178300 | 178777 | {yymsp[-1].minor.yy0=yymsp[0].minor.yy0; yymsp[-1].minor.yy0.n|=0x80000000; /*yymsp[-1].minor.yy0-overwrite-yymsp[0].minor.yy0*/} |
| 178778 | +#line 4929 "parse.sql" |
| 178301 | 178779 | break; |
| 178302 | 178780 | case 206: /* expr ::= expr likeop expr */ |
| 178781 | +#line 1304 "parse.y" |
| 178303 | 178782 | { |
| 178304 | 178783 | ExprList *pList; |
| 178305 | 178784 | int bNot = yymsp[-1].minor.yy0.n & 0x80000000; |
| 178306 | 178785 | yymsp[-1].minor.yy0.n &= 0x7fffffff; |
| 178307 | 178786 | pList = sqlite3ExprListAppend(pParse,0, yymsp[0].minor.yy454); |
| | @@ -178308,12 +178787,14 @@ |
| 178308 | 178787 | pList = sqlite3ExprListAppend(pParse,pList, yymsp[-2].minor.yy454); |
| 178309 | 178788 | yymsp[-2].minor.yy454 = sqlite3ExprFunction(pParse, pList, &yymsp[-1].minor.yy0, 0); |
| 178310 | 178789 | if( bNot ) yymsp[-2].minor.yy454 = sqlite3PExpr(pParse, TK_NOT, yymsp[-2].minor.yy454, 0); |
| 178311 | 178790 | if( yymsp[-2].minor.yy454 ) yymsp[-2].minor.yy454->flags |= EP_InfixFunc; |
| 178312 | 178791 | } |
| 178792 | +#line 4943 "parse.sql" |
| 178313 | 178793 | break; |
| 178314 | 178794 | case 207: /* expr ::= expr likeop expr ESCAPE expr */ |
| 178795 | +#line 1314 "parse.y" |
| 178315 | 178796 | { |
| 178316 | 178797 | ExprList *pList; |
| 178317 | 178798 | int bNot = yymsp[-3].minor.yy0.n & 0x80000000; |
| 178318 | 178799 | yymsp[-3].minor.yy0.n &= 0x7fffffff; |
| 178319 | 178800 | pList = sqlite3ExprListAppend(pParse,0, yymsp[-2].minor.yy454); |
| | @@ -178321,46 +178802,62 @@ |
| 178321 | 178802 | pList = sqlite3ExprListAppend(pParse,pList, yymsp[0].minor.yy454); |
| 178322 | 178803 | yymsp[-4].minor.yy454 = sqlite3ExprFunction(pParse, pList, &yymsp[-3].minor.yy0, 0); |
| 178323 | 178804 | if( bNot ) yymsp[-4].minor.yy454 = sqlite3PExpr(pParse, TK_NOT, yymsp[-4].minor.yy454, 0); |
| 178324 | 178805 | if( yymsp[-4].minor.yy454 ) yymsp[-4].minor.yy454->flags |= EP_InfixFunc; |
| 178325 | 178806 | } |
| 178807 | +#line 4958 "parse.sql" |
| 178326 | 178808 | break; |
| 178327 | 178809 | case 208: /* expr ::= expr ISNULL|NOTNULL */ |
| 178810 | +#line 1326 "parse.y" |
| 178328 | 178811 | {yymsp[-1].minor.yy454 = sqlite3PExpr(pParse,yymsp[0].major,yymsp[-1].minor.yy454,0);} |
| 178812 | +#line 4963 "parse.sql" |
| 178329 | 178813 | break; |
| 178330 | 178814 | case 209: /* expr ::= expr NOT NULL */ |
| 178815 | +#line 1327 "parse.y" |
| 178331 | 178816 | {yymsp[-2].minor.yy454 = sqlite3PExpr(pParse,TK_NOTNULL,yymsp[-2].minor.yy454,0);} |
| 178817 | +#line 4968 "parse.sql" |
| 178332 | 178818 | break; |
| 178333 | 178819 | case 210: /* expr ::= expr IS expr */ |
| 178820 | +#line 1348 "parse.y" |
| 178334 | 178821 | { |
| 178335 | 178822 | yymsp[-2].minor.yy454 = sqlite3PExpr(pParse,TK_IS,yymsp[-2].minor.yy454,yymsp[0].minor.yy454); |
| 178336 | 178823 | binaryToUnaryIfNull(pParse, yymsp[0].minor.yy454, yymsp[-2].minor.yy454, TK_ISNULL); |
| 178337 | 178824 | } |
| 178825 | +#line 4976 "parse.sql" |
| 178338 | 178826 | break; |
| 178339 | 178827 | case 211: /* expr ::= expr IS NOT expr */ |
| 178828 | +#line 1352 "parse.y" |
| 178340 | 178829 | { |
| 178341 | 178830 | yymsp[-3].minor.yy454 = sqlite3PExpr(pParse,TK_ISNOT,yymsp[-3].minor.yy454,yymsp[0].minor.yy454); |
| 178342 | 178831 | binaryToUnaryIfNull(pParse, yymsp[0].minor.yy454, yymsp[-3].minor.yy454, TK_NOTNULL); |
| 178343 | 178832 | } |
| 178833 | +#line 4984 "parse.sql" |
| 178344 | 178834 | break; |
| 178345 | 178835 | case 212: /* expr ::= expr IS NOT DISTINCT FROM expr */ |
| 178836 | +#line 1356 "parse.y" |
| 178346 | 178837 | { |
| 178347 | 178838 | yymsp[-5].minor.yy454 = sqlite3PExpr(pParse,TK_IS,yymsp[-5].minor.yy454,yymsp[0].minor.yy454); |
| 178348 | 178839 | binaryToUnaryIfNull(pParse, yymsp[0].minor.yy454, yymsp[-5].minor.yy454, TK_ISNULL); |
| 178349 | 178840 | } |
| 178841 | +#line 4992 "parse.sql" |
| 178350 | 178842 | break; |
| 178351 | 178843 | case 213: /* expr ::= expr IS DISTINCT FROM expr */ |
| 178844 | +#line 1360 "parse.y" |
| 178352 | 178845 | { |
| 178353 | 178846 | yymsp[-4].minor.yy454 = sqlite3PExpr(pParse,TK_ISNOT,yymsp[-4].minor.yy454,yymsp[0].minor.yy454); |
| 178354 | 178847 | binaryToUnaryIfNull(pParse, yymsp[0].minor.yy454, yymsp[-4].minor.yy454, TK_NOTNULL); |
| 178355 | 178848 | } |
| 178849 | +#line 5000 "parse.sql" |
| 178356 | 178850 | break; |
| 178357 | 178851 | case 214: /* expr ::= NOT expr */ |
| 178358 | 178852 | case 215: /* expr ::= BITNOT expr */ yytestcase(yyruleno==215); |
| 178853 | +#line 1366 "parse.y" |
| 178359 | 178854 | {yymsp[-1].minor.yy454 = sqlite3PExpr(pParse, yymsp[-1].major, yymsp[0].minor.yy454, 0);/*A-overwrites-B*/} |
| 178855 | +#line 5006 "parse.sql" |
| 178360 | 178856 | break; |
| 178361 | 178857 | case 216: /* expr ::= PLUS|MINUS expr */ |
| 178858 | +#line 1369 "parse.y" |
| 178362 | 178859 | { |
| 178363 | 178860 | Expr *p = yymsp[0].minor.yy454; |
| 178364 | 178861 | u8 op = yymsp[-1].major + (TK_UPLUS-TK_PLUS); |
| 178365 | 178862 | assert( TK_UPLUS>TK_PLUS ); |
| 178366 | 178863 | assert( TK_UMINUS == TK_MINUS + (TK_UPLUS - TK_PLUS) ); |
| | @@ -178370,24 +178867,30 @@ |
| 178370 | 178867 | }else{ |
| 178371 | 178868 | yymsp[-1].minor.yy454 = sqlite3PExpr(pParse, op, p, 0); |
| 178372 | 178869 | /*A-overwrites-B*/ |
| 178373 | 178870 | } |
| 178374 | 178871 | } |
| 178872 | +#line 5023 "parse.sql" |
| 178375 | 178873 | break; |
| 178376 | 178874 | case 217: /* expr ::= expr PTR expr */ |
| 178875 | +#line 1383 "parse.y" |
| 178377 | 178876 | { |
| 178378 | 178877 | ExprList *pList = sqlite3ExprListAppend(pParse, 0, yymsp[-2].minor.yy454); |
| 178379 | 178878 | pList = sqlite3ExprListAppend(pParse, pList, yymsp[0].minor.yy454); |
| 178380 | 178879 | yylhsminor.yy454 = sqlite3ExprFunction(pParse, pList, &yymsp[-1].minor.yy0, 0); |
| 178381 | 178880 | } |
| 178881 | +#line 5032 "parse.sql" |
| 178382 | 178882 | yymsp[-2].minor.yy454 = yylhsminor.yy454; |
| 178383 | 178883 | break; |
| 178384 | 178884 | case 218: /* between_op ::= BETWEEN */ |
| 178385 | 178885 | case 221: /* in_op ::= IN */ yytestcase(yyruleno==221); |
| 178886 | +#line 1390 "parse.y" |
| 178386 | 178887 | {yymsp[0].minor.yy144 = 0;} |
| 178888 | +#line 5039 "parse.sql" |
| 178387 | 178889 | break; |
| 178388 | 178890 | case 220: /* expr ::= expr between_op expr AND expr */ |
| 178891 | +#line 1392 "parse.y" |
| 178389 | 178892 | { |
| 178390 | 178893 | ExprList *pList = sqlite3ExprListAppend(pParse,0, yymsp[-2].minor.yy454); |
| 178391 | 178894 | pList = sqlite3ExprListAppend(pParse,pList, yymsp[0].minor.yy454); |
| 178392 | 178895 | yymsp[-4].minor.yy454 = sqlite3PExpr(pParse, TK_BETWEEN, yymsp[-4].minor.yy454, 0); |
| 178393 | 178896 | if( yymsp[-4].minor.yy454 ){ |
| | @@ -178395,12 +178898,14 @@ |
| 178395 | 178898 | }else{ |
| 178396 | 178899 | sqlite3ExprListDelete(pParse->db, pList); |
| 178397 | 178900 | } |
| 178398 | 178901 | if( yymsp[-3].minor.yy144 ) yymsp[-4].minor.yy454 = sqlite3PExpr(pParse, TK_NOT, yymsp[-4].minor.yy454, 0); |
| 178399 | 178902 | } |
| 178903 | +#line 5054 "parse.sql" |
| 178400 | 178904 | break; |
| 178401 | 178905 | case 223: /* expr ::= expr in_op LP exprlist RP */ |
| 178906 | +#line 1407 "parse.y" |
| 178402 | 178907 | { |
| 178403 | 178908 | if( yymsp[-1].minor.yy14==0 ){ |
| 178404 | 178909 | /* Expressions of the form |
| 178405 | 178910 | ** |
| 178406 | 178911 | ** expr1 IN () |
| | @@ -178441,42 +178946,52 @@ |
| 178441 | 178946 | } |
| 178442 | 178947 | } |
| 178443 | 178948 | if( yymsp[-3].minor.yy144 ) yymsp[-4].minor.yy454 = sqlite3PExpr(pParse, TK_NOT, yymsp[-4].minor.yy454, 0); |
| 178444 | 178949 | } |
| 178445 | 178950 | } |
| 178951 | +#line 5102 "parse.sql" |
| 178446 | 178952 | break; |
| 178447 | 178953 | case 224: /* expr ::= LP select RP */ |
| 178954 | +#line 1451 "parse.y" |
| 178448 | 178955 | { |
| 178449 | 178956 | yymsp[-2].minor.yy454 = sqlite3PExpr(pParse, TK_SELECT, 0, 0); |
| 178450 | 178957 | sqlite3PExprAddSelect(pParse, yymsp[-2].minor.yy454, yymsp[-1].minor.yy555); |
| 178451 | 178958 | } |
| 178959 | +#line 5110 "parse.sql" |
| 178452 | 178960 | break; |
| 178453 | 178961 | case 225: /* expr ::= expr in_op LP select RP */ |
| 178962 | +#line 1455 "parse.y" |
| 178454 | 178963 | { |
| 178455 | 178964 | yymsp[-4].minor.yy454 = sqlite3PExpr(pParse, TK_IN, yymsp[-4].minor.yy454, 0); |
| 178456 | 178965 | sqlite3PExprAddSelect(pParse, yymsp[-4].minor.yy454, yymsp[-1].minor.yy555); |
| 178457 | 178966 | if( yymsp[-3].minor.yy144 ) yymsp[-4].minor.yy454 = sqlite3PExpr(pParse, TK_NOT, yymsp[-4].minor.yy454, 0); |
| 178458 | 178967 | } |
| 178968 | +#line 5119 "parse.sql" |
| 178459 | 178969 | break; |
| 178460 | 178970 | case 226: /* expr ::= expr in_op nm dbnm paren_exprlist */ |
| 178971 | +#line 1460 "parse.y" |
| 178461 | 178972 | { |
| 178462 | 178973 | SrcList *pSrc = sqlite3SrcListAppend(pParse, 0,&yymsp[-2].minor.yy0,&yymsp[-1].minor.yy0); |
| 178463 | 178974 | Select *pSelect = sqlite3SelectNew(pParse, 0,pSrc,0,0,0,0,0,0); |
| 178464 | 178975 | if( yymsp[0].minor.yy14 ) sqlite3SrcListFuncArgs(pParse, pSelect ? pSrc : 0, yymsp[0].minor.yy14); |
| 178465 | 178976 | yymsp[-4].minor.yy454 = sqlite3PExpr(pParse, TK_IN, yymsp[-4].minor.yy454, 0); |
| 178466 | 178977 | sqlite3PExprAddSelect(pParse, yymsp[-4].minor.yy454, pSelect); |
| 178467 | 178978 | if( yymsp[-3].minor.yy144 ) yymsp[-4].minor.yy454 = sqlite3PExpr(pParse, TK_NOT, yymsp[-4].minor.yy454, 0); |
| 178468 | 178979 | } |
| 178980 | +#line 5131 "parse.sql" |
| 178469 | 178981 | break; |
| 178470 | 178982 | case 227: /* expr ::= EXISTS LP select RP */ |
| 178983 | +#line 1468 "parse.y" |
| 178471 | 178984 | { |
| 178472 | 178985 | Expr *p; |
| 178473 | 178986 | p = yymsp[-3].minor.yy454 = sqlite3PExpr(pParse, TK_EXISTS, 0, 0); |
| 178474 | 178987 | sqlite3PExprAddSelect(pParse, p, yymsp[-1].minor.yy555); |
| 178475 | 178988 | } |
| 178989 | +#line 5140 "parse.sql" |
| 178476 | 178990 | break; |
| 178477 | 178991 | case 228: /* expr ::= CASE case_operand case_exprlist case_else END */ |
| 178992 | +#line 1476 "parse.y" |
| 178478 | 178993 | { |
| 178479 | 178994 | yymsp[-4].minor.yy454 = sqlite3PExpr(pParse, TK_CASE, yymsp[-3].minor.yy454, 0); |
| 178480 | 178995 | if( yymsp[-4].minor.yy454 ){ |
| 178481 | 178996 | yymsp[-4].minor.yy454->x.pList = yymsp[-1].minor.yy454 ? sqlite3ExprListAppend(pParse,yymsp[-2].minor.yy14,yymsp[-1].minor.yy454) : yymsp[-2].minor.yy14; |
| 178482 | 178997 | sqlite3ExprSetHeightAndFlags(pParse, yymsp[-4].minor.yy454); |
| | @@ -178483,446 +178998,627 @@ |
| 178483 | 178998 | }else{ |
| 178484 | 178999 | sqlite3ExprListDelete(pParse->db, yymsp[-2].minor.yy14); |
| 178485 | 179000 | sqlite3ExprDelete(pParse->db, yymsp[-1].minor.yy454); |
| 178486 | 179001 | } |
| 178487 | 179002 | } |
| 179003 | +#line 5154 "parse.sql" |
| 178488 | 179004 | break; |
| 178489 | 179005 | case 229: /* case_exprlist ::= case_exprlist WHEN expr THEN expr */ |
| 179006 | +#line 1488 "parse.y" |
| 178490 | 179007 | { |
| 178491 | 179008 | yymsp[-4].minor.yy14 = sqlite3ExprListAppend(pParse,yymsp[-4].minor.yy14, yymsp[-2].minor.yy454); |
| 178492 | 179009 | yymsp[-4].minor.yy14 = sqlite3ExprListAppend(pParse,yymsp[-4].minor.yy14, yymsp[0].minor.yy454); |
| 178493 | 179010 | } |
| 179011 | +#line 5162 "parse.sql" |
| 178494 | 179012 | break; |
| 178495 | 179013 | case 230: /* case_exprlist ::= WHEN expr THEN expr */ |
| 179014 | +#line 1492 "parse.y" |
| 178496 | 179015 | { |
| 178497 | 179016 | yymsp[-3].minor.yy14 = sqlite3ExprListAppend(pParse,0, yymsp[-2].minor.yy454); |
| 178498 | 179017 | yymsp[-3].minor.yy14 = sqlite3ExprListAppend(pParse,yymsp[-3].minor.yy14, yymsp[0].minor.yy454); |
| 178499 | 179018 | } |
| 179019 | +#line 5170 "parse.sql" |
| 178500 | 179020 | break; |
| 178501 | 179021 | case 235: /* nexprlist ::= nexprlist COMMA expr */ |
| 179022 | +#line 1513 "parse.y" |
| 178502 | 179023 | {yymsp[-2].minor.yy14 = sqlite3ExprListAppend(pParse,yymsp[-2].minor.yy14,yymsp[0].minor.yy454);} |
| 179024 | +#line 5175 "parse.sql" |
| 178503 | 179025 | break; |
| 178504 | 179026 | case 236: /* nexprlist ::= expr */ |
| 179027 | +#line 1515 "parse.y" |
| 178505 | 179028 | {yymsp[0].minor.yy14 = sqlite3ExprListAppend(pParse,0,yymsp[0].minor.yy454); /*A-overwrites-Y*/} |
| 179029 | +#line 5180 "parse.sql" |
| 178506 | 179030 | break; |
| 178507 | 179031 | case 238: /* paren_exprlist ::= LP exprlist RP */ |
| 178508 | 179032 | case 243: /* eidlist_opt ::= LP eidlist RP */ yytestcase(yyruleno==243); |
| 179033 | +#line 1523 "parse.y" |
| 178509 | 179034 | {yymsp[-2].minor.yy14 = yymsp[-1].minor.yy14;} |
| 179035 | +#line 5186 "parse.sql" |
| 178510 | 179036 | break; |
| 178511 | 179037 | case 239: /* cmd ::= createkw uniqueflag INDEX ifnotexists nm dbnm ON nm LP sortlist RP where_opt */ |
| 179038 | +#line 1530 "parse.y" |
| 178512 | 179039 | { |
| 178513 | 179040 | sqlite3CreateIndex(pParse, &yymsp[-7].minor.yy0, &yymsp[-6].minor.yy0, |
| 178514 | 179041 | sqlite3SrcListAppend(pParse,0,&yymsp[-4].minor.yy0,0), yymsp[-2].minor.yy14, yymsp[-10].minor.yy144, |
| 178515 | 179042 | &yymsp[-11].minor.yy0, yymsp[0].minor.yy454, SQLITE_SO_ASC, yymsp[-8].minor.yy144, SQLITE_IDXTYPE_APPDEF); |
| 178516 | 179043 | if( IN_RENAME_OBJECT && pParse->pNewIndex ){ |
| 178517 | 179044 | sqlite3RenameTokenMap(pParse, pParse->pNewIndex->zName, &yymsp[-4].minor.yy0); |
| 178518 | 179045 | } |
| 178519 | 179046 | } |
| 179047 | +#line 5198 "parse.sql" |
| 178520 | 179048 | break; |
| 178521 | 179049 | case 240: /* uniqueflag ::= UNIQUE */ |
| 178522 | 179050 | case 282: /* raisetype ::= ABORT */ yytestcase(yyruleno==282); |
| 179051 | +#line 1540 "parse.y" |
| 178523 | 179052 | {yymsp[0].minor.yy144 = OE_Abort;} |
| 179053 | +#line 5204 "parse.sql" |
| 178524 | 179054 | break; |
| 178525 | 179055 | case 241: /* uniqueflag ::= */ |
| 179056 | +#line 1541 "parse.y" |
| 178526 | 179057 | {yymsp[1].minor.yy144 = OE_None;} |
| 179058 | +#line 5209 "parse.sql" |
| 178527 | 179059 | break; |
| 178528 | 179060 | case 244: /* eidlist ::= eidlist COMMA nm collate sortorder */ |
| 179061 | +#line 1591 "parse.y" |
| 178529 | 179062 | { |
| 178530 | 179063 | yymsp[-4].minor.yy14 = parserAddExprIdListTerm(pParse, yymsp[-4].minor.yy14, &yymsp[-2].minor.yy0, yymsp[-1].minor.yy144, yymsp[0].minor.yy144); |
| 178531 | 179064 | } |
| 179065 | +#line 5216 "parse.sql" |
| 178532 | 179066 | break; |
| 178533 | 179067 | case 245: /* eidlist ::= nm collate sortorder */ |
| 179068 | +#line 1594 "parse.y" |
| 178534 | 179069 | { |
| 178535 | 179070 | yymsp[-2].minor.yy14 = parserAddExprIdListTerm(pParse, 0, &yymsp[-2].minor.yy0, yymsp[-1].minor.yy144, yymsp[0].minor.yy144); /*A-overwrites-Y*/ |
| 178536 | 179071 | } |
| 179072 | +#line 5223 "parse.sql" |
| 178537 | 179073 | break; |
| 178538 | 179074 | case 248: /* cmd ::= DROP INDEX ifexists fullname */ |
| 179075 | +#line 1605 "parse.y" |
| 178539 | 179076 | {sqlite3DropIndex(pParse, yymsp[0].minor.yy203, yymsp[-1].minor.yy144);} |
| 179077 | +#line 5228 "parse.sql" |
| 178540 | 179078 | break; |
| 178541 | 179079 | case 249: /* cmd ::= VACUUM vinto */ |
| 179080 | +#line 1612 "parse.y" |
| 178542 | 179081 | {sqlite3Vacuum(pParse,0,yymsp[0].minor.yy454);} |
| 179082 | +#line 5233 "parse.sql" |
| 178543 | 179083 | break; |
| 178544 | 179084 | case 250: /* cmd ::= VACUUM nm vinto */ |
| 179085 | +#line 1613 "parse.y" |
| 178545 | 179086 | {sqlite3Vacuum(pParse,&yymsp[-1].minor.yy0,yymsp[0].minor.yy454);} |
| 179087 | +#line 5238 "parse.sql" |
| 178546 | 179088 | break; |
| 178547 | 179089 | case 253: /* cmd ::= PRAGMA nm dbnm */ |
| 179090 | +#line 1621 "parse.y" |
| 178548 | 179091 | {sqlite3Pragma(pParse,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy0,0,0);} |
| 179092 | +#line 5243 "parse.sql" |
| 178549 | 179093 | break; |
| 178550 | 179094 | case 254: /* cmd ::= PRAGMA nm dbnm EQ nmnum */ |
| 179095 | +#line 1622 "parse.y" |
| 178551 | 179096 | {sqlite3Pragma(pParse,&yymsp[-3].minor.yy0,&yymsp[-2].minor.yy0,&yymsp[0].minor.yy0,0);} |
| 179097 | +#line 5248 "parse.sql" |
| 178552 | 179098 | break; |
| 178553 | 179099 | case 255: /* cmd ::= PRAGMA nm dbnm LP nmnum RP */ |
| 179100 | +#line 1623 "parse.y" |
| 178554 | 179101 | {sqlite3Pragma(pParse,&yymsp[-4].minor.yy0,&yymsp[-3].minor.yy0,&yymsp[-1].minor.yy0,0);} |
| 179102 | +#line 5253 "parse.sql" |
| 178555 | 179103 | break; |
| 178556 | 179104 | case 256: /* cmd ::= PRAGMA nm dbnm EQ minus_num */ |
| 179105 | +#line 1625 "parse.y" |
| 178557 | 179106 | {sqlite3Pragma(pParse,&yymsp[-3].minor.yy0,&yymsp[-2].minor.yy0,&yymsp[0].minor.yy0,1);} |
| 179107 | +#line 5258 "parse.sql" |
| 178558 | 179108 | break; |
| 178559 | 179109 | case 257: /* cmd ::= PRAGMA nm dbnm LP minus_num RP */ |
| 179110 | +#line 1627 "parse.y" |
| 178560 | 179111 | {sqlite3Pragma(pParse,&yymsp[-4].minor.yy0,&yymsp[-3].minor.yy0,&yymsp[-1].minor.yy0,1);} |
| 179112 | +#line 5263 "parse.sql" |
| 178561 | 179113 | break; |
| 178562 | 179114 | case 260: /* cmd ::= createkw trigger_decl BEGIN trigger_cmd_list END */ |
| 179115 | +#line 1643 "parse.y" |
| 178563 | 179116 | { |
| 178564 | 179117 | Token all; |
| 178565 | 179118 | all.z = yymsp[-3].minor.yy0.z; |
| 178566 | 179119 | all.n = (int)(yymsp[0].minor.yy0.z - yymsp[-3].minor.yy0.z) + yymsp[0].minor.yy0.n; |
| 178567 | 179120 | sqlite3FinishTrigger(pParse, yymsp[-1].minor.yy427, &all); |
| 178568 | 179121 | } |
| 179122 | +#line 5273 "parse.sql" |
| 178569 | 179123 | break; |
| 178570 | 179124 | case 261: /* trigger_decl ::= temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON fullname foreach_clause when_clause */ |
| 179125 | +#line 1652 "parse.y" |
| 178571 | 179126 | { |
| 178572 | 179127 | sqlite3BeginTrigger(pParse, &yymsp[-7].minor.yy0, &yymsp[-6].minor.yy0, yymsp[-5].minor.yy144, yymsp[-4].minor.yy286.a, yymsp[-4].minor.yy286.b, yymsp[-2].minor.yy203, yymsp[0].minor.yy454, yymsp[-10].minor.yy144, yymsp[-8].minor.yy144); |
| 178573 | 179128 | yymsp[-10].minor.yy0 = (yymsp[-6].minor.yy0.n==0?yymsp[-7].minor.yy0:yymsp[-6].minor.yy0); /*A-overwrites-T*/ |
| 178574 | 179129 | } |
| 179130 | +#line 5281 "parse.sql" |
| 178575 | 179131 | break; |
| 178576 | 179132 | case 262: /* trigger_time ::= BEFORE|AFTER */ |
| 179133 | +#line 1658 "parse.y" |
| 178577 | 179134 | { yymsp[0].minor.yy144 = yymsp[0].major; /*A-overwrites-X*/ } |
| 179135 | +#line 5286 "parse.sql" |
| 178578 | 179136 | break; |
| 178579 | 179137 | case 263: /* trigger_time ::= INSTEAD OF */ |
| 179138 | +#line 1659 "parse.y" |
| 178580 | 179139 | { yymsp[-1].minor.yy144 = TK_INSTEAD;} |
| 179140 | +#line 5291 "parse.sql" |
| 178581 | 179141 | break; |
| 178582 | 179142 | case 264: /* trigger_time ::= */ |
| 179143 | +#line 1660 "parse.y" |
| 178583 | 179144 | { yymsp[1].minor.yy144 = TK_BEFORE; } |
| 179145 | +#line 5296 "parse.sql" |
| 178584 | 179146 | break; |
| 178585 | 179147 | case 265: /* trigger_event ::= DELETE|INSERT */ |
| 178586 | 179148 | case 266: /* trigger_event ::= UPDATE */ yytestcase(yyruleno==266); |
| 179149 | +#line 1664 "parse.y" |
| 178587 | 179150 | {yymsp[0].minor.yy286.a = yymsp[0].major; /*A-overwrites-X*/ yymsp[0].minor.yy286.b = 0;} |
| 179151 | +#line 5302 "parse.sql" |
| 178588 | 179152 | break; |
| 178589 | 179153 | case 267: /* trigger_event ::= UPDATE OF idlist */ |
| 179154 | +#line 1666 "parse.y" |
| 178590 | 179155 | {yymsp[-2].minor.yy286.a = TK_UPDATE; yymsp[-2].minor.yy286.b = yymsp[0].minor.yy132;} |
| 179156 | +#line 5307 "parse.sql" |
| 178591 | 179157 | break; |
| 178592 | 179158 | case 268: /* when_clause ::= */ |
| 178593 | 179159 | case 287: /* key_opt ::= */ yytestcase(yyruleno==287); |
| 179160 | +#line 1673 "parse.y" |
| 178594 | 179161 | { yymsp[1].minor.yy454 = 0; } |
| 179162 | +#line 5313 "parse.sql" |
| 178595 | 179163 | break; |
| 178596 | 179164 | case 269: /* when_clause ::= WHEN expr */ |
| 178597 | 179165 | case 288: /* key_opt ::= KEY expr */ yytestcase(yyruleno==288); |
| 179166 | +#line 1674 "parse.y" |
| 178598 | 179167 | { yymsp[-1].minor.yy454 = yymsp[0].minor.yy454; } |
| 179168 | +#line 5319 "parse.sql" |
| 178599 | 179169 | break; |
| 178600 | 179170 | case 270: /* trigger_cmd_list ::= trigger_cmd_list trigger_cmd SEMI */ |
| 179171 | +#line 1678 "parse.y" |
| 178601 | 179172 | { |
| 178602 | 179173 | assert( yymsp[-2].minor.yy427!=0 ); |
| 178603 | 179174 | yymsp[-2].minor.yy427->pLast->pNext = yymsp[-1].minor.yy427; |
| 178604 | 179175 | yymsp[-2].minor.yy427->pLast = yymsp[-1].minor.yy427; |
| 178605 | 179176 | } |
| 179177 | +#line 5328 "parse.sql" |
| 178606 | 179178 | break; |
| 178607 | 179179 | case 271: /* trigger_cmd_list ::= trigger_cmd SEMI */ |
| 179180 | +#line 1683 "parse.y" |
| 178608 | 179181 | { |
| 178609 | 179182 | assert( yymsp[-1].minor.yy427!=0 ); |
| 178610 | 179183 | yymsp[-1].minor.yy427->pLast = yymsp[-1].minor.yy427; |
| 178611 | 179184 | } |
| 179185 | +#line 5336 "parse.sql" |
| 178612 | 179186 | break; |
| 178613 | 179187 | case 272: /* trnm ::= nm DOT nm */ |
| 179188 | +#line 1694 "parse.y" |
| 178614 | 179189 | { |
| 178615 | 179190 | yymsp[-2].minor.yy0 = yymsp[0].minor.yy0; |
| 178616 | 179191 | sqlite3ErrorMsg(pParse, |
| 178617 | 179192 | "qualified table names are not allowed on INSERT, UPDATE, and DELETE " |
| 178618 | 179193 | "statements within triggers"); |
| 178619 | 179194 | } |
| 179195 | +#line 5346 "parse.sql" |
| 178620 | 179196 | break; |
| 178621 | 179197 | case 273: /* tridxby ::= INDEXED BY nm */ |
| 179198 | +#line 1706 "parse.y" |
| 178622 | 179199 | { |
| 178623 | 179200 | sqlite3ErrorMsg(pParse, |
| 178624 | 179201 | "the INDEXED BY clause is not allowed on UPDATE or DELETE statements " |
| 178625 | 179202 | "within triggers"); |
| 178626 | 179203 | } |
| 179204 | +#line 5355 "parse.sql" |
| 178627 | 179205 | break; |
| 178628 | 179206 | case 274: /* tridxby ::= NOT INDEXED */ |
| 179207 | +#line 1711 "parse.y" |
| 178629 | 179208 | { |
| 178630 | 179209 | sqlite3ErrorMsg(pParse, |
| 178631 | 179210 | "the NOT INDEXED clause is not allowed on UPDATE or DELETE statements " |
| 178632 | 179211 | "within triggers"); |
| 178633 | 179212 | } |
| 179213 | +#line 5364 "parse.sql" |
| 178634 | 179214 | break; |
| 178635 | 179215 | case 275: /* trigger_cmd ::= UPDATE orconf trnm tridxby SET setlist from where_opt scanpt */ |
| 179216 | +#line 1724 "parse.y" |
| 178636 | 179217 | {yylhsminor.yy427 = sqlite3TriggerUpdateStep(pParse, &yymsp[-6].minor.yy0, yymsp[-2].minor.yy203, yymsp[-3].minor.yy14, yymsp[-1].minor.yy454, yymsp[-7].minor.yy144, yymsp[-8].minor.yy0.z, yymsp[0].minor.yy168);} |
| 179218 | +#line 5369 "parse.sql" |
| 178637 | 179219 | yymsp[-8].minor.yy427 = yylhsminor.yy427; |
| 178638 | 179220 | break; |
| 178639 | 179221 | case 276: /* trigger_cmd ::= scanpt insert_cmd INTO trnm idlist_opt select upsert scanpt */ |
| 179222 | +#line 1728 "parse.y" |
| 178640 | 179223 | { |
| 178641 | 179224 | yylhsminor.yy427 = sqlite3TriggerInsertStep(pParse,&yymsp[-4].minor.yy0,yymsp[-3].minor.yy132,yymsp[-2].minor.yy555,yymsp[-6].minor.yy144,yymsp[-1].minor.yy122,yymsp[-7].minor.yy168,yymsp[0].minor.yy168);/*yylhsminor.yy427-overwrites-yymsp[-6].minor.yy144*/ |
| 178642 | 179225 | } |
| 179226 | +#line 5377 "parse.sql" |
| 178643 | 179227 | yymsp[-7].minor.yy427 = yylhsminor.yy427; |
| 178644 | 179228 | break; |
| 178645 | 179229 | case 277: /* trigger_cmd ::= DELETE FROM trnm tridxby where_opt scanpt */ |
| 179230 | +#line 1733 "parse.y" |
| 178646 | 179231 | {yylhsminor.yy427 = sqlite3TriggerDeleteStep(pParse, &yymsp[-3].minor.yy0, yymsp[-1].minor.yy454, yymsp[-5].minor.yy0.z, yymsp[0].minor.yy168);} |
| 179232 | +#line 5383 "parse.sql" |
| 178647 | 179233 | yymsp[-5].minor.yy427 = yylhsminor.yy427; |
| 178648 | 179234 | break; |
| 178649 | 179235 | case 278: /* trigger_cmd ::= scanpt select scanpt */ |
| 179236 | +#line 1737 "parse.y" |
| 178650 | 179237 | {yylhsminor.yy427 = sqlite3TriggerSelectStep(pParse->db, yymsp[-1].minor.yy555, yymsp[-2].minor.yy168, yymsp[0].minor.yy168); /*yylhsminor.yy427-overwrites-yymsp[-1].minor.yy555*/} |
| 179238 | +#line 5389 "parse.sql" |
| 178651 | 179239 | yymsp[-2].minor.yy427 = yylhsminor.yy427; |
| 178652 | 179240 | break; |
| 178653 | 179241 | case 279: /* expr ::= RAISE LP IGNORE RP */ |
| 179242 | +#line 1740 "parse.y" |
| 178654 | 179243 | { |
| 178655 | 179244 | yymsp[-3].minor.yy454 = sqlite3PExpr(pParse, TK_RAISE, 0, 0); |
| 178656 | 179245 | if( yymsp[-3].minor.yy454 ){ |
| 178657 | 179246 | yymsp[-3].minor.yy454->affExpr = OE_Ignore; |
| 178658 | 179247 | } |
| 178659 | 179248 | } |
| 179249 | +#line 5400 "parse.sql" |
| 178660 | 179250 | break; |
| 178661 | 179251 | case 280: /* expr ::= RAISE LP raisetype COMMA expr RP */ |
| 179252 | +#line 1746 "parse.y" |
| 178662 | 179253 | { |
| 178663 | 179254 | yymsp[-5].minor.yy454 = sqlite3PExpr(pParse, TK_RAISE, yymsp[-1].minor.yy454, 0); |
| 178664 | 179255 | if( yymsp[-5].minor.yy454 ) { |
| 178665 | 179256 | yymsp[-5].minor.yy454->affExpr = (char)yymsp[-3].minor.yy144; |
| 178666 | 179257 | } |
| 178667 | 179258 | } |
| 179259 | +#line 5410 "parse.sql" |
| 178668 | 179260 | break; |
| 178669 | 179261 | case 281: /* raisetype ::= ROLLBACK */ |
| 179262 | +#line 1755 "parse.y" |
| 178670 | 179263 | {yymsp[0].minor.yy144 = OE_Rollback;} |
| 179264 | +#line 5415 "parse.sql" |
| 178671 | 179265 | break; |
| 178672 | 179266 | case 283: /* raisetype ::= FAIL */ |
| 179267 | +#line 1757 "parse.y" |
| 178673 | 179268 | {yymsp[0].minor.yy144 = OE_Fail;} |
| 179269 | +#line 5420 "parse.sql" |
| 178674 | 179270 | break; |
| 178675 | 179271 | case 284: /* cmd ::= DROP TRIGGER ifexists fullname */ |
| 179272 | +#line 1762 "parse.y" |
| 178676 | 179273 | { |
| 178677 | 179274 | sqlite3DropTrigger(pParse,yymsp[0].minor.yy203,yymsp[-1].minor.yy144); |
| 178678 | 179275 | } |
| 179276 | +#line 5427 "parse.sql" |
| 178679 | 179277 | break; |
| 178680 | 179278 | case 285: /* cmd ::= ATTACH database_kw_opt expr AS expr key_opt */ |
| 179279 | +#line 1769 "parse.y" |
| 178681 | 179280 | { |
| 178682 | 179281 | sqlite3Attach(pParse, yymsp[-3].minor.yy454, yymsp[-1].minor.yy454, yymsp[0].minor.yy454); |
| 178683 | 179282 | } |
| 179283 | +#line 5434 "parse.sql" |
| 178684 | 179284 | break; |
| 178685 | 179285 | case 286: /* cmd ::= DETACH database_kw_opt expr */ |
| 179286 | +#line 1772 "parse.y" |
| 178686 | 179287 | { |
| 178687 | 179288 | sqlite3Detach(pParse, yymsp[0].minor.yy454); |
| 178688 | 179289 | } |
| 179290 | +#line 5441 "parse.sql" |
| 178689 | 179291 | break; |
| 178690 | 179292 | case 289: /* cmd ::= REINDEX */ |
| 179293 | +#line 1787 "parse.y" |
| 178691 | 179294 | {sqlite3Reindex(pParse, 0, 0);} |
| 179295 | +#line 5446 "parse.sql" |
| 178692 | 179296 | break; |
| 178693 | 179297 | case 290: /* cmd ::= REINDEX nm dbnm */ |
| 179298 | +#line 1788 "parse.y" |
| 178694 | 179299 | {sqlite3Reindex(pParse, &yymsp[-1].minor.yy0, &yymsp[0].minor.yy0);} |
| 179300 | +#line 5451 "parse.sql" |
| 178695 | 179301 | break; |
| 178696 | 179302 | case 291: /* cmd ::= ANALYZE */ |
| 179303 | +#line 1793 "parse.y" |
| 178697 | 179304 | {sqlite3Analyze(pParse, 0, 0);} |
| 179305 | +#line 5456 "parse.sql" |
| 178698 | 179306 | break; |
| 178699 | 179307 | case 292: /* cmd ::= ANALYZE nm dbnm */ |
| 179308 | +#line 1794 "parse.y" |
| 178700 | 179309 | {sqlite3Analyze(pParse, &yymsp[-1].minor.yy0, &yymsp[0].minor.yy0);} |
| 179310 | +#line 5461 "parse.sql" |
| 178701 | 179311 | break; |
| 178702 | 179312 | case 293: /* cmd ::= ALTER TABLE fullname RENAME TO nm */ |
| 179313 | +#line 1800 "parse.y" |
| 178703 | 179314 | { |
| 178704 | 179315 | sqlite3AlterRenameTable(pParse,yymsp[-3].minor.yy203,&yymsp[0].minor.yy0); |
| 178705 | 179316 | } |
| 179317 | +#line 5468 "parse.sql" |
| 178706 | 179318 | break; |
| 178707 | 179319 | case 294: /* cmd ::= ALTER TABLE add_column_fullname ADD kwcolumn_opt columnname carglist */ |
| 179320 | +#line 1804 "parse.y" |
| 178708 | 179321 | { |
| 178709 | 179322 | yymsp[-1].minor.yy0.n = (int)(pParse->sLastToken.z-yymsp[-1].minor.yy0.z) + pParse->sLastToken.n; |
| 178710 | 179323 | sqlite3AlterFinishAddColumn(pParse, &yymsp[-1].minor.yy0); |
| 178711 | 179324 | } |
| 179325 | +#line 5476 "parse.sql" |
| 178712 | 179326 | break; |
| 178713 | 179327 | case 295: /* cmd ::= ALTER TABLE fullname DROP kwcolumn_opt nm */ |
| 179328 | +#line 1808 "parse.y" |
| 178714 | 179329 | { |
| 178715 | 179330 | sqlite3AlterDropColumn(pParse, yymsp[-3].minor.yy203, &yymsp[0].minor.yy0); |
| 178716 | 179331 | } |
| 179332 | +#line 5483 "parse.sql" |
| 178717 | 179333 | break; |
| 178718 | 179334 | case 296: /* add_column_fullname ::= fullname */ |
| 179335 | +#line 1812 "parse.y" |
| 178719 | 179336 | { |
| 178720 | 179337 | disableLookaside(pParse); |
| 178721 | 179338 | sqlite3AlterBeginAddColumn(pParse, yymsp[0].minor.yy203); |
| 178722 | 179339 | } |
| 179340 | +#line 5491 "parse.sql" |
| 178723 | 179341 | break; |
| 178724 | 179342 | case 297: /* cmd ::= ALTER TABLE fullname RENAME kwcolumn_opt nm TO nm */ |
| 179343 | +#line 1816 "parse.y" |
| 178725 | 179344 | { |
| 178726 | 179345 | sqlite3AlterRenameColumn(pParse, yymsp[-5].minor.yy203, &yymsp[-2].minor.yy0, &yymsp[0].minor.yy0); |
| 178727 | 179346 | } |
| 179347 | +#line 5498 "parse.sql" |
| 178728 | 179348 | break; |
| 178729 | 179349 | case 298: /* cmd ::= create_vtab */ |
| 179350 | +#line 1828 "parse.y" |
| 178730 | 179351 | {sqlite3VtabFinishParse(pParse,0);} |
| 179352 | +#line 5503 "parse.sql" |
| 178731 | 179353 | break; |
| 178732 | 179354 | case 299: /* cmd ::= create_vtab LP vtabarglist RP */ |
| 179355 | +#line 1829 "parse.y" |
| 178733 | 179356 | {sqlite3VtabFinishParse(pParse,&yymsp[0].minor.yy0);} |
| 179357 | +#line 5508 "parse.sql" |
| 178734 | 179358 | break; |
| 178735 | 179359 | case 300: /* create_vtab ::= createkw VIRTUAL TABLE ifnotexists nm dbnm USING nm */ |
| 179360 | +#line 1831 "parse.y" |
| 178736 | 179361 | { |
| 178737 | 179362 | sqlite3VtabBeginParse(pParse, &yymsp[-3].minor.yy0, &yymsp[-2].minor.yy0, &yymsp[0].minor.yy0, yymsp[-4].minor.yy144); |
| 178738 | 179363 | } |
| 179364 | +#line 5515 "parse.sql" |
| 178739 | 179365 | break; |
| 178740 | 179366 | case 301: /* vtabarg ::= */ |
| 179367 | +#line 1836 "parse.y" |
| 178741 | 179368 | {sqlite3VtabArgInit(pParse);} |
| 179369 | +#line 5520 "parse.sql" |
| 178742 | 179370 | break; |
| 178743 | 179371 | case 302: /* vtabargtoken ::= ANY */ |
| 178744 | 179372 | case 303: /* vtabargtoken ::= lp anylist RP */ yytestcase(yyruleno==303); |
| 178745 | 179373 | case 304: /* lp ::= LP */ yytestcase(yyruleno==304); |
| 179374 | +#line 1838 "parse.y" |
| 178746 | 179375 | {sqlite3VtabArgExtend(pParse,&yymsp[0].minor.yy0);} |
| 179376 | +#line 5527 "parse.sql" |
| 178747 | 179377 | break; |
| 178748 | 179378 | case 305: /* with ::= WITH wqlist */ |
| 178749 | 179379 | case 306: /* with ::= WITH RECURSIVE wqlist */ yytestcase(yyruleno==306); |
| 179380 | +#line 1855 "parse.y" |
| 178750 | 179381 | { sqlite3WithPush(pParse, yymsp[0].minor.yy59, 1); } |
| 179382 | +#line 5533 "parse.sql" |
| 178751 | 179383 | break; |
| 178752 | 179384 | case 307: /* wqas ::= AS */ |
| 179385 | +#line 1859 "parse.y" |
| 178753 | 179386 | {yymsp[0].minor.yy462 = M10d_Any;} |
| 179387 | +#line 5538 "parse.sql" |
| 178754 | 179388 | break; |
| 178755 | 179389 | case 308: /* wqas ::= AS MATERIALIZED */ |
| 179390 | +#line 1860 "parse.y" |
| 178756 | 179391 | {yymsp[-1].minor.yy462 = M10d_Yes;} |
| 179392 | +#line 5543 "parse.sql" |
| 178757 | 179393 | break; |
| 178758 | 179394 | case 309: /* wqas ::= AS NOT MATERIALIZED */ |
| 179395 | +#line 1861 "parse.y" |
| 178759 | 179396 | {yymsp[-2].minor.yy462 = M10d_No;} |
| 179397 | +#line 5548 "parse.sql" |
| 178760 | 179398 | break; |
| 178761 | 179399 | case 310: /* wqitem ::= withnm eidlist_opt wqas LP select RP */ |
| 179400 | +#line 1862 "parse.y" |
| 178762 | 179401 | { |
| 178763 | 179402 | yymsp[-5].minor.yy67 = sqlite3CteNew(pParse, &yymsp[-5].minor.yy0, yymsp[-4].minor.yy14, yymsp[-1].minor.yy555, yymsp[-3].minor.yy462); /*A-overwrites-X*/ |
| 178764 | 179403 | } |
| 179404 | +#line 5555 "parse.sql" |
| 178765 | 179405 | break; |
| 178766 | 179406 | case 311: /* withnm ::= nm */ |
| 179407 | +#line 1865 "parse.y" |
| 178767 | 179408 | {pParse->bHasWith = 1;} |
| 179409 | +#line 5560 "parse.sql" |
| 178768 | 179410 | break; |
| 178769 | 179411 | case 312: /* wqlist ::= wqitem */ |
| 179412 | +#line 1866 "parse.y" |
| 178770 | 179413 | { |
| 178771 | 179414 | yymsp[0].minor.yy59 = sqlite3WithAdd(pParse, 0, yymsp[0].minor.yy67); /*A-overwrites-X*/ |
| 178772 | 179415 | } |
| 179416 | +#line 5567 "parse.sql" |
| 178773 | 179417 | break; |
| 178774 | 179418 | case 313: /* wqlist ::= wqlist COMMA wqitem */ |
| 179419 | +#line 1869 "parse.y" |
| 178775 | 179420 | { |
| 178776 | 179421 | yymsp[-2].minor.yy59 = sqlite3WithAdd(pParse, yymsp[-2].minor.yy59, yymsp[0].minor.yy67); |
| 178777 | 179422 | } |
| 179423 | +#line 5574 "parse.sql" |
| 178778 | 179424 | break; |
| 178779 | 179425 | case 314: /* windowdefn_list ::= windowdefn_list COMMA windowdefn */ |
| 179426 | +#line 1884 "parse.y" |
| 178780 | 179427 | { |
| 178781 | 179428 | assert( yymsp[0].minor.yy211!=0 ); |
| 178782 | 179429 | sqlite3WindowChain(pParse, yymsp[0].minor.yy211, yymsp[-2].minor.yy211); |
| 178783 | 179430 | yymsp[0].minor.yy211->pNextWin = yymsp[-2].minor.yy211; |
| 178784 | 179431 | yylhsminor.yy211 = yymsp[0].minor.yy211; |
| 178785 | 179432 | } |
| 179433 | +#line 5584 "parse.sql" |
| 178786 | 179434 | yymsp[-2].minor.yy211 = yylhsminor.yy211; |
| 178787 | 179435 | break; |
| 178788 | 179436 | case 315: /* windowdefn ::= nm AS LP window RP */ |
| 179437 | +#line 1893 "parse.y" |
| 178789 | 179438 | { |
| 178790 | 179439 | if( ALWAYS(yymsp[-1].minor.yy211) ){ |
| 178791 | 179440 | yymsp[-1].minor.yy211->zName = sqlite3DbStrNDup(pParse->db, yymsp[-4].minor.yy0.z, yymsp[-4].minor.yy0.n); |
| 178792 | 179441 | } |
| 178793 | 179442 | yylhsminor.yy211 = yymsp[-1].minor.yy211; |
| 178794 | 179443 | } |
| 179444 | +#line 5595 "parse.sql" |
| 178795 | 179445 | yymsp[-4].minor.yy211 = yylhsminor.yy211; |
| 178796 | 179446 | break; |
| 178797 | 179447 | case 316: /* window ::= PARTITION BY nexprlist orderby_opt frame_opt */ |
| 179448 | +#line 1927 "parse.y" |
| 178798 | 179449 | { |
| 178799 | 179450 | yymsp[-4].minor.yy211 = sqlite3WindowAssemble(pParse, yymsp[0].minor.yy211, yymsp[-2].minor.yy14, yymsp[-1].minor.yy14, 0); |
| 178800 | 179451 | } |
| 179452 | +#line 5603 "parse.sql" |
| 178801 | 179453 | break; |
| 178802 | 179454 | case 317: /* window ::= nm PARTITION BY nexprlist orderby_opt frame_opt */ |
| 179455 | +#line 1930 "parse.y" |
| 178803 | 179456 | { |
| 178804 | 179457 | yylhsminor.yy211 = sqlite3WindowAssemble(pParse, yymsp[0].minor.yy211, yymsp[-2].minor.yy14, yymsp[-1].minor.yy14, &yymsp[-5].minor.yy0); |
| 178805 | 179458 | } |
| 179459 | +#line 5610 "parse.sql" |
| 178806 | 179460 | yymsp[-5].minor.yy211 = yylhsminor.yy211; |
| 178807 | 179461 | break; |
| 178808 | 179462 | case 318: /* window ::= ORDER BY sortlist frame_opt */ |
| 179463 | +#line 1933 "parse.y" |
| 178809 | 179464 | { |
| 178810 | 179465 | yymsp[-3].minor.yy211 = sqlite3WindowAssemble(pParse, yymsp[0].minor.yy211, 0, yymsp[-1].minor.yy14, 0); |
| 178811 | 179466 | } |
| 179467 | +#line 5618 "parse.sql" |
| 178812 | 179468 | break; |
| 178813 | 179469 | case 319: /* window ::= nm ORDER BY sortlist frame_opt */ |
| 179470 | +#line 1936 "parse.y" |
| 178814 | 179471 | { |
| 178815 | 179472 | yylhsminor.yy211 = sqlite3WindowAssemble(pParse, yymsp[0].minor.yy211, 0, yymsp[-1].minor.yy14, &yymsp[-4].minor.yy0); |
| 178816 | 179473 | } |
| 179474 | +#line 5625 "parse.sql" |
| 178817 | 179475 | yymsp[-4].minor.yy211 = yylhsminor.yy211; |
| 178818 | 179476 | break; |
| 178819 | 179477 | case 320: /* window ::= nm frame_opt */ |
| 179478 | +#line 1940 "parse.y" |
| 178820 | 179479 | { |
| 178821 | 179480 | yylhsminor.yy211 = sqlite3WindowAssemble(pParse, yymsp[0].minor.yy211, 0, 0, &yymsp[-1].minor.yy0); |
| 178822 | 179481 | } |
| 179482 | +#line 5633 "parse.sql" |
| 178823 | 179483 | yymsp[-1].minor.yy211 = yylhsminor.yy211; |
| 178824 | 179484 | break; |
| 178825 | 179485 | case 321: /* frame_opt ::= */ |
| 179486 | +#line 1944 "parse.y" |
| 178826 | 179487 | { |
| 178827 | 179488 | yymsp[1].minor.yy211 = sqlite3WindowAlloc(pParse, 0, TK_UNBOUNDED, 0, TK_CURRENT, 0, 0); |
| 178828 | 179489 | } |
| 179490 | +#line 5641 "parse.sql" |
| 178829 | 179491 | break; |
| 178830 | 179492 | case 322: /* frame_opt ::= range_or_rows frame_bound_s frame_exclude_opt */ |
| 179493 | +#line 1947 "parse.y" |
| 178831 | 179494 | { |
| 178832 | 179495 | yylhsminor.yy211 = sqlite3WindowAlloc(pParse, yymsp[-2].minor.yy144, yymsp[-1].minor.yy509.eType, yymsp[-1].minor.yy509.pExpr, TK_CURRENT, 0, yymsp[0].minor.yy462); |
| 178833 | 179496 | } |
| 179497 | +#line 5648 "parse.sql" |
| 178834 | 179498 | yymsp[-2].minor.yy211 = yylhsminor.yy211; |
| 178835 | 179499 | break; |
| 178836 | 179500 | case 323: /* frame_opt ::= range_or_rows BETWEEN frame_bound_s AND frame_bound_e frame_exclude_opt */ |
| 179501 | +#line 1951 "parse.y" |
| 178837 | 179502 | { |
| 178838 | 179503 | yylhsminor.yy211 = sqlite3WindowAlloc(pParse, yymsp[-5].minor.yy144, yymsp[-3].minor.yy509.eType, yymsp[-3].minor.yy509.pExpr, yymsp[-1].minor.yy509.eType, yymsp[-1].minor.yy509.pExpr, yymsp[0].minor.yy462); |
| 178839 | 179504 | } |
| 179505 | +#line 5656 "parse.sql" |
| 178840 | 179506 | yymsp[-5].minor.yy211 = yylhsminor.yy211; |
| 178841 | 179507 | break; |
| 178842 | 179508 | case 325: /* frame_bound_s ::= frame_bound */ |
| 178843 | 179509 | case 327: /* frame_bound_e ::= frame_bound */ yytestcase(yyruleno==327); |
| 179510 | +#line 1957 "parse.y" |
| 178844 | 179511 | {yylhsminor.yy509 = yymsp[0].minor.yy509;} |
| 179512 | +#line 5663 "parse.sql" |
| 178845 | 179513 | yymsp[0].minor.yy509 = yylhsminor.yy509; |
| 178846 | 179514 | break; |
| 178847 | 179515 | case 326: /* frame_bound_s ::= UNBOUNDED PRECEDING */ |
| 178848 | 179516 | case 328: /* frame_bound_e ::= UNBOUNDED FOLLOWING */ yytestcase(yyruleno==328); |
| 178849 | 179517 | case 330: /* frame_bound ::= CURRENT ROW */ yytestcase(yyruleno==330); |
| 179518 | +#line 1958 "parse.y" |
| 178850 | 179519 | {yylhsminor.yy509.eType = yymsp[-1].major; yylhsminor.yy509.pExpr = 0;} |
| 179520 | +#line 5671 "parse.sql" |
| 178851 | 179521 | yymsp[-1].minor.yy509 = yylhsminor.yy509; |
| 178852 | 179522 | break; |
| 178853 | 179523 | case 329: /* frame_bound ::= expr PRECEDING|FOLLOWING */ |
| 179524 | +#line 1963 "parse.y" |
| 178854 | 179525 | {yylhsminor.yy509.eType = yymsp[0].major; yylhsminor.yy509.pExpr = yymsp[-1].minor.yy454;} |
| 179526 | +#line 5677 "parse.sql" |
| 178855 | 179527 | yymsp[-1].minor.yy509 = yylhsminor.yy509; |
| 178856 | 179528 | break; |
| 178857 | 179529 | case 331: /* frame_exclude_opt ::= */ |
| 179530 | +#line 1967 "parse.y" |
| 178858 | 179531 | {yymsp[1].minor.yy462 = 0;} |
| 179532 | +#line 5683 "parse.sql" |
| 178859 | 179533 | break; |
| 178860 | 179534 | case 332: /* frame_exclude_opt ::= EXCLUDE frame_exclude */ |
| 179535 | +#line 1968 "parse.y" |
| 178861 | 179536 | {yymsp[-1].minor.yy462 = yymsp[0].minor.yy462;} |
| 179537 | +#line 5688 "parse.sql" |
| 178862 | 179538 | break; |
| 178863 | 179539 | case 333: /* frame_exclude ::= NO OTHERS */ |
| 178864 | 179540 | case 334: /* frame_exclude ::= CURRENT ROW */ yytestcase(yyruleno==334); |
| 179541 | +#line 1971 "parse.y" |
| 178865 | 179542 | {yymsp[-1].minor.yy462 = yymsp[-1].major; /*A-overwrites-X*/} |
| 179543 | +#line 5694 "parse.sql" |
| 178866 | 179544 | break; |
| 178867 | 179545 | case 335: /* frame_exclude ::= GROUP|TIES */ |
| 179546 | +#line 1973 "parse.y" |
| 178868 | 179547 | {yymsp[0].minor.yy462 = yymsp[0].major; /*A-overwrites-X*/} |
| 179548 | +#line 5699 "parse.sql" |
| 178869 | 179549 | break; |
| 178870 | 179550 | case 336: /* window_clause ::= WINDOW windowdefn_list */ |
| 179551 | +#line 1978 "parse.y" |
| 178871 | 179552 | { yymsp[-1].minor.yy211 = yymsp[0].minor.yy211; } |
| 179553 | +#line 5704 "parse.sql" |
| 178872 | 179554 | break; |
| 178873 | 179555 | case 337: /* filter_over ::= filter_clause over_clause */ |
| 179556 | +#line 1980 "parse.y" |
| 178874 | 179557 | { |
| 178875 | 179558 | if( yymsp[0].minor.yy211 ){ |
| 178876 | 179559 | yymsp[0].minor.yy211->pFilter = yymsp[-1].minor.yy454; |
| 178877 | 179560 | }else{ |
| 178878 | 179561 | sqlite3ExprDelete(pParse->db, yymsp[-1].minor.yy454); |
| 178879 | 179562 | } |
| 178880 | 179563 | yylhsminor.yy211 = yymsp[0].minor.yy211; |
| 178881 | 179564 | } |
| 179565 | +#line 5716 "parse.sql" |
| 178882 | 179566 | yymsp[-1].minor.yy211 = yylhsminor.yy211; |
| 178883 | 179567 | break; |
| 178884 | 179568 | case 338: /* filter_over ::= over_clause */ |
| 179569 | +#line 1988 "parse.y" |
| 178885 | 179570 | { |
| 178886 | 179571 | yylhsminor.yy211 = yymsp[0].minor.yy211; |
| 178887 | 179572 | } |
| 179573 | +#line 5724 "parse.sql" |
| 178888 | 179574 | yymsp[0].minor.yy211 = yylhsminor.yy211; |
| 178889 | 179575 | break; |
| 178890 | 179576 | case 339: /* filter_over ::= filter_clause */ |
| 179577 | +#line 1991 "parse.y" |
| 178891 | 179578 | { |
| 178892 | 179579 | yylhsminor.yy211 = (Window*)sqlite3DbMallocZero(pParse->db, sizeof(Window)); |
| 178893 | 179580 | if( yylhsminor.yy211 ){ |
| 178894 | 179581 | yylhsminor.yy211->eFrmType = TK_FILTER; |
| 178895 | 179582 | yylhsminor.yy211->pFilter = yymsp[0].minor.yy454; |
| 178896 | 179583 | }else{ |
| 178897 | 179584 | sqlite3ExprDelete(pParse->db, yymsp[0].minor.yy454); |
| 178898 | 179585 | } |
| 178899 | 179586 | } |
| 179587 | +#line 5738 "parse.sql" |
| 178900 | 179588 | yymsp[0].minor.yy211 = yylhsminor.yy211; |
| 178901 | 179589 | break; |
| 178902 | 179590 | case 340: /* over_clause ::= OVER LP window RP */ |
| 179591 | +#line 2001 "parse.y" |
| 178903 | 179592 | { |
| 178904 | 179593 | yymsp[-3].minor.yy211 = yymsp[-1].minor.yy211; |
| 178905 | 179594 | assert( yymsp[-3].minor.yy211!=0 ); |
| 178906 | 179595 | } |
| 179596 | +#line 5747 "parse.sql" |
| 178907 | 179597 | break; |
| 178908 | 179598 | case 341: /* over_clause ::= OVER nm */ |
| 179599 | +#line 2005 "parse.y" |
| 178909 | 179600 | { |
| 178910 | 179601 | yymsp[-1].minor.yy211 = (Window*)sqlite3DbMallocZero(pParse->db, sizeof(Window)); |
| 178911 | 179602 | if( yymsp[-1].minor.yy211 ){ |
| 178912 | 179603 | yymsp[-1].minor.yy211->zName = sqlite3DbStrNDup(pParse->db, yymsp[0].minor.yy0.z, yymsp[0].minor.yy0.n); |
| 178913 | 179604 | } |
| 178914 | 179605 | } |
| 179606 | +#line 5757 "parse.sql" |
| 178915 | 179607 | break; |
| 178916 | 179608 | case 342: /* filter_clause ::= FILTER LP WHERE expr RP */ |
| 179609 | +#line 2012 "parse.y" |
| 178917 | 179610 | { yymsp[-4].minor.yy454 = yymsp[-1].minor.yy454; } |
| 179611 | +#line 5762 "parse.sql" |
| 178918 | 179612 | break; |
| 178919 | 179613 | case 343: /* term ::= QNUMBER */ |
| 179614 | +#line 2038 "parse.y" |
| 178920 | 179615 | { |
| 178921 | 179616 | yylhsminor.yy454=tokenExpr(pParse,yymsp[0].major,yymsp[0].minor.yy0); |
| 178922 | 179617 | sqlite3DequoteNumber(pParse, yylhsminor.yy454); |
| 178923 | 179618 | } |
| 179619 | +#line 5770 "parse.sql" |
| 178924 | 179620 | yymsp[0].minor.yy454 = yylhsminor.yy454; |
| 178925 | 179621 | break; |
| 178926 | 179622 | default: |
| 178927 | 179623 | /* (344) input ::= cmdlist */ yytestcase(yyruleno==344); |
| 178928 | 179624 | /* (345) cmdlist ::= cmdlist ecmd */ yytestcase(yyruleno==345); |
| | @@ -179046,17 +179742,19 @@ |
| 179046 | 179742 | ){ |
| 179047 | 179743 | sqlite3ParserARG_FETCH |
| 179048 | 179744 | sqlite3ParserCTX_FETCH |
| 179049 | 179745 | #define TOKEN yyminor |
| 179050 | 179746 | /************ Begin %syntax_error code ****************************************/ |
| 179747 | +#line 43 "parse.y" |
| 179051 | 179748 | |
| 179052 | 179749 | UNUSED_PARAMETER(yymajor); /* Silence some compiler warnings */ |
| 179053 | 179750 | if( TOKEN.z[0] ){ |
| 179054 | 179751 | sqlite3ErrorMsg(pParse, "near \"%T\": syntax error", &TOKEN); |
| 179055 | 179752 | }else{ |
| 179056 | 179753 | sqlite3ErrorMsg(pParse, "incomplete input"); |
| 179057 | 179754 | } |
| 179755 | +#line 5906 "parse.sql" |
| 179058 | 179756 | /************ End %syntax_error code ******************************************/ |
| 179059 | 179757 | sqlite3ParserARG_STORE /* Suppress warning about unused %extra_argument variable */ |
| 179060 | 179758 | sqlite3ParserCTX_STORE |
| 179061 | 179759 | } |
| 179062 | 179760 | |
| | @@ -179324,10 +180022,11 @@ |
| 179324 | 180022 | #endif |
| 179325 | 180023 | } |
| 179326 | 180024 | |
| 179327 | 180025 | /************** End of parse.c ***********************************************/ |
| 179328 | 180026 | /************** Begin file tokenize.c ****************************************/ |
| 180027 | +#line 1 "tsrc/tokenize.c" |
| 179329 | 180028 | /* |
| 179330 | 180029 | ** 2001 September 15 |
| 179331 | 180030 | ** |
| 179332 | 180031 | ** The author disclaims copyright to this source code. In place of |
| 179333 | 180032 | ** a legal notice, here is a blessing: |
| | @@ -179473,10 +180172,11 @@ |
| 179473 | 180172 | ** named keywordhash.h and then included into this source file by |
| 179474 | 180173 | ** the #include below. |
| 179475 | 180174 | */ |
| 179476 | 180175 | /************** Include keywordhash.h in the middle of tokenize.c ************/ |
| 179477 | 180176 | /************** Begin file keywordhash.h *************************************/ |
| 180177 | +#line 1 "tsrc/keywordhash.h" |
| 179478 | 180178 | /***** This file contains automatically generated code ****** |
| 179479 | 180179 | ** |
| 179480 | 180180 | ** The code in this file has been automatically generated by |
| 179481 | 180181 | ** |
| 179482 | 180182 | ** sqlite/tool/mkkeywordhash.c |
| | @@ -179958,10 +180658,11 @@ |
| 179958 | 180658 | return TK_ID!=sqlite3KeywordCode((const u8*)zName, nName); |
| 179959 | 180659 | } |
| 179960 | 180660 | |
| 179961 | 180661 | /************** End of keywordhash.h *****************************************/ |
| 179962 | 180662 | /************** Continuing where we left off in tokenize.c *******************/ |
| 180663 | +#line 149 "tsrc/tokenize.c" |
| 179963 | 180664 | |
| 179964 | 180665 | |
| 179965 | 180666 | /* |
| 179966 | 180667 | ** If X is a character that can be used in an identifier then |
| 179967 | 180668 | ** IdChar(X) will be true. Otherwise it is false. |
| | @@ -180701,10 +181402,11 @@ |
| 180701 | 181402 | } |
| 180702 | 181403 | #endif /* SQLITE_ENABLE_NORMALIZE */ |
| 180703 | 181404 | |
| 180704 | 181405 | /************** End of tokenize.c ********************************************/ |
| 180705 | 181406 | /************** Begin file complete.c ****************************************/ |
| 181407 | +#line 1 "tsrc/complete.c" |
| 180706 | 181408 | /* |
| 180707 | 181409 | ** 2001 September 15 |
| 180708 | 181410 | ** |
| 180709 | 181411 | ** The author disclaims copyright to this source code. In place of |
| 180710 | 181412 | ** a legal notice, here is a blessing: |
| | @@ -180994,10 +181696,11 @@ |
| 180994 | 181696 | #endif /* SQLITE_OMIT_UTF16 */ |
| 180995 | 181697 | #endif /* SQLITE_OMIT_COMPLETE */ |
| 180996 | 181698 | |
| 180997 | 181699 | /************** End of complete.c ********************************************/ |
| 180998 | 181700 | /************** Begin file main.c ********************************************/ |
| 181701 | +#line 1 "tsrc/main.c" |
| 180999 | 181702 | /* |
| 181000 | 181703 | ** 2001 September 15 |
| 181001 | 181704 | ** |
| 181002 | 181705 | ** The author disclaims copyright to this source code. In place of |
| 181003 | 181706 | ** a legal notice, here is a blessing: |
| | @@ -181015,10 +181718,11 @@ |
| 181015 | 181718 | /* #include "sqliteInt.h" */ |
| 181016 | 181719 | |
| 181017 | 181720 | #ifdef SQLITE_ENABLE_FTS3 |
| 181018 | 181721 | /************** Include fts3.h in the middle of main.c ***********************/ |
| 181019 | 181722 | /************** Begin file fts3.h ********************************************/ |
| 181723 | +#line 1 "tsrc/fts3.h" |
| 181020 | 181724 | /* |
| 181021 | 181725 | ** 2006 Oct 10 |
| 181022 | 181726 | ** |
| 181023 | 181727 | ** The author disclaims copyright to this source code. In place of |
| 181024 | 181728 | ** a legal notice, here is a blessing: |
| | @@ -181044,14 +181748,16 @@ |
| 181044 | 181748 | } /* extern "C" */ |
| 181045 | 181749 | #endif /* __cplusplus */ |
| 181046 | 181750 | |
| 181047 | 181751 | /************** End of fts3.h ************************************************/ |
| 181048 | 181752 | /************** Continuing where we left off in main.c ***********************/ |
| 181753 | +#line 21 "tsrc/main.c" |
| 181049 | 181754 | #endif |
| 181050 | 181755 | #ifdef SQLITE_ENABLE_RTREE |
| 181051 | 181756 | /************** Include rtree.h in the middle of main.c **********************/ |
| 181052 | 181757 | /************** Begin file rtree.h *******************************************/ |
| 181758 | +#line 1 "tsrc/rtree.h" |
| 181053 | 181759 | /* |
| 181054 | 181760 | ** 2008 May 26 |
| 181055 | 181761 | ** |
| 181056 | 181762 | ** The author disclaims copyright to this source code. In place of |
| 181057 | 181763 | ** a legal notice, here is a blessing: |
| | @@ -181081,14 +181787,16 @@ |
| 181081 | 181787 | } /* extern "C" */ |
| 181082 | 181788 | #endif /* __cplusplus */ |
| 181083 | 181789 | |
| 181084 | 181790 | /************** End of rtree.h ***********************************************/ |
| 181085 | 181791 | /************** Continuing where we left off in main.c ***********************/ |
| 181792 | +#line 24 "tsrc/main.c" |
| 181086 | 181793 | #endif |
| 181087 | 181794 | #if defined(SQLITE_ENABLE_ICU) || defined(SQLITE_ENABLE_ICU_COLLATIONS) |
| 181088 | 181795 | /************** Include sqliteicu.h in the middle of main.c ******************/ |
| 181089 | 181796 | /************** Begin file sqliteicu.h ***************************************/ |
| 181797 | +#line 1 "tsrc/sqliteicu.h" |
| 181090 | 181798 | /* |
| 181091 | 181799 | ** 2008 May 26 |
| 181092 | 181800 | ** |
| 181093 | 181801 | ** The author disclaims copyright to this source code. In place of |
| 181094 | 181802 | ** a legal notice, here is a blessing: |
| | @@ -181114,10 +181822,11 @@ |
| 181114 | 181822 | } /* extern "C" */ |
| 181115 | 181823 | #endif /* __cplusplus */ |
| 181116 | 181824 | |
| 181117 | 181825 | /************** End of sqliteicu.h *******************************************/ |
| 181118 | 181826 | /************** Continuing where we left off in main.c ***********************/ |
| 181827 | +#line 27 "tsrc/main.c" |
| 181119 | 181828 | #endif |
| 181120 | 181829 | |
| 181121 | 181830 | /* |
| 181122 | 181831 | ** This is an extension initializer that is a no-op and always |
| 181123 | 181832 | ** succeeds, except that it fails if the fault-simulation is set |
| | @@ -182513,14 +183222,10 @@ |
| 182513 | 183222 | #endif |
| 182514 | 183223 | |
| 182515 | 183224 | sqlite3Error(db, SQLITE_OK); /* Deallocates any cached error strings. */ |
| 182516 | 183225 | sqlite3ValueFree(db->pErr); |
| 182517 | 183226 | sqlite3CloseExtensions(db); |
| 182518 | | -#if SQLITE_USER_AUTHENTICATION |
| 182519 | | - sqlite3_free(db->auth.zAuthUser); |
| 182520 | | - sqlite3_free(db->auth.zAuthPW); |
| 182521 | | -#endif |
| 182522 | 183227 | |
| 182523 | 183228 | db->eOpenState = SQLITE_STATE_ERROR; |
| 182524 | 183229 | |
| 182525 | 183230 | /* The temp-database schema is allocated differently from the other schema |
| 182526 | 183231 | ** objects (using sqliteMalloc() directly, instead of sqlite3BtreeSchema()). |
| | @@ -186168,10 +186873,11 @@ |
| 186168 | 186873 | } |
| 186169 | 186874 | #endif /* SQLITE_OMIT_COMPILEOPTION_DIAGS */ |
| 186170 | 186875 | |
| 186171 | 186876 | /************** End of main.c ************************************************/ |
| 186172 | 186877 | /************** Begin file notify.c ******************************************/ |
| 186878 | +#line 1 "tsrc/notify.c" |
| 186173 | 186879 | /* |
| 186174 | 186880 | ** 2009 March 3 |
| 186175 | 186881 | ** |
| 186176 | 186882 | ** The author disclaims copyright to this source code. In place of |
| 186177 | 186883 | ** a legal notice, here is a blessing: |
| | @@ -186506,10 +187212,11 @@ |
| 186506 | 187212 | } |
| 186507 | 187213 | #endif |
| 186508 | 187214 | |
| 186509 | 187215 | /************** End of notify.c **********************************************/ |
| 186510 | 187216 | /************** Begin file fts3.c ********************************************/ |
| 187217 | +#line 1 "tsrc/fts3.c" |
| 186511 | 187218 | /* |
| 186512 | 187219 | ** 2006 Oct 10 |
| 186513 | 187220 | ** |
| 186514 | 187221 | ** The author disclaims copyright to this source code. In place of |
| 186515 | 187222 | ** a legal notice, here is a blessing: |
| | @@ -186798,10 +187505,11 @@ |
| 186798 | 187505 | ** older data. |
| 186799 | 187506 | */ |
| 186800 | 187507 | |
| 186801 | 187508 | /************** Include fts3Int.h in the middle of fts3.c ********************/ |
| 186802 | 187509 | /************** Begin file fts3Int.h *****************************************/ |
| 187510 | +#line 1 "tsrc/fts3Int.h" |
| 186803 | 187511 | /* |
| 186804 | 187512 | ** 2009 Nov 12 |
| 186805 | 187513 | ** |
| 186806 | 187514 | ** The author disclaims copyright to this source code. In place of |
| 186807 | 187515 | ** a legal notice, here is a blessing: |
| | @@ -186844,10 +187552,11 @@ |
| 186844 | 187552 | #endif |
| 186845 | 187553 | |
| 186846 | 187554 | /* #include "sqlite3.h" */ |
| 186847 | 187555 | /************** Include fts3_tokenizer.h in the middle of fts3Int.h **********/ |
| 186848 | 187556 | /************** Begin file fts3_tokenizer.h **********************************/ |
| 187557 | +#line 1 "tsrc/fts3_tokenizer.h" |
| 186849 | 187558 | /* |
| 186850 | 187559 | ** 2006 July 10 |
| 186851 | 187560 | ** |
| 186852 | 187561 | ** The author disclaims copyright to this source code. |
| 186853 | 187562 | ** |
| | @@ -187008,12 +187717,14 @@ |
| 187008 | 187717 | |
| 187009 | 187718 | #endif /* _FTS3_TOKENIZER_H_ */ |
| 187010 | 187719 | |
| 187011 | 187720 | /************** End of fts3_tokenizer.h **************************************/ |
| 187012 | 187721 | /************** Continuing where we left off in fts3Int.h ********************/ |
| 187722 | +#line 46 "tsrc/fts3Int.h" |
| 187013 | 187723 | /************** Include fts3_hash.h in the middle of fts3Int.h ***************/ |
| 187014 | 187724 | /************** Begin file fts3_hash.h ***************************************/ |
| 187725 | +#line 1 "tsrc/fts3_hash.h" |
| 187015 | 187726 | /* |
| 187016 | 187727 | ** 2001 September 22 |
| 187017 | 187728 | ** |
| 187018 | 187729 | ** The author disclaims copyright to this source code. In place of |
| 187019 | 187730 | ** a legal notice, here is a blessing: |
| | @@ -187125,10 +187836,11 @@ |
| 187125 | 187836 | |
| 187126 | 187837 | #endif /* _FTS3_HASH_H_ */ |
| 187127 | 187838 | |
| 187128 | 187839 | /************** End of fts3_hash.h *******************************************/ |
| 187129 | 187840 | /************** Continuing where we left off in fts3Int.h ********************/ |
| 187841 | +#line 47 "tsrc/fts3Int.h" |
| 187130 | 187842 | |
| 187131 | 187843 | /* |
| 187132 | 187844 | ** This constant determines the maximum depth of an FTS expression tree |
| 187133 | 187845 | ** that the library will create and use. FTS uses recursion to perform |
| 187134 | 187846 | ** various operations on the query tree, so the disadvantage of a large |
| | @@ -187741,10 +188453,11 @@ |
| 187741 | 188453 | #endif /* !SQLITE_CORE || SQLITE_ENABLE_FTS3 */ |
| 187742 | 188454 | #endif /* _FTSINT_H */ |
| 187743 | 188455 | |
| 187744 | 188456 | /************** End of fts3Int.h *********************************************/ |
| 187745 | 188457 | /************** Continuing where we left off in fts3.c ***********************/ |
| 188458 | +#line 292 "tsrc/fts3.c" |
| 187746 | 188459 | #if !defined(SQLITE_CORE) || defined(SQLITE_ENABLE_FTS3) |
| 187747 | 188460 | |
| 187748 | 188461 | #if defined(SQLITE_ENABLE_FTS3) && !defined(SQLITE_CORE) |
| 187749 | 188462 | # define SQLITE_CORE 1 |
| 187750 | 188463 | #endif |
| | @@ -193621,11 +194334,11 @@ |
| 193621 | 194334 | SQLITE_PRIVATE int sqlite3Fts3Corrupt(){ |
| 193622 | 194335 | return SQLITE_CORRUPT_VTAB; |
| 193623 | 194336 | } |
| 193624 | 194337 | #endif |
| 193625 | 194338 | |
| 193626 | | -#if !SQLITE_CORE |
| 194339 | +#if !defined(SQLITE_CORE) |
| 193627 | 194340 | /* |
| 193628 | 194341 | ** Initialize API pointer table, if required. |
| 193629 | 194342 | */ |
| 193630 | 194343 | #ifdef _WIN32 |
| 193631 | 194344 | __declspec(dllexport) |
| | @@ -193642,10 +194355,11 @@ |
| 193642 | 194355 | |
| 193643 | 194356 | #endif |
| 193644 | 194357 | |
| 193645 | 194358 | /************** End of fts3.c ************************************************/ |
| 193646 | 194359 | /************** Begin file fts3_aux.c ****************************************/ |
| 194360 | +#line 1 "tsrc/fts3_aux.c" |
| 193647 | 194361 | /* |
| 193648 | 194362 | ** 2011 Jan 27 |
| 193649 | 194363 | ** |
| 193650 | 194364 | ** The author disclaims copyright to this source code. In place of |
| 193651 | 194365 | ** a legal notice, here is a blessing: |
| | @@ -194202,10 +194916,11 @@ |
| 194202 | 194916 | |
| 194203 | 194917 | #endif /* !defined(SQLITE_CORE) || defined(SQLITE_ENABLE_FTS3) */ |
| 194204 | 194918 | |
| 194205 | 194919 | /************** End of fts3_aux.c ********************************************/ |
| 194206 | 194920 | /************** Begin file fts3_expr.c ***************************************/ |
| 194921 | +#line 1 "tsrc/fts3_expr.c" |
| 194207 | 194922 | /* |
| 194208 | 194923 | ** 2008 Nov 28 |
| 194209 | 194924 | ** |
| 194210 | 194925 | ** The author disclaims copyright to this source code. In place of |
| 194211 | 194926 | ** a legal notice, here is a blessing: |
| | @@ -195498,10 +196213,11 @@ |
| 195498 | 196213 | #endif |
| 195499 | 196214 | #endif /* !defined(SQLITE_CORE) || defined(SQLITE_ENABLE_FTS3) */ |
| 195500 | 196215 | |
| 195501 | 196216 | /************** End of fts3_expr.c *******************************************/ |
| 195502 | 196217 | /************** Begin file fts3_hash.c ***************************************/ |
| 196218 | +#line 1 "tsrc/fts3_hash.c" |
| 195503 | 196219 | /* |
| 195504 | 196220 | ** 2001 September 22 |
| 195505 | 196221 | ** |
| 195506 | 196222 | ** The author disclaims copyright to this source code. In place of |
| 195507 | 196223 | ** a legal notice, here is a blessing: |
| | @@ -195884,10 +196600,11 @@ |
| 195884 | 196600 | |
| 195885 | 196601 | #endif /* !defined(SQLITE_CORE) || defined(SQLITE_ENABLE_FTS3) */ |
| 195886 | 196602 | |
| 195887 | 196603 | /************** End of fts3_hash.c *******************************************/ |
| 195888 | 196604 | /************** Begin file fts3_porter.c *************************************/ |
| 196605 | +#line 1 "tsrc/fts3_porter.c" |
| 195889 | 196606 | /* |
| 195890 | 196607 | ** 2006 September 30 |
| 195891 | 196608 | ** |
| 195892 | 196609 | ** The author disclaims copyright to this source code. In place of |
| 195893 | 196610 | ** a legal notice, here is a blessing: |
| | @@ -196549,10 +197266,11 @@ |
| 196549 | 197266 | |
| 196550 | 197267 | #endif /* !defined(SQLITE_CORE) || defined(SQLITE_ENABLE_FTS3) */ |
| 196551 | 197268 | |
| 196552 | 197269 | /************** End of fts3_porter.c *****************************************/ |
| 196553 | 197270 | /************** Begin file fts3_tokenizer.c **********************************/ |
| 197271 | +#line 1 "tsrc/fts3_tokenizer.c" |
| 196554 | 197272 | /* |
| 196555 | 197273 | ** 2007 June 22 |
| 196556 | 197274 | ** |
| 196557 | 197275 | ** The author disclaims copyright to this source code. In place of |
| 196558 | 197276 | ** a legal notice, here is a blessing: |
| | @@ -197068,10 +197786,11 @@ |
| 197068 | 197786 | |
| 197069 | 197787 | #endif /* !defined(SQLITE_CORE) || defined(SQLITE_ENABLE_FTS3) */ |
| 197070 | 197788 | |
| 197071 | 197789 | /************** End of fts3_tokenizer.c **************************************/ |
| 197072 | 197790 | /************** Begin file fts3_tokenizer1.c *********************************/ |
| 197791 | +#line 1 "tsrc/fts3_tokenizer1.c" |
| 197073 | 197792 | /* |
| 197074 | 197793 | ** 2006 Oct 10 |
| 197075 | 197794 | ** |
| 197076 | 197795 | ** The author disclaims copyright to this source code. In place of |
| 197077 | 197796 | ** a legal notice, here is a blessing: |
| | @@ -197305,10 +198024,11 @@ |
| 197305 | 198024 | |
| 197306 | 198025 | #endif /* !defined(SQLITE_CORE) || defined(SQLITE_ENABLE_FTS3) */ |
| 197307 | 198026 | |
| 197308 | 198027 | /************** End of fts3_tokenizer1.c *************************************/ |
| 197309 | 198028 | /************** Begin file fts3_tokenize_vtab.c ******************************/ |
| 198029 | +#line 1 "tsrc/fts3_tokenize_vtab.c" |
| 197310 | 198030 | /* |
| 197311 | 198031 | ** 2013 Apr 22 |
| 197312 | 198032 | ** |
| 197313 | 198033 | ** The author disclaims copyright to this source code. In place of |
| 197314 | 198034 | ** a legal notice, here is a blessing: |
| | @@ -197767,10 +198487,11 @@ |
| 197767 | 198487 | |
| 197768 | 198488 | #endif /* !defined(SQLITE_CORE) || defined(SQLITE_ENABLE_FTS3) */ |
| 197769 | 198489 | |
| 197770 | 198490 | /************** End of fts3_tokenize_vtab.c **********************************/ |
| 197771 | 198491 | /************** Begin file fts3_write.c **************************************/ |
| 198492 | +#line 1 "tsrc/fts3_write.c" |
| 197772 | 198493 | /* |
| 197773 | 198494 | ** 2009 Oct 23 |
| 197774 | 198495 | ** |
| 197775 | 198496 | ** The author disclaims copyright to this source code. In place of |
| 197776 | 198497 | ** a legal notice, here is a blessing: |
| | @@ -203604,10 +204325,11 @@ |
| 203604 | 204325 | |
| 203605 | 204326 | #endif |
| 203606 | 204327 | |
| 203607 | 204328 | /************** End of fts3_write.c ******************************************/ |
| 203608 | 204329 | /************** Begin file fts3_snippet.c ************************************/ |
| 204330 | +#line 1 "tsrc/fts3_snippet.c" |
| 203609 | 204331 | /* |
| 203610 | 204332 | ** 2009 Oct 23 |
| 203611 | 204333 | ** |
| 203612 | 204334 | ** The author disclaims copyright to this source code. In place of |
| 203613 | 204335 | ** a legal notice, here is a blessing: |
| | @@ -205363,10 +206085,11 @@ |
| 205363 | 206085 | |
| 205364 | 206086 | #endif |
| 205365 | 206087 | |
| 205366 | 206088 | /************** End of fts3_snippet.c ****************************************/ |
| 205367 | 206089 | /************** Begin file fts3_unicode.c ************************************/ |
| 206090 | +#line 1 "tsrc/fts3_unicode.c" |
| 205368 | 206091 | /* |
| 205369 | 206092 | ** 2012 May 24 |
| 205370 | 206093 | ** |
| 205371 | 206094 | ** The author disclaims copyright to this source code. In place of |
| 205372 | 206095 | ** a legal notice, here is a blessing: |
| | @@ -205763,10 +206486,11 @@ |
| 205763 | 206486 | #endif /* !defined(SQLITE_CORE) || defined(SQLITE_ENABLE_FTS3) */ |
| 205764 | 206487 | #endif /* ifndef SQLITE_DISABLE_FTS3_UNICODE */ |
| 205765 | 206488 | |
| 205766 | 206489 | /************** End of fts3_unicode.c ****************************************/ |
| 205767 | 206490 | /************** Begin file fts3_unicode2.c ***********************************/ |
| 206491 | +#line 1 "tsrc/fts3_unicode2.c" |
| 205768 | 206492 | /* |
| 205769 | 206493 | ** 2012-05-25 |
| 205770 | 206494 | ** |
| 205771 | 206495 | ** The author disclaims copyright to this source code. In place of |
| 205772 | 206496 | ** a legal notice, here is a blessing: |
| | @@ -206149,10 +206873,11 @@ |
| 206149 | 206873 | #endif /* defined(SQLITE_ENABLE_FTS3) || defined(SQLITE_ENABLE_FTS4) */ |
| 206150 | 206874 | #endif /* !defined(SQLITE_DISABLE_FTS3_UNICODE) */ |
| 206151 | 206875 | |
| 206152 | 206876 | /************** End of fts3_unicode2.c ***************************************/ |
| 206153 | 206877 | /************** Begin file json.c ********************************************/ |
| 206878 | +#line 1 "tsrc/json.c" |
| 206154 | 206879 | /* |
| 206155 | 206880 | ** 2015-08-12 |
| 206156 | 206881 | ** |
| 206157 | 206882 | ** The author disclaims copyright to this source code. In place of |
| 206158 | 206883 | ** a legal notice, here is a blessing: |
| | @@ -211618,10 +212343,11 @@ |
| 211618 | 212343 | } |
| 211619 | 212344 | #endif /* !defined(SQLITE_OMIT_VIRTUALTABLE) && !defined(SQLITE_OMIT_JSON) */ |
| 211620 | 212345 | |
| 211621 | 212346 | /************** End of json.c ************************************************/ |
| 211622 | 212347 | /************** Begin file rtree.c *******************************************/ |
| 212348 | +#line 1 "tsrc/rtree.c" |
| 211623 | 212349 | /* |
| 211624 | 212350 | ** 2001 September 15 |
| 211625 | 212351 | ** |
| 211626 | 212352 | ** The author disclaims copyright to this source code. In place of |
| 211627 | 212353 | ** a legal notice, here is a blessing: |
| | @@ -215906,10 +216632,11 @@ |
| 215906 | 216632 | |
| 215907 | 216633 | /* Conditionally include the geopoly code */ |
| 215908 | 216634 | #ifdef SQLITE_ENABLE_GEOPOLY |
| 215909 | 216635 | /************** Include geopoly.c in the middle of rtree.c *******************/ |
| 215910 | 216636 | /************** Begin file geopoly.c *****************************************/ |
| 216637 | +#line 1 "tsrc/geopoly.c" |
| 215911 | 216638 | /* |
| 215912 | 216639 | ** 2018-05-25 |
| 215913 | 216640 | ** |
| 215914 | 216641 | ** The author disclaims copyright to this source code. In place of |
| 215915 | 216642 | ** a legal notice, here is a blessing: |
| | @@ -217748,10 +218475,11 @@ |
| 217748 | 218475 | return rc; |
| 217749 | 218476 | } |
| 217750 | 218477 | |
| 217751 | 218478 | /************** End of geopoly.c *********************************************/ |
| 217752 | 218479 | /************** Continuing where we left off in rtree.c **********************/ |
| 218480 | +#line 4288 "tsrc/rtree.c" |
| 217753 | 218481 | #endif |
| 217754 | 218482 | |
| 217755 | 218483 | /* |
| 217756 | 218484 | ** Register the r-tree module with database handle db. This creates the |
| 217757 | 218485 | ** virtual table module "rtree" and the debugging/analysis scalar |
| | @@ -217912,11 +218640,11 @@ |
| 217912 | 218640 | return sqlite3_create_function_v2(db, zQueryFunc, -1, SQLITE_ANY, |
| 217913 | 218641 | (void *)pGeomCtx, geomCallback, 0, 0, rtreeFreeCallback |
| 217914 | 218642 | ); |
| 217915 | 218643 | } |
| 217916 | 218644 | |
| 217917 | | -#if !SQLITE_CORE |
| 218645 | +#ifndef SQLITE_CORE |
| 217918 | 218646 | #ifdef _WIN32 |
| 217919 | 218647 | __declspec(dllexport) |
| 217920 | 218648 | #endif |
| 217921 | 218649 | SQLITE_API int sqlite3_rtree_init( |
| 217922 | 218650 | sqlite3 *db, |
| | @@ -217930,10 +218658,11 @@ |
| 217930 | 218658 | |
| 217931 | 218659 | #endif |
| 217932 | 218660 | |
| 217933 | 218661 | /************** End of rtree.c ***********************************************/ |
| 217934 | 218662 | /************** Begin file icu.c *********************************************/ |
| 218663 | +#line 1 "tsrc/icu.c" |
| 217935 | 218664 | /* |
| 217936 | 218665 | ** 2007 May 6 |
| 217937 | 218666 | ** |
| 217938 | 218667 | ** The author disclaims copyright to this source code. In place of |
| 217939 | 218668 | ** a legal notice, here is a blessing: |
| | @@ -218503,11 +219232,11 @@ |
| 218503 | 219232 | } |
| 218504 | 219233 | |
| 218505 | 219234 | return rc; |
| 218506 | 219235 | } |
| 218507 | 219236 | |
| 218508 | | -#if !SQLITE_CORE |
| 219237 | +#ifndef SQLITE_CORE |
| 218509 | 219238 | #ifdef _WIN32 |
| 218510 | 219239 | __declspec(dllexport) |
| 218511 | 219240 | #endif |
| 218512 | 219241 | SQLITE_API int sqlite3_icu_init( |
| 218513 | 219242 | sqlite3 *db, |
| | @@ -218521,10 +219250,11 @@ |
| 218521 | 219250 | |
| 218522 | 219251 | #endif |
| 218523 | 219252 | |
| 218524 | 219253 | /************** End of icu.c *************************************************/ |
| 218525 | 219254 | /************** Begin file fts3_icu.c ****************************************/ |
| 219255 | +#line 1 "tsrc/fts3_icu.c" |
| 218526 | 219256 | /* |
| 218527 | 219257 | ** 2007 June 22 |
| 218528 | 219258 | ** |
| 218529 | 219259 | ** The author disclaims copyright to this source code. In place of |
| 218530 | 219260 | ** a legal notice, here is a blessing: |
| | @@ -218786,10 +219516,11 @@ |
| 218786 | 219516 | #endif /* defined(SQLITE_ENABLE_ICU) */ |
| 218787 | 219517 | #endif /* !defined(SQLITE_CORE) || defined(SQLITE_ENABLE_FTS3) */ |
| 218788 | 219518 | |
| 218789 | 219519 | /************** End of fts3_icu.c ********************************************/ |
| 218790 | 219520 | /************** Begin file sqlite3rbu.c **************************************/ |
| 219521 | +#line 1 "tsrc/sqlite3rbu.c" |
| 218791 | 219522 | /* |
| 218792 | 219523 | ** 2014 August 30 |
| 218793 | 219524 | ** |
| 218794 | 219525 | ** The author disclaims copyright to this source code. In place of |
| 218795 | 219526 | ** a legal notice, here is a blessing: |
| | @@ -218877,10 +219608,11 @@ |
| 218877 | 219608 | /* #include "sqlite3.h" */ |
| 218878 | 219609 | |
| 218879 | 219610 | #if !defined(SQLITE_CORE) || defined(SQLITE_ENABLE_RBU) |
| 218880 | 219611 | /************** Include sqlite3rbu.h in the middle of sqlite3rbu.c ***********/ |
| 218881 | 219612 | /************** Begin file sqlite3rbu.h **************************************/ |
| 219613 | +#line 1 "tsrc/sqlite3rbu.h" |
| 218882 | 219614 | /* |
| 218883 | 219615 | ** 2014 August 30 |
| 218884 | 219616 | ** |
| 218885 | 219617 | ** The author disclaims copyright to this source code. In place of |
| 218886 | 219618 | ** a legal notice, here is a blessing: |
| | @@ -219513,10 +220245,11 @@ |
| 219513 | 220245 | |
| 219514 | 220246 | #endif /* _SQLITE3RBU_H */ |
| 219515 | 220247 | |
| 219516 | 220248 | /************** End of sqlite3rbu.h ******************************************/ |
| 219517 | 220249 | /************** Continuing where we left off in sqlite3rbu.c *****************/ |
| 220250 | +#line 91 "tsrc/sqlite3rbu.c" |
| 219518 | 220251 | |
| 219519 | 220252 | #if defined(_WIN32_WCE) |
| 219520 | 220253 | /* #include "windows.h" */ |
| 219521 | 220254 | #endif |
| 219522 | 220255 | |
| | @@ -224873,10 +225606,11 @@ |
| 224873 | 225606 | |
| 224874 | 225607 | #endif /* !defined(SQLITE_CORE) || defined(SQLITE_ENABLE_RBU) */ |
| 224875 | 225608 | |
| 224876 | 225609 | /************** End of sqlite3rbu.c ******************************************/ |
| 224877 | 225610 | /************** Begin file dbstat.c ******************************************/ |
| 225611 | +#line 1 "tsrc/dbstat.c" |
| 224878 | 225612 | /* |
| 224879 | 225613 | ** 2010 July 12 |
| 224880 | 225614 | ** |
| 224881 | 225615 | ** The author disclaims copyright to this source code. In place of |
| 224882 | 225616 | ** a legal notice, here is a blessing: |
| | @@ -225782,10 +226516,11 @@ |
| 225782 | 226516 | SQLITE_PRIVATE int sqlite3DbstatRegister(sqlite3 *db){ return SQLITE_OK; } |
| 225783 | 226517 | #endif /* SQLITE_ENABLE_DBSTAT_VTAB */ |
| 225784 | 226518 | |
| 225785 | 226519 | /************** End of dbstat.c **********************************************/ |
| 225786 | 226520 | /************** Begin file dbpage.c ******************************************/ |
| 226521 | +#line 1 "tsrc/dbpage.c" |
| 225787 | 226522 | /* |
| 225788 | 226523 | ** 2017-10-11 |
| 225789 | 226524 | ** |
| 225790 | 226525 | ** The author disclaims copyright to this source code. In place of |
| 225791 | 226526 | ** a legal notice, here is a blessing: |
| | @@ -226264,10 +226999,11 @@ |
| 226264 | 226999 | SQLITE_PRIVATE int sqlite3DbpageRegister(sqlite3 *db){ return SQLITE_OK; } |
| 226265 | 227000 | #endif /* SQLITE_ENABLE_DBSTAT_VTAB */ |
| 226266 | 227001 | |
| 226267 | 227002 | /************** End of dbpage.c **********************************************/ |
| 226268 | 227003 | /************** Begin file sqlite3session.c **********************************/ |
| 227004 | +#line 1 "tsrc/sqlite3session.c" |
| 226269 | 227005 | |
| 226270 | 227006 | #if defined(SQLITE_ENABLE_SESSION) && defined(SQLITE_ENABLE_PREUPDATE_HOOK) |
| 226271 | 227007 | /* #include "sqlite3session.h" */ |
| 226272 | 227008 | /* #include <assert.h> */ |
| 226273 | 227009 | /* #include <string.h> */ |
| | @@ -232803,21 +233539,49 @@ |
| 232803 | 233539 | |
| 232804 | 233540 | #endif /* SQLITE_ENABLE_SESSION && SQLITE_ENABLE_PREUPDATE_HOOK */ |
| 232805 | 233541 | |
| 232806 | 233542 | /************** End of sqlite3session.c **************************************/ |
| 232807 | 233543 | /************** Begin file fts5.c ********************************************/ |
| 233544 | +#line 1 "tsrc/fts5.c" |
| 232808 | 233545 | |
| 232809 | | - |
| 233546 | +/* |
| 233547 | +** This, the "fts5.c" source file, is a composite file that is itself |
| 233548 | +** assembled from the following files: |
| 233549 | +** |
| 233550 | +** fts5.h |
| 233551 | +** fts5Int.h |
| 233552 | +** fts5parse.h <--- Generated from fts5parse.y by Lemon |
| 233553 | +** fts5parse.c <--- Generated from fts5parse.y by Lemon |
| 233554 | +** fts5_aux.c |
| 233555 | +** fts5_buffer.c |
| 233556 | +** fts5_config.c |
| 233557 | +** fts5_expr.c |
| 233558 | +** fts5_hash.c |
| 233559 | +** fts5_index.c |
| 233560 | +** fts5_main.c |
| 233561 | +** fts5_storage.c |
| 233562 | +** fts5_tokenize.c |
| 233563 | +** fts5_unicode2.c |
| 233564 | +** fts5_varint.c |
| 233565 | +** fts5_vocab.c |
| 233566 | +*/ |
| 232810 | 233567 | #if !defined(SQLITE_CORE) || defined(SQLITE_ENABLE_FTS5) |
| 232811 | 233568 | |
| 232812 | 233569 | #if !defined(NDEBUG) && !defined(SQLITE_DEBUG) |
| 232813 | 233570 | # define NDEBUG 1 |
| 232814 | 233571 | #endif |
| 232815 | 233572 | #if defined(NDEBUG) && defined(SQLITE_DEBUG) |
| 232816 | 233573 | # undef NDEBUG |
| 232817 | 233574 | #endif |
| 232818 | 233575 | |
| 233576 | +#ifdef HAVE_STDINT_H |
| 233577 | +/* #include <stdint.h> */ |
| 233578 | +#endif |
| 233579 | +#ifdef HAVE_INTTYPES_H |
| 233580 | +/* #include <inttypes.h> */ |
| 233581 | +#endif |
| 233582 | +#line 1 "fts5.h" |
| 232819 | 233583 | /* |
| 232820 | 233584 | ** 2014 May 31 |
| 232821 | 233585 | ** |
| 232822 | 233586 | ** The author disclaims copyright to this source code. In place of |
| 232823 | 233587 | ** a legal notice, here is a blessing: |
| | @@ -233554,10 +234318,11 @@ |
| 233554 | 234318 | } /* end of the 'extern "C"' block */ |
| 233555 | 234319 | #endif |
| 233556 | 234320 | |
| 233557 | 234321 | #endif /* _FTS5_H */ |
| 233558 | 234322 | |
| 234323 | +#line 1 "fts5Int.h" |
| 233559 | 234324 | /* |
| 233560 | 234325 | ** 2014 May 31 |
| 233561 | 234326 | ** |
| 233562 | 234327 | ** The author disclaims copyright to this source code. In place of |
| 233563 | 234328 | ** a legal notice, here is a blessing: |
| | @@ -234493,10 +235258,11 @@ |
| 234493 | 235258 | ** End of interface to code in fts5_unicode2.c. |
| 234494 | 235259 | **************************************************************************/ |
| 234495 | 235260 | |
| 234496 | 235261 | #endif |
| 234497 | 235262 | |
| 235263 | +#line 1 "fts5parse.h" |
| 234498 | 235264 | #define FTS5_OR 1 |
| 234499 | 235265 | #define FTS5_AND 2 |
| 234500 | 235266 | #define FTS5_NOT 3 |
| 234501 | 235267 | #define FTS5_TERM 4 |
| 234502 | 235268 | #define FTS5_COLON 5 |
| | @@ -234509,10 +235275,11 @@ |
| 234509 | 235275 | #define FTS5_CARET 12 |
| 234510 | 235276 | #define FTS5_COMMA 13 |
| 234511 | 235277 | #define FTS5_PLUS 14 |
| 234512 | 235278 | #define FTS5_STAR 15 |
| 234513 | 235279 | |
| 235280 | +#line 1 "fts5parse.c" |
| 234514 | 235281 | /* This file is automatically generated by Lemon from input grammar |
| 234515 | 235282 | ** source file "fts5parse.y". |
| 234516 | 235283 | */ |
| 234517 | 235284 | /* |
| 234518 | 235285 | ** 2000-05-29 |
| | @@ -234537,10 +235304,11 @@ |
| 234537 | 235304 | ** |
| 234538 | 235305 | ** The following is the concatenation of all %include directives from the |
| 234539 | 235306 | ** input grammar file: |
| 234540 | 235307 | */ |
| 234541 | 235308 | /************ Begin %include sections from the grammar ************************/ |
| 235309 | +#line 47 "fts5parse.y" |
| 234542 | 235310 | |
| 234543 | 235311 | /* #include "fts5Int.h" */ |
| 234544 | 235312 | /* #include "fts5parse.h" */ |
| 234545 | 235313 | |
| 234546 | 235314 | /* |
| | @@ -234564,10 +235332,11 @@ |
| 234564 | 235332 | ** Alternative datatype for the argument to the malloc() routine passed |
| 234565 | 235333 | ** into sqlite3ParserAlloc(). The default is size_t. |
| 234566 | 235334 | */ |
| 234567 | 235335 | #define fts5YYMALLOCARGTYPE u64 |
| 234568 | 235336 | |
| 235337 | +#line 58 "fts5parse.sql" |
| 234569 | 235338 | /**************** End of %include directives **********************************/ |
| 234570 | 235339 | /* These constants specify the various numeric values for terminal symbols. |
| 234571 | 235340 | ***************** Begin token definitions *************************************/ |
| 234572 | 235341 | #ifndef FTS5_OR |
| 234573 | 235342 | #define FTS5_OR 1 |
| | @@ -235110,35 +235879,45 @@ |
| 235110 | 235879 | ** inside the C code. |
| 235111 | 235880 | */ |
| 235112 | 235881 | /********* Begin destructor definitions ***************************************/ |
| 235113 | 235882 | case 16: /* input */ |
| 235114 | 235883 | { |
| 235884 | +#line 83 "fts5parse.y" |
| 235115 | 235885 | (void)pParse; |
| 235886 | +#line 606 "fts5parse.sql" |
| 235116 | 235887 | } |
| 235117 | 235888 | break; |
| 235118 | 235889 | case 17: /* expr */ |
| 235119 | 235890 | case 18: /* cnearset */ |
| 235120 | 235891 | case 19: /* exprlist */ |
| 235121 | 235892 | { |
| 235893 | +#line 89 "fts5parse.y" |
| 235122 | 235894 | sqlite3Fts5ParseNodeFree((fts5yypminor->fts5yy24)); |
| 235895 | +#line 615 "fts5parse.sql" |
| 235123 | 235896 | } |
| 235124 | 235897 | break; |
| 235125 | 235898 | case 20: /* colset */ |
| 235126 | 235899 | case 21: /* colsetlist */ |
| 235127 | 235900 | { |
| 235901 | +#line 93 "fts5parse.y" |
| 235128 | 235902 | sqlite3_free((fts5yypminor->fts5yy11)); |
| 235903 | +#line 623 "fts5parse.sql" |
| 235129 | 235904 | } |
| 235130 | 235905 | break; |
| 235131 | 235906 | case 22: /* nearset */ |
| 235132 | 235907 | case 23: /* nearphrases */ |
| 235133 | 235908 | { |
| 235909 | +#line 148 "fts5parse.y" |
| 235134 | 235910 | sqlite3Fts5ParseNearsetFree((fts5yypminor->fts5yy46)); |
| 235911 | +#line 631 "fts5parse.sql" |
| 235135 | 235912 | } |
| 235136 | 235913 | break; |
| 235137 | 235914 | case 24: /* phrase */ |
| 235138 | 235915 | { |
| 235916 | +#line 183 "fts5parse.y" |
| 235139 | 235917 | sqlite3Fts5ParsePhraseFree((fts5yypminor->fts5yy53)); |
| 235918 | +#line 638 "fts5parse.sql" |
| 235140 | 235919 | } |
| 235141 | 235920 | break; |
| 235142 | 235921 | /********* End destructor definitions *****************************************/ |
| 235143 | 235922 | default: break; /* If no destructor action specified: do nothing */ |
| 235144 | 235923 | } |
| | @@ -235369,12 +236148,14 @@ |
| 235369 | 236148 | #endif |
| 235370 | 236149 | while( fts5yypParser->fts5yytos>fts5yypParser->fts5yystack ) fts5yy_pop_parser_stack(fts5yypParser); |
| 235371 | 236150 | /* Here code is inserted which will execute if the parser |
| 235372 | 236151 | ** stack every overflows */ |
| 235373 | 236152 | /******** Begin %stack_overflow code ******************************************/ |
| 236153 | +#line 36 "fts5parse.y" |
| 235374 | 236154 | |
| 235375 | 236155 | sqlite3Fts5ParseError(pParse, "fts5: parser stack overflow"); |
| 236156 | +#line 876 "fts5parse.sql" |
| 235376 | 236157 | /******** End %stack_overflow code ********************************************/ |
| 235377 | 236158 | sqlite3Fts5ParserARG_STORE /* Suppress warning about unused %extra_argument var */ |
| 235378 | 236159 | sqlite3Fts5ParserCTX_STORE |
| 235379 | 236160 | } |
| 235380 | 236161 | |
| | @@ -235539,148 +236320,202 @@ |
| 235539 | 236320 | ** break; |
| 235540 | 236321 | */ |
| 235541 | 236322 | /********** Begin reduce actions **********************************************/ |
| 235542 | 236323 | fts5YYMINORTYPE fts5yylhsminor; |
| 235543 | 236324 | case 0: /* input ::= expr */ |
| 236325 | +#line 82 "fts5parse.y" |
| 235544 | 236326 | { sqlite3Fts5ParseFinished(pParse, fts5yymsp[0].minor.fts5yy24); } |
| 236327 | +#line 1047 "fts5parse.sql" |
| 235545 | 236328 | break; |
| 235546 | 236329 | case 1: /* colset ::= MINUS LCP colsetlist RCP */ |
| 236330 | +#line 97 "fts5parse.y" |
| 235547 | 236331 | { |
| 235548 | 236332 | fts5yymsp[-3].minor.fts5yy11 = sqlite3Fts5ParseColsetInvert(pParse, fts5yymsp[-1].minor.fts5yy11); |
| 235549 | 236333 | } |
| 236334 | +#line 1054 "fts5parse.sql" |
| 235550 | 236335 | break; |
| 235551 | 236336 | case 2: /* colset ::= LCP colsetlist RCP */ |
| 236337 | +#line 100 "fts5parse.y" |
| 235552 | 236338 | { fts5yymsp[-2].minor.fts5yy11 = fts5yymsp[-1].minor.fts5yy11; } |
| 236339 | +#line 1059 "fts5parse.sql" |
| 235553 | 236340 | break; |
| 235554 | 236341 | case 3: /* colset ::= STRING */ |
| 236342 | +#line 101 "fts5parse.y" |
| 235555 | 236343 | { |
| 235556 | 236344 | fts5yylhsminor.fts5yy11 = sqlite3Fts5ParseColset(pParse, 0, &fts5yymsp[0].minor.fts5yy0); |
| 235557 | 236345 | } |
| 236346 | +#line 1066 "fts5parse.sql" |
| 235558 | 236347 | fts5yymsp[0].minor.fts5yy11 = fts5yylhsminor.fts5yy11; |
| 235559 | 236348 | break; |
| 235560 | 236349 | case 4: /* colset ::= MINUS STRING */ |
| 236350 | +#line 104 "fts5parse.y" |
| 235561 | 236351 | { |
| 235562 | 236352 | fts5yymsp[-1].minor.fts5yy11 = sqlite3Fts5ParseColset(pParse, 0, &fts5yymsp[0].minor.fts5yy0); |
| 235563 | 236353 | fts5yymsp[-1].minor.fts5yy11 = sqlite3Fts5ParseColsetInvert(pParse, fts5yymsp[-1].minor.fts5yy11); |
| 235564 | 236354 | } |
| 236355 | +#line 1075 "fts5parse.sql" |
| 235565 | 236356 | break; |
| 235566 | 236357 | case 5: /* colsetlist ::= colsetlist STRING */ |
| 236358 | +#line 109 "fts5parse.y" |
| 235567 | 236359 | { |
| 235568 | 236360 | fts5yylhsminor.fts5yy11 = sqlite3Fts5ParseColset(pParse, fts5yymsp[-1].minor.fts5yy11, &fts5yymsp[0].minor.fts5yy0); } |
| 236361 | +#line 1081 "fts5parse.sql" |
| 235569 | 236362 | fts5yymsp[-1].minor.fts5yy11 = fts5yylhsminor.fts5yy11; |
| 235570 | 236363 | break; |
| 235571 | 236364 | case 6: /* colsetlist ::= STRING */ |
| 236365 | +#line 111 "fts5parse.y" |
| 235572 | 236366 | { |
| 235573 | 236367 | fts5yylhsminor.fts5yy11 = sqlite3Fts5ParseColset(pParse, 0, &fts5yymsp[0].minor.fts5yy0); |
| 235574 | 236368 | } |
| 236369 | +#line 1089 "fts5parse.sql" |
| 235575 | 236370 | fts5yymsp[0].minor.fts5yy11 = fts5yylhsminor.fts5yy11; |
| 235576 | 236371 | break; |
| 235577 | 236372 | case 7: /* expr ::= expr AND expr */ |
| 236373 | +#line 115 "fts5parse.y" |
| 235578 | 236374 | { |
| 235579 | 236375 | fts5yylhsminor.fts5yy24 = sqlite3Fts5ParseNode(pParse, FTS5_AND, fts5yymsp[-2].minor.fts5yy24, fts5yymsp[0].minor.fts5yy24, 0); |
| 235580 | 236376 | } |
| 236377 | +#line 1097 "fts5parse.sql" |
| 235581 | 236378 | fts5yymsp[-2].minor.fts5yy24 = fts5yylhsminor.fts5yy24; |
| 235582 | 236379 | break; |
| 235583 | 236380 | case 8: /* expr ::= expr OR expr */ |
| 236381 | +#line 118 "fts5parse.y" |
| 235584 | 236382 | { |
| 235585 | 236383 | fts5yylhsminor.fts5yy24 = sqlite3Fts5ParseNode(pParse, FTS5_OR, fts5yymsp[-2].minor.fts5yy24, fts5yymsp[0].minor.fts5yy24, 0); |
| 235586 | 236384 | } |
| 236385 | +#line 1105 "fts5parse.sql" |
| 235587 | 236386 | fts5yymsp[-2].minor.fts5yy24 = fts5yylhsminor.fts5yy24; |
| 235588 | 236387 | break; |
| 235589 | 236388 | case 9: /* expr ::= expr NOT expr */ |
| 236389 | +#line 121 "fts5parse.y" |
| 235590 | 236390 | { |
| 235591 | 236391 | fts5yylhsminor.fts5yy24 = sqlite3Fts5ParseNode(pParse, FTS5_NOT, fts5yymsp[-2].minor.fts5yy24, fts5yymsp[0].minor.fts5yy24, 0); |
| 235592 | 236392 | } |
| 236393 | +#line 1113 "fts5parse.sql" |
| 235593 | 236394 | fts5yymsp[-2].minor.fts5yy24 = fts5yylhsminor.fts5yy24; |
| 235594 | 236395 | break; |
| 235595 | 236396 | case 10: /* expr ::= colset COLON LP expr RP */ |
| 236397 | +#line 125 "fts5parse.y" |
| 235596 | 236398 | { |
| 235597 | 236399 | sqlite3Fts5ParseSetColset(pParse, fts5yymsp[-1].minor.fts5yy24, fts5yymsp[-4].minor.fts5yy11); |
| 235598 | 236400 | fts5yylhsminor.fts5yy24 = fts5yymsp[-1].minor.fts5yy24; |
| 235599 | 236401 | } |
| 236402 | +#line 1122 "fts5parse.sql" |
| 235600 | 236403 | fts5yymsp[-4].minor.fts5yy24 = fts5yylhsminor.fts5yy24; |
| 235601 | 236404 | break; |
| 235602 | 236405 | case 11: /* expr ::= LP expr RP */ |
| 236406 | +#line 129 "fts5parse.y" |
| 235603 | 236407 | {fts5yymsp[-2].minor.fts5yy24 = fts5yymsp[-1].minor.fts5yy24;} |
| 236408 | +#line 1128 "fts5parse.sql" |
| 235604 | 236409 | break; |
| 235605 | 236410 | case 12: /* expr ::= exprlist */ |
| 235606 | 236411 | case 13: /* exprlist ::= cnearset */ fts5yytestcase(fts5yyruleno==13); |
| 236412 | +#line 130 "fts5parse.y" |
| 235607 | 236413 | {fts5yylhsminor.fts5yy24 = fts5yymsp[0].minor.fts5yy24;} |
| 236414 | +#line 1134 "fts5parse.sql" |
| 235608 | 236415 | fts5yymsp[0].minor.fts5yy24 = fts5yylhsminor.fts5yy24; |
| 235609 | 236416 | break; |
| 235610 | 236417 | case 14: /* exprlist ::= exprlist cnearset */ |
| 236418 | +#line 133 "fts5parse.y" |
| 235611 | 236419 | { |
| 235612 | 236420 | fts5yylhsminor.fts5yy24 = sqlite3Fts5ParseImplicitAnd(pParse, fts5yymsp[-1].minor.fts5yy24, fts5yymsp[0].minor.fts5yy24); |
| 235613 | 236421 | } |
| 236422 | +#line 1142 "fts5parse.sql" |
| 235614 | 236423 | fts5yymsp[-1].minor.fts5yy24 = fts5yylhsminor.fts5yy24; |
| 235615 | 236424 | break; |
| 235616 | 236425 | case 15: /* cnearset ::= nearset */ |
| 236426 | +#line 137 "fts5parse.y" |
| 235617 | 236427 | { |
| 235618 | 236428 | fts5yylhsminor.fts5yy24 = sqlite3Fts5ParseNode(pParse, FTS5_STRING, 0, 0, fts5yymsp[0].minor.fts5yy46); |
| 235619 | 236429 | } |
| 236430 | +#line 1150 "fts5parse.sql" |
| 235620 | 236431 | fts5yymsp[0].minor.fts5yy24 = fts5yylhsminor.fts5yy24; |
| 235621 | 236432 | break; |
| 235622 | 236433 | case 16: /* cnearset ::= colset COLON nearset */ |
| 236434 | +#line 140 "fts5parse.y" |
| 235623 | 236435 | { |
| 235624 | 236436 | fts5yylhsminor.fts5yy24 = sqlite3Fts5ParseNode(pParse, FTS5_STRING, 0, 0, fts5yymsp[0].minor.fts5yy46); |
| 235625 | 236437 | sqlite3Fts5ParseSetColset(pParse, fts5yylhsminor.fts5yy24, fts5yymsp[-2].minor.fts5yy11); |
| 235626 | 236438 | } |
| 236439 | +#line 1159 "fts5parse.sql" |
| 235627 | 236440 | fts5yymsp[-2].minor.fts5yy24 = fts5yylhsminor.fts5yy24; |
| 235628 | 236441 | break; |
| 235629 | 236442 | case 17: /* nearset ::= phrase */ |
| 236443 | +#line 151 "fts5parse.y" |
| 235630 | 236444 | { fts5yylhsminor.fts5yy46 = sqlite3Fts5ParseNearset(pParse, 0, fts5yymsp[0].minor.fts5yy53); } |
| 236445 | +#line 1165 "fts5parse.sql" |
| 235631 | 236446 | fts5yymsp[0].minor.fts5yy46 = fts5yylhsminor.fts5yy46; |
| 235632 | 236447 | break; |
| 235633 | 236448 | case 18: /* nearset ::= CARET phrase */ |
| 236449 | +#line 152 "fts5parse.y" |
| 235634 | 236450 | { |
| 235635 | 236451 | sqlite3Fts5ParseSetCaret(fts5yymsp[0].minor.fts5yy53); |
| 235636 | 236452 | fts5yymsp[-1].minor.fts5yy46 = sqlite3Fts5ParseNearset(pParse, 0, fts5yymsp[0].minor.fts5yy53); |
| 235637 | 236453 | } |
| 236454 | +#line 1174 "fts5parse.sql" |
| 235638 | 236455 | break; |
| 235639 | 236456 | case 19: /* nearset ::= STRING LP nearphrases neardist_opt RP */ |
| 236457 | +#line 156 "fts5parse.y" |
| 235640 | 236458 | { |
| 235641 | 236459 | sqlite3Fts5ParseNear(pParse, &fts5yymsp[-4].minor.fts5yy0); |
| 235642 | 236460 | sqlite3Fts5ParseSetDistance(pParse, fts5yymsp[-2].minor.fts5yy46, &fts5yymsp[-1].minor.fts5yy0); |
| 235643 | 236461 | fts5yylhsminor.fts5yy46 = fts5yymsp[-2].minor.fts5yy46; |
| 235644 | 236462 | } |
| 236463 | +#line 1183 "fts5parse.sql" |
| 235645 | 236464 | fts5yymsp[-4].minor.fts5yy46 = fts5yylhsminor.fts5yy46; |
| 235646 | 236465 | break; |
| 235647 | 236466 | case 20: /* nearphrases ::= phrase */ |
| 236467 | +#line 162 "fts5parse.y" |
| 235648 | 236468 | { |
| 235649 | 236469 | fts5yylhsminor.fts5yy46 = sqlite3Fts5ParseNearset(pParse, 0, fts5yymsp[0].minor.fts5yy53); |
| 235650 | 236470 | } |
| 236471 | +#line 1191 "fts5parse.sql" |
| 235651 | 236472 | fts5yymsp[0].minor.fts5yy46 = fts5yylhsminor.fts5yy46; |
| 235652 | 236473 | break; |
| 235653 | 236474 | case 21: /* nearphrases ::= nearphrases phrase */ |
| 236475 | +#line 165 "fts5parse.y" |
| 235654 | 236476 | { |
| 235655 | 236477 | fts5yylhsminor.fts5yy46 = sqlite3Fts5ParseNearset(pParse, fts5yymsp[-1].minor.fts5yy46, fts5yymsp[0].minor.fts5yy53); |
| 235656 | 236478 | } |
| 236479 | +#line 1199 "fts5parse.sql" |
| 235657 | 236480 | fts5yymsp[-1].minor.fts5yy46 = fts5yylhsminor.fts5yy46; |
| 235658 | 236481 | break; |
| 235659 | 236482 | case 22: /* neardist_opt ::= */ |
| 236483 | +#line 172 "fts5parse.y" |
| 235660 | 236484 | { fts5yymsp[1].minor.fts5yy0.p = 0; fts5yymsp[1].minor.fts5yy0.n = 0; } |
| 236485 | +#line 1205 "fts5parse.sql" |
| 235661 | 236486 | break; |
| 235662 | 236487 | case 23: /* neardist_opt ::= COMMA STRING */ |
| 236488 | +#line 173 "fts5parse.y" |
| 235663 | 236489 | { fts5yymsp[-1].minor.fts5yy0 = fts5yymsp[0].minor.fts5yy0; } |
| 236490 | +#line 1210 "fts5parse.sql" |
| 235664 | 236491 | break; |
| 235665 | 236492 | case 24: /* phrase ::= phrase PLUS STRING star_opt */ |
| 236493 | +#line 185 "fts5parse.y" |
| 235666 | 236494 | { |
| 235667 | 236495 | fts5yylhsminor.fts5yy53 = sqlite3Fts5ParseTerm(pParse, fts5yymsp[-3].minor.fts5yy53, &fts5yymsp[-1].minor.fts5yy0, fts5yymsp[0].minor.fts5yy4); |
| 235668 | 236496 | } |
| 236497 | +#line 1217 "fts5parse.sql" |
| 235669 | 236498 | fts5yymsp[-3].minor.fts5yy53 = fts5yylhsminor.fts5yy53; |
| 235670 | 236499 | break; |
| 235671 | 236500 | case 25: /* phrase ::= STRING star_opt */ |
| 236501 | +#line 188 "fts5parse.y" |
| 235672 | 236502 | { |
| 235673 | 236503 | fts5yylhsminor.fts5yy53 = sqlite3Fts5ParseTerm(pParse, 0, &fts5yymsp[-1].minor.fts5yy0, fts5yymsp[0].minor.fts5yy4); |
| 235674 | 236504 | } |
| 236505 | +#line 1225 "fts5parse.sql" |
| 235675 | 236506 | fts5yymsp[-1].minor.fts5yy53 = fts5yylhsminor.fts5yy53; |
| 235676 | 236507 | break; |
| 235677 | 236508 | case 26: /* star_opt ::= STAR */ |
| 236509 | +#line 196 "fts5parse.y" |
| 235678 | 236510 | { fts5yymsp[0].minor.fts5yy4 = 1; } |
| 236511 | +#line 1231 "fts5parse.sql" |
| 235679 | 236512 | break; |
| 235680 | 236513 | case 27: /* star_opt ::= */ |
| 236514 | +#line 197 "fts5parse.y" |
| 235681 | 236515 | { fts5yymsp[1].minor.fts5yy4 = 0; } |
| 236516 | +#line 1236 "fts5parse.sql" |
| 235682 | 236517 | break; |
| 235683 | 236518 | default: |
| 235684 | 236519 | break; |
| 235685 | 236520 | /********** End reduce actions ************************************************/ |
| 235686 | 236521 | }; |
| | @@ -235738,15 +236573,17 @@ |
| 235738 | 236573 | ){ |
| 235739 | 236574 | sqlite3Fts5ParserARG_FETCH |
| 235740 | 236575 | sqlite3Fts5ParserCTX_FETCH |
| 235741 | 236576 | #define FTS5TOKEN fts5yyminor |
| 235742 | 236577 | /************ Begin %syntax_error code ****************************************/ |
| 236578 | +#line 30 "fts5parse.y" |
| 235743 | 236579 | |
| 235744 | 236580 | UNUSED_PARAM(fts5yymajor); /* Silence a compiler warning */ |
| 235745 | 236581 | sqlite3Fts5ParseError( |
| 235746 | 236582 | pParse, "fts5: syntax error near \"%.*s\"",FTS5TOKEN.n,FTS5TOKEN.p |
| 235747 | 236583 | ); |
| 236584 | +#line 1304 "fts5parse.sql" |
| 235748 | 236585 | /************ End %syntax_error code ******************************************/ |
| 235749 | 236586 | sqlite3Fts5ParserARG_STORE /* Suppress warning about unused %extra_argument variable */ |
| 235750 | 236587 | sqlite3Fts5ParserCTX_STORE |
| 235751 | 236588 | } |
| 235752 | 236589 | |
| | @@ -236012,10 +236849,11 @@ |
| 236012 | 236849 | (void)iToken; |
| 236013 | 236850 | return 0; |
| 236014 | 236851 | #endif |
| 236015 | 236852 | } |
| 236016 | 236853 | |
| 236854 | +#line 1 "fts5_aux.c" |
| 236017 | 236855 | /* |
| 236018 | 236856 | ** 2014 May 31 |
| 236019 | 236857 | ** |
| 236020 | 236858 | ** The author disclaims copyright to this source code. In place of |
| 236021 | 236859 | ** a legal notice, here is a blessing: |
| | @@ -236834,10 +237672,11 @@ |
| 236834 | 237672 | } |
| 236835 | 237673 | |
| 236836 | 237674 | return rc; |
| 236837 | 237675 | } |
| 236838 | 237676 | |
| 237677 | +#line 1 "fts5_buffer.c" |
| 236839 | 237678 | /* |
| 236840 | 237679 | ** 2014 May 31 |
| 236841 | 237680 | ** |
| 236842 | 237681 | ** The author disclaims copyright to this source code. In place of |
| 236843 | 237682 | ** a legal notice, here is a blessing: |
| | @@ -237246,10 +238085,11 @@ |
| 237246 | 238085 | } |
| 237247 | 238086 | sqlite3_free(p); |
| 237248 | 238087 | } |
| 237249 | 238088 | } |
| 237250 | 238089 | |
| 238090 | +#line 1 "fts5_config.c" |
| 237251 | 238091 | /* |
| 237252 | 238092 | ** 2014 Jun 09 |
| 237253 | 238093 | ** |
| 237254 | 238094 | ** The author disclaims copyright to this source code. In place of |
| 237255 | 238095 | ** a legal notice, here is a blessing: |
| | @@ -238361,10 +239201,11 @@ |
| 238361 | 239201 | va_end(ap); |
| 238362 | 239202 | } |
| 238363 | 239203 | |
| 238364 | 239204 | |
| 238365 | 239205 | |
| 239206 | +#line 1 "fts5_expr.c" |
| 238366 | 239207 | /* |
| 238367 | 239208 | ** 2014 May 31 |
| 238368 | 239209 | ** |
| 238369 | 239210 | ** The author disclaims copyright to this source code. In place of |
| 238370 | 239211 | ** a legal notice, here is a blessing: |
| | @@ -241629,10 +242470,11 @@ |
| 241629 | 242470 | sqlite3Fts5IndexIterClearTokendata(pT->pIter); |
| 241630 | 242471 | } |
| 241631 | 242472 | } |
| 241632 | 242473 | } |
| 241633 | 242474 | |
| 242475 | +#line 1 "fts5_hash.c" |
| 241634 | 242476 | /* |
| 241635 | 242477 | ** 2014 August 11 |
| 241636 | 242478 | ** |
| 241637 | 242479 | ** The author disclaims copyright to this source code. In place of |
| 241638 | 242480 | ** a legal notice, here is a blessing: |
| | @@ -242220,10 +243062,11 @@ |
| 242220 | 243062 | *ppDoclist = 0; |
| 242221 | 243063 | *pnDoclist = 0; |
| 242222 | 243064 | } |
| 242223 | 243065 | } |
| 242224 | 243066 | |
| 243067 | +#line 1 "fts5_index.c" |
| 242225 | 243068 | /* |
| 242226 | 243069 | ** 2014 May 31 |
| 242227 | 243070 | ** |
| 242228 | 243071 | ** The author disclaims copyright to this source code. In place of |
| 242229 | 243072 | ** a legal notice, here is a blessing: |
| | @@ -251297,10 +252140,11 @@ |
| 251297 | 252140 | fts5StructureInvalidate(p); |
| 251298 | 252141 | } |
| 251299 | 252142 | return fts5IndexReturn(p); |
| 251300 | 252143 | } |
| 251301 | 252144 | |
| 252145 | +#line 1 "fts5_main.c" |
| 251302 | 252146 | /* |
| 251303 | 252147 | ** 2014 Jun 09 |
| 251304 | 252148 | ** |
| 251305 | 252149 | ** The author disclaims copyright to this source code. In place of |
| 251306 | 252150 | ** a legal notice, here is a blessing: |
| | @@ -254886,11 +255730,11 @@ |
| 254886 | 255730 | int nArg, /* Number of args */ |
| 254887 | 255731 | sqlite3_value **apUnused /* Function arguments */ |
| 254888 | 255732 | ){ |
| 254889 | 255733 | assert( nArg==0 ); |
| 254890 | 255734 | UNUSED_PARAM2(nArg, apUnused); |
| 254891 | | - sqlite3_result_text(pCtx, "fts5: 2024-10-21 16:30:22 03a9703e27c44437c39363d0baf82db4ebc94538a0f28411c85dda156f82636e", -1, SQLITE_TRANSIENT); |
| 255735 | + sqlite3_result_text(pCtx, "fts5: 2024-11-06 12:58:31 5495b12569c318d5020b4b5a625a392ef8e777b81c0200624fbbc2a6b5eddef9", -1, SQLITE_TRANSIENT); |
| 254892 | 255736 | } |
| 254893 | 255737 | |
| 254894 | 255738 | /* |
| 254895 | 255739 | ** Implementation of fts5_locale(LOCALE, TEXT) function. |
| 254896 | 255740 | ** |
| | @@ -255139,10 +255983,11 @@ |
| 255139 | 255983 | SQLITE_PRIVATE int sqlite3Fts5Init(sqlite3 *db){ |
| 255140 | 255984 | return fts5Init(db); |
| 255141 | 255985 | } |
| 255142 | 255986 | #endif |
| 255143 | 255987 | |
| 255988 | +#line 1 "fts5_storage.c" |
| 255144 | 255989 | /* |
| 255145 | 255990 | ** 2014 May 31 |
| 255146 | 255991 | ** |
| 255147 | 255992 | ** The author disclaims copyright to this source code. In place of |
| 255148 | 255993 | ** a legal notice, here is a blessing: |
| | @@ -256652,10 +257497,11 @@ |
| 256652 | 257497 | } |
| 256653 | 257498 | } |
| 256654 | 257499 | return rc; |
| 256655 | 257500 | } |
| 256656 | 257501 | |
| 257502 | +#line 1 "fts5_tokenize.c" |
| 256657 | 257503 | /* |
| 256658 | 257504 | ** 2014 May 31 |
| 256659 | 257505 | ** |
| 256660 | 257506 | ** The author disclaims copyright to this source code. In place of |
| 256661 | 257507 | ** a legal notice, here is a blessing: |
| | @@ -258140,10 +258986,11 @@ |
| 258140 | 258986 | ); |
| 258141 | 258987 | } |
| 258142 | 258988 | return rc; |
| 258143 | 258989 | } |
| 258144 | 258990 | |
| 258991 | +#line 1 "fts5_unicode2.c" |
| 258145 | 258992 | /* |
| 258146 | 258993 | ** 2012-05-25 |
| 258147 | 258994 | ** |
| 258148 | 258995 | ** The author disclaims copyright to this source code. In place of |
| 258149 | 258996 | ** a legal notice, here is a blessing: |
| | @@ -258922,10 +259769,11 @@ |
| 258922 | 259769 | } |
| 258923 | 259770 | aAscii[0] = 0; /* 0x00 is never a token character */ |
| 258924 | 259771 | } |
| 258925 | 259772 | |
| 258926 | 259773 | |
| 259774 | +#line 1 "fts5_varint.c" |
| 258927 | 259775 | /* |
| 258928 | 259776 | ** 2015 May 30 |
| 258929 | 259777 | ** |
| 258930 | 259778 | ** The author disclaims copyright to this source code. In place of |
| 258931 | 259779 | ** a legal notice, here is a blessing: |
| | @@ -259267,10 +260115,11 @@ |
| 259267 | 260115 | if( iVal<(1 << 21) ) return 3; |
| 259268 | 260116 | if( iVal<(1 << 28) ) return 4; |
| 259269 | 260117 | return 5; |
| 259270 | 260118 | } |
| 259271 | 260119 | |
| 260120 | +#line 1 "fts5_vocab.c" |
| 259272 | 260121 | /* |
| 259273 | 260122 | ** 2015 May 08 |
| 259274 | 260123 | ** |
| 259275 | 260124 | ** The author disclaims copyright to this source code. In place of |
| 259276 | 260125 | ** a legal notice, here is a blessing: |
| | @@ -260077,15 +260926,16 @@ |
| 260077 | 260926 | |
| 260078 | 260927 | return sqlite3_create_module_v2(db, "fts5vocab", &fts5Vocab, p, 0); |
| 260079 | 260928 | } |
| 260080 | 260929 | |
| 260081 | 260930 | |
| 260082 | | - |
| 260931 | +/* Here ends the fts5.c composite file. */ |
| 260083 | 260932 | #endif /* !defined(SQLITE_CORE) || defined(SQLITE_ENABLE_FTS5) */ |
| 260084 | 260933 | |
| 260085 | 260934 | /************** End of fts5.c ************************************************/ |
| 260086 | 260935 | /************** Begin file stmt.c ********************************************/ |
| 260936 | +#line 1 "tsrc/stmt.c" |
| 260087 | 260937 | /* |
| 260088 | 260938 | ** 2017-05-31 |
| 260089 | 260939 | ** |
| 260090 | 260940 | ** The author disclaims copyright to this source code. In place of |
| 260091 | 260941 | ** a legal notice, here is a blessing: |
| | @@ -260433,6 +261283,7 @@ |
| 260433 | 261283 | #endif /* !defined(SQLITE_CORE) || defined(SQLITE_ENABLE_STMTVTAB) */ |
| 260434 | 261284 | |
| 260435 | 261285 | /************** End of stmt.c ************************************************/ |
| 260436 | 261286 | /* Return the source-id for this library */ |
| 260437 | 261287 | SQLITE_API const char *sqlite3_sourceid(void){ return SQLITE_SOURCE_ID; } |
| 261288 | +#endif /* SQLITE_AMALGAMATION */ |
| 260438 | 261289 | /************************** End of sqlite3.c ******************************/ |
| 260439 | 261290 | |