| | @@ -452,11 +452,11 @@ |
| 452 | 452 | ** [sqlite3_libversion_number()], [sqlite3_sourceid()], |
| 453 | 453 | ** [sqlite_version()] and [sqlite_source_id()]. |
| 454 | 454 | */ |
| 455 | 455 | #define SQLITE_VERSION "3.39.0" |
| 456 | 456 | #define SQLITE_VERSION_NUMBER 3039000 |
| 457 | | -#define SQLITE_SOURCE_ID "2022-05-10 00:24:01 c6c3115f3a008cf9b0d7c5c812f17e38c8a75a904032c5f05f0bea03a7340527" |
| 457 | +#define SQLITE_SOURCE_ID "2022-05-14 19:05:13 2277f9ba7087dd993ac0f4007c523aa9cf74dba187f53af03d8c164886726fee" |
| 458 | 458 | |
| 459 | 459 | /* |
| 460 | 460 | ** CAPI3REF: Run-Time Library Version Numbers |
| 461 | 461 | ** KEYWORDS: sqlite3_version sqlite3_sourceid |
| 462 | 462 | ** |
| | @@ -16286,10 +16286,17 @@ |
| 16286 | 16286 | */ |
| 16287 | 16287 | #ifndef SQLITE_MAX_PATHLEN |
| 16288 | 16288 | # define SQLITE_MAX_PATHLEN FILENAME_MAX |
| 16289 | 16289 | #endif |
| 16290 | 16290 | |
| 16291 | +/* Maximum number of symlinks that will be resolved while trying to |
| 16292 | +** expand a filename in xFullPathname() in the VFS. |
| 16293 | +*/ |
| 16294 | +#ifndef SQLITE_MAX_SYMLINK |
| 16295 | +# define SQLITE_MAX_SYMLINK 200 |
| 16296 | +#endif |
| 16297 | + |
| 16291 | 16298 | /* |
| 16292 | 16299 | ** The default size of a disk sector |
| 16293 | 16300 | */ |
| 16294 | 16301 | #ifndef SQLITE_DEFAULT_SECTOR_SIZE |
| 16295 | 16302 | # define SQLITE_DEFAULT_SECTOR_SIZE 4096 |
| | @@ -18120,11 +18127,11 @@ |
| 18120 | 18127 | ynVar iColumn; /* TK_COLUMN: column index. -1 for rowid. |
| 18121 | 18128 | ** TK_VARIABLE: variable number (always >= 1). |
| 18122 | 18129 | ** TK_SELECT_COLUMN: column of the result vector */ |
| 18123 | 18130 | i16 iAgg; /* Which entry in pAggInfo->aCol[] or ->aFunc[] */ |
| 18124 | 18131 | union { |
| 18125 | | - int iJoin; /* If EP_FromJoin, the right table of the join */ |
| 18132 | + int iJoin; /* If EP_OuterON or EP_InnerON, the right table */ |
| 18126 | 18133 | int iOfst; /* else: start of token from start of statement */ |
| 18127 | 18134 | } w; |
| 18128 | 18135 | AggInfo *pAggInfo; /* Used by TK_AGG_COLUMN and TK_AGG_FUNCTION */ |
| 18129 | 18136 | union { |
| 18130 | 18137 | Table *pTab; /* TK_COLUMN: Table containing column. Can be NULL |
| | @@ -18141,33 +18148,33 @@ |
| 18141 | 18148 | ** Value restrictions: |
| 18142 | 18149 | ** |
| 18143 | 18150 | ** EP_Agg == NC_HasAgg == SF_HasAgg |
| 18144 | 18151 | ** EP_Win == NC_HasWin |
| 18145 | 18152 | */ |
| 18146 | | -#define EP_FromJoin 0x000001 /* Originates in ON/USING clause of outer join */ |
| 18147 | | -#define EP_Distinct 0x000002 /* Aggregate function with DISTINCT keyword */ |
| 18148 | | -#define EP_HasFunc 0x000004 /* Contains one or more functions of any kind */ |
| 18149 | | -#define EP_FixedCol 0x000008 /* TK_Column with a known fixed value */ |
| 18153 | +#define EP_OuterON 0x000001 /* Originates in ON/USING clause of outer join */ |
| 18154 | +#define EP_InnerON 0x000002 /* Originates in ON/USING of an inner join */ |
| 18155 | +#define EP_Distinct 0x000004 /* Aggregate function with DISTINCT keyword */ |
| 18156 | +#define EP_HasFunc 0x000008 /* Contains one or more functions of any kind */ |
| 18150 | 18157 | #define EP_Agg 0x000010 /* Contains one or more aggregate functions */ |
| 18151 | | -#define EP_VarSelect 0x000020 /* pSelect is correlated, not constant */ |
| 18152 | | -#define EP_DblQuoted 0x000040 /* token.z was originally in "..." */ |
| 18153 | | -#define EP_InfixFunc 0x000080 /* True for an infix function: LIKE, GLOB, etc */ |
| 18154 | | -#define EP_Collate 0x000100 /* Tree contains a TK_COLLATE operator */ |
| 18155 | | -#define EP_Commuted 0x000200 /* Comparison operator has been commuted */ |
| 18156 | | -#define EP_IntValue 0x000400 /* Integer value contained in u.iValue */ |
| 18157 | | -#define EP_xIsSelect 0x000800 /* x.pSelect is valid (otherwise x.pList is) */ |
| 18158 | | -#define EP_Skip 0x001000 /* Operator does not contribute to affinity */ |
| 18159 | | -#define EP_Reduced 0x002000 /* Expr struct EXPR_REDUCEDSIZE bytes only */ |
| 18160 | | -#define EP_TokenOnly 0x004000 /* Expr struct EXPR_TOKENONLYSIZE bytes only */ |
| 18158 | +#define EP_FixedCol 0x000020 /* TK_Column with a known fixed value */ |
| 18159 | +#define EP_VarSelect 0x000040 /* pSelect is correlated, not constant */ |
| 18160 | +#define EP_DblQuoted 0x000080 /* token.z was originally in "..." */ |
| 18161 | +#define EP_InfixFunc 0x000100 /* True for an infix function: LIKE, GLOB, etc */ |
| 18162 | +#define EP_Collate 0x000200 /* Tree contains a TK_COLLATE operator */ |
| 18163 | +#define EP_Commuted 0x000400 /* Comparison operator has been commuted */ |
| 18164 | +#define EP_IntValue 0x000800 /* Integer value contained in u.iValue */ |
| 18165 | +#define EP_xIsSelect 0x001000 /* x.pSelect is valid (otherwise x.pList is) */ |
| 18166 | +#define EP_Skip 0x002000 /* Operator does not contribute to affinity */ |
| 18167 | +#define EP_Reduced 0x004000 /* Expr struct EXPR_REDUCEDSIZE bytes only */ |
| 18161 | 18168 | #define EP_Win 0x008000 /* Contains window functions */ |
| 18162 | | -#define EP_MemToken 0x010000 /* Need to sqlite3DbFree() Expr.zToken */ |
| 18163 | | -#define EP_IfNullRow 0x020000 /* The TK_IF_NULL_ROW opcode */ |
| 18164 | | -#define EP_Unlikely 0x040000 /* unlikely() or likelihood() function */ |
| 18165 | | -#define EP_ConstFunc 0x080000 /* A SQLITE_FUNC_CONSTANT or _SLOCHNG function */ |
| 18166 | | -#define EP_CanBeNull 0x100000 /* Can be null despite NOT NULL constraint */ |
| 18167 | | -#define EP_Subquery 0x200000 /* Tree contains a TK_SELECT operator */ |
| 18168 | | -#define EP_InnerJoin 0x400000 /* Originates in ON/USING of an inner join */ |
| 18169 | +#define EP_TokenOnly 0x010000 /* Expr struct EXPR_TOKENONLYSIZE bytes only */ |
| 18170 | +#define EP_MemToken 0x020000 /* Need to sqlite3DbFree() Expr.zToken */ |
| 18171 | +#define EP_IfNullRow 0x040000 /* The TK_IF_NULL_ROW opcode */ |
| 18172 | +#define EP_Unlikely 0x080000 /* unlikely() or likelihood() function */ |
| 18173 | +#define EP_ConstFunc 0x100000 /* A SQLITE_FUNC_CONSTANT or _SLOCHNG function */ |
| 18174 | +#define EP_CanBeNull 0x200000 /* Can be null despite NOT NULL constraint */ |
| 18175 | +#define EP_Subquery 0x400000 /* Tree contains a TK_SELECT operator */ |
| 18169 | 18176 | #define EP_Leaf 0x800000 /* Expr.pLeft, .pRight, .u.pSelect all NULL */ |
| 18170 | 18177 | #define EP_WinFunc 0x1000000 /* TK_FUNCTION with Expr.y.pWin set */ |
| 18171 | 18178 | #define EP_Subrtn 0x2000000 /* Uses Expr.y.sub. TK_IN, _SELECT, or _EXISTS */ |
| 18172 | 18179 | #define EP_Quoted 0x4000000 /* TK_ID was originally quoted */ |
| 18173 | 18180 | #define EP_Static 0x8000000 /* Held in memory not obtained from malloc() */ |
| | @@ -18186,12 +18193,12 @@ |
| 18186 | 18193 | */ |
| 18187 | 18194 | #define ExprHasProperty(E,P) (((E)->flags&(P))!=0) |
| 18188 | 18195 | #define ExprHasAllProperty(E,P) (((E)->flags&(P))==(P)) |
| 18189 | 18196 | #define ExprSetProperty(E,P) (E)->flags|=(P) |
| 18190 | 18197 | #define ExprClearProperty(E,P) (E)->flags&=~(P) |
| 18191 | | -#define ExprAlwaysTrue(E) (((E)->flags&(EP_FromJoin|EP_IsTrue))==EP_IsTrue) |
| 18192 | | -#define ExprAlwaysFalse(E) (((E)->flags&(EP_FromJoin|EP_IsFalse))==EP_IsFalse) |
| 18198 | +#define ExprAlwaysTrue(E) (((E)->flags&(EP_OuterON|EP_IsTrue))==EP_IsTrue) |
| 18199 | +#define ExprAlwaysFalse(E) (((E)->flags&(EP_OuterON|EP_IsFalse))==EP_IsFalse) |
| 18193 | 18200 | |
| 18194 | 18201 | /* Macros used to ensure that the correct members of unions are accessed |
| 18195 | 18202 | ** in Expr. |
| 18196 | 18203 | */ |
| 18197 | 18204 | #define ExprUseUToken(E) (((E)->flags&EP_IntValue)==0) |
| | @@ -20595,11 +20602,10 @@ |
| 20595 | 20602 | ** Allowed flags for the 3rd parameter to sqlite3FindInIndex(). |
| 20596 | 20603 | */ |
| 20597 | 20604 | #define IN_INDEX_NOOP_OK 0x0001 /* OK to return IN_INDEX_NOOP */ |
| 20598 | 20605 | #define IN_INDEX_MEMBERSHIP 0x0002 /* IN operator used for membership test */ |
| 20599 | 20606 | #define IN_INDEX_LOOP 0x0004 /* IN operator used as a loop */ |
| 20600 | | -#define IN_INDEX_REUSE_CUR 0x0008 /* Reuse prior table cursor */ |
| 20601 | 20607 | SQLITE_PRIVATE int sqlite3FindInIndex(Parse *, Expr *, u32, int*, int*, int*); |
| 20602 | 20608 | |
| 20603 | 20609 | SQLITE_PRIVATE int sqlite3JournalOpen(sqlite3_vfs *, const char *, sqlite3_file *, int, int); |
| 20604 | 20610 | SQLITE_PRIVATE int sqlite3JournalSize(sqlite3_vfs *); |
| 20605 | 20611 | #if defined(SQLITE_ENABLE_ATOMIC_WRITE) \ |
| | @@ -30545,11 +30551,13 @@ |
| 30545 | 30551 | /* |
| 30546 | 30552 | ** If pExpr has a byte offset for the start of a token, record that as |
| 30547 | 30553 | ** as the error offset. |
| 30548 | 30554 | */ |
| 30549 | 30555 | SQLITE_PRIVATE void sqlite3RecordErrorOffsetOfExpr(sqlite3 *db, const Expr *pExpr){ |
| 30550 | | - while( pExpr && (ExprHasProperty(pExpr,EP_FromJoin) || pExpr->w.iOfst<=0) ){ |
| 30556 | + while( pExpr |
| 30557 | + && (ExprHasProperty(pExpr,EP_OuterON|EP_InnerON) || pExpr->w.iOfst<=0) |
| 30558 | + ){ |
| 30551 | 30559 | pExpr = pExpr->pLeft; |
| 30552 | 30560 | } |
| 30553 | 30561 | if( pExpr==0 ) return; |
| 30554 | 30562 | db->errByteOffset = pExpr->w.iOfst; |
| 30555 | 30563 | } |
| | @@ -31470,12 +31478,15 @@ |
| 31470 | 31478 | if( pExpr->flags || pExpr->affExpr || pExpr->vvaFlags ){ |
| 31471 | 31479 | StrAccum x; |
| 31472 | 31480 | sqlite3StrAccumInit(&x, 0, zFlgs, sizeof(zFlgs), 0); |
| 31473 | 31481 | sqlite3_str_appendf(&x, " fg.af=%x.%c", |
| 31474 | 31482 | pExpr->flags, pExpr->affExpr ? pExpr->affExpr : 'n'); |
| 31475 | | - if( ExprHasProperty(pExpr, EP_FromJoin) ){ |
| 31476 | | - sqlite3_str_appendf(&x, " iJoin=%d", pExpr->w.iJoin); |
| 31483 | + if( ExprHasProperty(pExpr, EP_OuterON) ){ |
| 31484 | + sqlite3_str_appendf(&x, " outer.iJoin=%d", pExpr->w.iJoin); |
| 31485 | + } |
| 31486 | + if( ExprHasProperty(pExpr, EP_InnerON) ){ |
| 31487 | + sqlite3_str_appendf(&x, " inner.iJoin=%d", pExpr->w.iJoin); |
| 31477 | 31488 | } |
| 31478 | 31489 | if( ExprHasProperty(pExpr, EP_FromDDL) ){ |
| 31479 | 31490 | sqlite3_str_appendf(&x, " DDL"); |
| 31480 | 31491 | } |
| 31481 | 31492 | if( ExprHasVVAProperty(pExpr, EP_Immutable) ){ |
| | @@ -41837,90 +41848,103 @@ |
| 41837 | 41848 | } |
| 41838 | 41849 | return SQLITE_OK; |
| 41839 | 41850 | } |
| 41840 | 41851 | |
| 41841 | 41852 | /* |
| 41842 | | -** If the last component of the pathname in z[0]..z[j-1] is something |
| 41843 | | -** other than ".." then back it out and return true. If the last |
| 41844 | | -** component is empty or if it is ".." then return false. |
| 41845 | | -*/ |
| 41846 | | -static int unixBackupDir(const char *z, int *pJ){ |
| 41847 | | - int j = *pJ; |
| 41848 | | - int i; |
| 41849 | | - if( j<=0 ) return 0; |
| 41850 | | - for(i=j-1; i>0 && z[i-1]!='/'; i--){} |
| 41851 | | - if( i==0 ) return 0; |
| 41852 | | - if( z[i]=='.' && i==j-2 && z[i+1]=='.' ) return 0; |
| 41853 | | - *pJ = i-1; |
| 41854 | | - return 1; |
| 41855 | | -} |
| 41856 | | - |
| 41857 | | -/* |
| 41858 | | -** Convert a relative pathname into a full pathname. Also |
| 41859 | | -** simplify the pathname as follows: |
| 41860 | | -** |
| 41861 | | -** Remove all instances of /./ |
| 41862 | | -** Remove all isntances of /X/../ for any X |
| 41863 | | -*/ |
| 41864 | | -static int mkFullPathname( |
| 41865 | | - const char *zPath, /* Input path */ |
| 41866 | | - char *zOut, /* Output buffer */ |
| 41867 | | - int nOut /* Allocated size of buffer zOut */ |
| 41868 | | -){ |
| 41869 | | - int nPath = sqlite3Strlen30(zPath); |
| 41870 | | - int iOff = 0; |
| 41871 | | - int i, j; |
| 41872 | | - if( zPath[0]!='/' ){ |
| 41873 | | - if( osGetcwd(zOut, nOut-2)==0 ){ |
| 41874 | | - return unixLogError(SQLITE_CANTOPEN_BKPT, "getcwd", zPath); |
| 41875 | | - } |
| 41876 | | - iOff = sqlite3Strlen30(zOut); |
| 41877 | | - zOut[iOff++] = '/'; |
| 41878 | | - } |
| 41879 | | - if( (iOff+nPath+1)>nOut ){ |
| 41880 | | - /* SQLite assumes that xFullPathname() nul-terminates the output buffer |
| 41881 | | - ** even if it returns an error. */ |
| 41882 | | - zOut[iOff] = '\0'; |
| 41883 | | - return SQLITE_CANTOPEN_BKPT; |
| 41884 | | - } |
| 41885 | | - sqlite3_snprintf(nOut-iOff, &zOut[iOff], "%s", zPath); |
| 41886 | | - |
| 41887 | | - /* Remove duplicate '/' characters. Except, two // at the beginning |
| 41888 | | - ** of a pathname is allowed since this is important on windows. */ |
| 41889 | | - for(i=j=1; zOut[i]; i++){ |
| 41890 | | - zOut[j++] = zOut[i]; |
| 41891 | | - while( zOut[i]=='/' && zOut[i+1]=='/' ) i++; |
| 41892 | | - } |
| 41893 | | - zOut[j] = 0; |
| 41894 | | - |
| 41895 | | - assert( zOut[0]=='/' ); |
| 41896 | | - for(i=j=0; zOut[i]; i++){ |
| 41897 | | - if( zOut[i]=='/' ){ |
| 41898 | | - /* Skip over internal "/." directory components */ |
| 41899 | | - if( zOut[i+1]=='.' && zOut[i+2]=='/' ){ |
| 41900 | | - i += 1; |
| 41901 | | - continue; |
| 41902 | | - } |
| 41903 | | - |
| 41904 | | - /* If this is a "/.." directory component then back out the |
| 41905 | | - ** previous term of the directory if it is something other than "..". |
| 41906 | | - */ |
| 41907 | | - if( zOut[i+1]=='.' |
| 41908 | | - && zOut[i+2]=='.' |
| 41909 | | - && zOut[i+3]=='/' |
| 41910 | | - && unixBackupDir(zOut, &j) |
| 41911 | | - ){ |
| 41912 | | - i += 2; |
| 41913 | | - continue; |
| 41914 | | - } |
| 41915 | | - } |
| 41916 | | - if( ALWAYS(j>=0) ) zOut[j] = zOut[i]; |
| 41917 | | - j++; |
| 41918 | | - } |
| 41919 | | - if( NEVER(j==0) ) zOut[j++] = '/'; |
| 41920 | | - zOut[j] = 0; |
| 41921 | | - return SQLITE_OK; |
| 41853 | +** A pathname under construction |
| 41854 | +*/ |
| 41855 | +typedef struct DbPath DbPath; |
| 41856 | +struct DbPath { |
| 41857 | + int rc; /* Non-zero following any error */ |
| 41858 | + int nSymlink; /* Number of symlinks resolved */ |
| 41859 | + char *zOut; /* Write the pathname here */ |
| 41860 | + int nOut; /* Bytes of space available to zOut[] */ |
| 41861 | + int nUsed; /* Bytes of zOut[] currently being used */ |
| 41862 | +}; |
| 41863 | + |
| 41864 | +/* Forward reference */ |
| 41865 | +static void appendAllPathElements(DbPath*,const char*); |
| 41866 | + |
| 41867 | +/* |
| 41868 | +** Append a single path element to the DbPath under construction |
| 41869 | +*/ |
| 41870 | +static void appendOnePathElement( |
| 41871 | + DbPath *pPath, /* Path under construction, to which to append zName */ |
| 41872 | + const char *zName, /* Name to append to pPath. Not zero-terminated */ |
| 41873 | + int nName /* Number of significant bytes in zName */ |
| 41874 | +){ |
| 41875 | + assert( nName>0 ); |
| 41876 | + assert( zName!=0 ); |
| 41877 | + if( zName[0]=='.' ){ |
| 41878 | + if( nName==1 ) return; |
| 41879 | + if( zName[1]=='.' && nName==2 ){ |
| 41880 | + if( pPath->nUsed<=1 ){ |
| 41881 | + pPath->rc = SQLITE_ERROR; |
| 41882 | + return; |
| 41883 | + } |
| 41884 | + assert( pPath->zOut[0]=='/' ); |
| 41885 | + while( pPath->zOut[--pPath->nUsed]!='/' ){} |
| 41886 | + return; |
| 41887 | + } |
| 41888 | + } |
| 41889 | + if( pPath->nUsed + nName + 2 >= pPath->nOut ){ |
| 41890 | + pPath->rc = SQLITE_ERROR; |
| 41891 | + return; |
| 41892 | + } |
| 41893 | + pPath->zOut[pPath->nUsed++] = '/'; |
| 41894 | + memcpy(&pPath->zOut[pPath->nUsed], zName, nName); |
| 41895 | + pPath->nUsed += nName; |
| 41896 | +#if defined(HAVE_READLINK) && defined(HAVE_LSTAT) |
| 41897 | + if( pPath->rc==SQLITE_OK ){ |
| 41898 | + const char *zIn; |
| 41899 | + struct stat buf; |
| 41900 | + pPath->zOut[pPath->nUsed] = 0; |
| 41901 | + zIn = pPath->zOut; |
| 41902 | + if( osLstat(zIn, &buf)!=0 ){ |
| 41903 | + if( errno!=ENOENT ){ |
| 41904 | + pPath->rc = unixLogError(SQLITE_CANTOPEN_BKPT, "lstat", zIn); |
| 41905 | + } |
| 41906 | + }else if( S_ISLNK(buf.st_mode) ){ |
| 41907 | + ssize_t got; |
| 41908 | + char zLnk[SQLITE_MAX_PATHLEN+2]; |
| 41909 | + if( pPath->nSymlink++ > SQLITE_MAX_SYMLINK ){ |
| 41910 | + pPath->rc = SQLITE_CANTOPEN_BKPT; |
| 41911 | + return; |
| 41912 | + } |
| 41913 | + got = osReadlink(zIn, zLnk, sizeof(zLnk)-2); |
| 41914 | + if( got<=0 || got>=sizeof(zLnk)-2 ){ |
| 41915 | + pPath->rc = unixLogError(SQLITE_CANTOPEN_BKPT, "readlink", zIn); |
| 41916 | + return; |
| 41917 | + } |
| 41918 | + zLnk[got] = 0; |
| 41919 | + if( zLnk[0]=='/' ){ |
| 41920 | + pPath->nUsed = 0; |
| 41921 | + }else{ |
| 41922 | + pPath->nUsed -= nName + 1; |
| 41923 | + } |
| 41924 | + appendAllPathElements(pPath, zLnk); |
| 41925 | + } |
| 41926 | + } |
| 41927 | +#endif |
| 41928 | +} |
| 41929 | + |
| 41930 | +/* |
| 41931 | +** Append all path elements in zPath to the DbPath under construction. |
| 41932 | +*/ |
| 41933 | +static void appendAllPathElements( |
| 41934 | + DbPath *pPath, /* Path under construction, to which to append zName */ |
| 41935 | + const char *zPath /* Path to append to pPath. Is zero-terminated */ |
| 41936 | +){ |
| 41937 | + int i = 0; |
| 41938 | + int j = 0; |
| 41939 | + do{ |
| 41940 | + while( zPath[i] && zPath[i]!='/' ){ i++; } |
| 41941 | + if( i>j ){ |
| 41942 | + appendOnePathElement(pPath, &zPath[j], i-j); |
| 41943 | + } |
| 41944 | + j = i+1; |
| 41945 | + }while( zPath[i++] ); |
| 41922 | 41946 | } |
| 41923 | 41947 | |
| 41924 | 41948 | /* |
| 41925 | 41949 | ** Turn a relative pathname into a full pathname. The relative path |
| 41926 | 41950 | ** is stored as a nul-terminated string in the buffer pointed to by |
| | @@ -41934,89 +41958,29 @@ |
| 41934 | 41958 | sqlite3_vfs *pVfs, /* Pointer to vfs object */ |
| 41935 | 41959 | const char *zPath, /* Possibly relative input path */ |
| 41936 | 41960 | int nOut, /* Size of output buffer in bytes */ |
| 41937 | 41961 | char *zOut /* Output buffer */ |
| 41938 | 41962 | ){ |
| 41939 | | -#if !defined(HAVE_READLINK) || !defined(HAVE_LSTAT) |
| 41940 | | - return mkFullPathname(zPath, zOut, nOut); |
| 41941 | | -#else |
| 41942 | | - int rc = SQLITE_OK; |
| 41943 | | - int nByte; |
| 41944 | | - int nLink = 0; /* Number of symbolic links followed so far */ |
| 41945 | | - const char *zIn = zPath; /* Input path for each iteration of loop */ |
| 41946 | | - char *zDel = 0; |
| 41947 | | - |
| 41948 | | - assert( pVfs->mxPathname==MAX_PATHNAME ); |
| 41949 | | - UNUSED_PARAMETER(pVfs); |
| 41950 | | - |
| 41951 | | - /* It's odd to simulate an io-error here, but really this is just |
| 41952 | | - ** using the io-error infrastructure to test that SQLite handles this |
| 41953 | | - ** function failing. This function could fail if, for example, the |
| 41954 | | - ** current working directory has been unlinked. |
| 41955 | | - */ |
| 41956 | | - SimulateIOError( return SQLITE_ERROR ); |
| 41957 | | - |
| 41958 | | - do { |
| 41959 | | - |
| 41960 | | - /* Call stat() on path zIn. Set bLink to true if the path is a symbolic |
| 41961 | | - ** link, or false otherwise. */ |
| 41962 | | - int bLink = 0; |
| 41963 | | - struct stat buf; |
| 41964 | | - if( osLstat(zIn, &buf)!=0 ){ |
| 41965 | | - if( errno!=ENOENT ){ |
| 41966 | | - rc = unixLogError(SQLITE_CANTOPEN_BKPT, "lstat", zIn); |
| 41967 | | - } |
| 41968 | | - }else{ |
| 41969 | | - bLink = S_ISLNK(buf.st_mode); |
| 41970 | | - } |
| 41971 | | - |
| 41972 | | - if( bLink ){ |
| 41973 | | - nLink++; |
| 41974 | | - if( zDel==0 ){ |
| 41975 | | - zDel = sqlite3_malloc(nOut); |
| 41976 | | - if( zDel==0 ) rc = SQLITE_NOMEM_BKPT; |
| 41977 | | - }else if( nLink>=SQLITE_MAX_SYMLINKS ){ |
| 41978 | | - rc = SQLITE_CANTOPEN_BKPT; |
| 41979 | | - } |
| 41980 | | - |
| 41981 | | - if( rc==SQLITE_OK ){ |
| 41982 | | - nByte = osReadlink(zIn, zDel, nOut-1); |
| 41983 | | - if( nByte<0 ){ |
| 41984 | | - rc = unixLogError(SQLITE_CANTOPEN_BKPT, "readlink", zIn); |
| 41985 | | - }else{ |
| 41986 | | - if( zDel[0]!='/' ){ |
| 41987 | | - int n; |
| 41988 | | - for(n = sqlite3Strlen30(zIn); n>0 && zIn[n-1]!='/'; n--); |
| 41989 | | - if( nByte+n+1>nOut ){ |
| 41990 | | - rc = SQLITE_CANTOPEN_BKPT; |
| 41991 | | - }else{ |
| 41992 | | - memmove(&zDel[n], zDel, nByte+1); |
| 41993 | | - memcpy(zDel, zIn, n); |
| 41994 | | - nByte += n; |
| 41995 | | - } |
| 41996 | | - } |
| 41997 | | - zDel[nByte] = '\0'; |
| 41998 | | - } |
| 41999 | | - } |
| 42000 | | - |
| 42001 | | - zIn = zDel; |
| 42002 | | - } |
| 42003 | | - |
| 42004 | | - assert( rc!=SQLITE_OK || zIn!=zOut || zIn[0]=='/' ); |
| 42005 | | - if( rc==SQLITE_OK && zIn!=zOut ){ |
| 42006 | | - rc = mkFullPathname(zIn, zOut, nOut); |
| 42007 | | - } |
| 42008 | | - if( bLink==0 ) break; |
| 42009 | | - zIn = zOut; |
| 42010 | | - }while( rc==SQLITE_OK ); |
| 42011 | | - |
| 42012 | | - sqlite3_free(zDel); |
| 42013 | | - if( rc==SQLITE_OK && nLink ) rc = SQLITE_OK_SYMLINK; |
| 42014 | | - return rc; |
| 42015 | | -#endif /* HAVE_READLINK && HAVE_LSTAT */ |
| 42016 | | -} |
| 42017 | | - |
| 41963 | + DbPath path; |
| 41964 | + path.rc = 0; |
| 41965 | + path.nUsed = 0; |
| 41966 | + path.nSymlink = 0; |
| 41967 | + path.nOut = nOut; |
| 41968 | + path.zOut = zOut; |
| 41969 | + if( zPath[0]!='/' ){ |
| 41970 | + char zPwd[SQLITE_MAX_PATHLEN+2]; |
| 41971 | + if( osGetcwd(zPwd, sizeof(zPwd)-2)==0 ){ |
| 41972 | + return unixLogError(SQLITE_CANTOPEN_BKPT, "getcwd", zPath); |
| 41973 | + } |
| 41974 | + appendAllPathElements(&path, zPwd); |
| 41975 | + } |
| 41976 | + appendAllPathElements(&path, zPath); |
| 41977 | + zOut[path.nUsed] = 0; |
| 41978 | + if( path.rc || path.nUsed<2 ) return SQLITE_CANTOPEN_BKPT; |
| 41979 | + if( path.nSymlink ) return SQLITE_OK_SYMLINK; |
| 41980 | + return SQLITE_OK; |
| 41981 | +} |
| 42018 | 41982 | |
| 42019 | 41983 | #ifndef SQLITE_OMIT_LOAD_EXTENSION |
| 42020 | 41984 | /* |
| 42021 | 41985 | ** Interfaces for opening a shared library, finding entry points |
| 42022 | 41986 | ** within the shared library, and closing the shared library. |
| | @@ -82215,15 +82179,13 @@ |
| 82215 | 82179 | if( c=='4' ){ |
| 82216 | 82180 | sqlite3_str_appendall(&x, zP4); |
| 82217 | 82181 | }else if( c=='X' ){ |
| 82218 | 82182 | if( pOp->zComment && pOp->zComment[0] ){ |
| 82219 | 82183 | sqlite3_str_appendall(&x, pOp->zComment); |
| 82220 | | - }else{ |
| 82221 | | - sqlite3_str_appendall(&x, zSynopsis+1); |
| 82184 | + seenCom = 1; |
| 82185 | + break; |
| 82222 | 82186 | } |
| 82223 | | - seenCom = 1; |
| 82224 | | - break; |
| 82225 | 82187 | }else{ |
| 82226 | 82188 | int v1 = translateP(c, pOp); |
| 82227 | 82189 | int v2; |
| 82228 | 82190 | if( strncmp(zSynopsis+ii+1, "@P", 2)==0 ){ |
| 82229 | 82191 | ii += 3; |
| | @@ -102345,11 +102307,11 @@ |
| 102345 | 102307 | for(i=0, p=pNC; p && i<ArraySize(anRef); p=p->pNext, i++){ |
| 102346 | 102308 | anRef[i] = p->nRef; |
| 102347 | 102309 | } |
| 102348 | 102310 | sqlite3WalkExpr(pWalker, pExpr->pLeft); |
| 102349 | 102311 | if( 0==sqlite3ExprCanBeNull(pExpr->pLeft) && !IN_RENAME_OBJECT ){ |
| 102350 | | - testcase( ExprHasProperty(pExpr, EP_FromJoin) ); |
| 102312 | + testcase( ExprHasProperty(pExpr, EP_OuterON) ); |
| 102351 | 102313 | assert( !ExprHasProperty(pExpr, EP_IntValue) ); |
| 102352 | 102314 | if( pExpr->op==TK_NOTNULL ){ |
| 102353 | 102315 | pExpr->u.zToken = "true"; |
| 102354 | 102316 | ExprSetProperty(pExpr, EP_IsTrue); |
| 102355 | 102317 | }else{ |
| | @@ -104636,10 +104598,11 @@ |
| 104636 | 104598 | pNew = sqlite3ExprAlloc(db, TK_FUNCTION, pToken, 1); |
| 104637 | 104599 | if( pNew==0 ){ |
| 104638 | 104600 | sqlite3ExprListDelete(db, pList); /* Avoid memory leak when malloc fails */ |
| 104639 | 104601 | return 0; |
| 104640 | 104602 | } |
| 104603 | + assert( !ExprHasProperty(pNew, EP_InnerON|EP_OuterON) ); |
| 104641 | 104604 | pNew->w.iOfst = (int)(pToken->z - pParse->zTail); |
| 104642 | 104605 | if( pList |
| 104643 | 104606 | && pList->nExpr > pParse->db->aLimit[SQLITE_LIMIT_FUNCTION_ARG] |
| 104644 | 104607 | && !pParse->nested |
| 104645 | 104608 | ){ |
| | @@ -104914,11 +104877,11 @@ |
| 104914 | 104877 | #endif |
| 104915 | 104878 | ){ |
| 104916 | 104879 | nSize = EXPR_FULLSIZE; |
| 104917 | 104880 | }else{ |
| 104918 | 104881 | assert( !ExprHasProperty(p, EP_TokenOnly|EP_Reduced) ); |
| 104919 | | - assert( !ExprHasProperty(p, EP_FromJoin) ); |
| 104882 | + assert( !ExprHasProperty(p, EP_OuterON) ); |
| 104920 | 104883 | assert( !ExprHasProperty(p, EP_MemToken) ); |
| 104921 | 104884 | assert( !ExprHasVVAProperty(p, EP_NoReduce) ); |
| 104922 | 104885 | if( p->pLeft || p->x.pList ){ |
| 104923 | 104886 | nSize = EXPR_REDUCEDSIZE | EP_Reduced; |
| 104924 | 104887 | }else{ |
| | @@ -105740,11 +105703,11 @@ |
| 105740 | 105703 | static int exprNodeIsConstant(Walker *pWalker, Expr *pExpr){ |
| 105741 | 105704 | |
| 105742 | 105705 | /* If pWalker->eCode is 2 then any term of the expression that comes from |
| 105743 | 105706 | ** the ON or USING clauses of an outer join disqualifies the expression |
| 105744 | 105707 | ** from being considered constant. */ |
| 105745 | | - if( pWalker->eCode==2 && ExprHasProperty(pExpr, EP_FromJoin) ){ |
| 105708 | + if( pWalker->eCode==2 && ExprHasProperty(pExpr, EP_OuterON) ){ |
| 105746 | 105709 | pWalker->eCode = 0; |
| 105747 | 105710 | return WRC_Abort; |
| 105748 | 105711 | } |
| 105749 | 105712 | |
| 105750 | 105713 | switch( pExpr->op ){ |
| | @@ -105887,14 +105850,14 @@ |
| 105887 | 105850 | SQLITE_PRIVATE int sqlite3ExprIsTableConstraint(Expr *pExpr, const SrcItem *pSrc){ |
| 105888 | 105851 | if( pSrc->fg.jointype & JT_LTORJ ){ |
| 105889 | 105852 | return 0; /* rule (3) */ |
| 105890 | 105853 | } |
| 105891 | 105854 | if( pSrc->fg.jointype & JT_LEFT ){ |
| 105892 | | - if( !ExprHasProperty(pExpr, EP_FromJoin) ) return 0; /* rule (4a) */ |
| 105855 | + if( !ExprHasProperty(pExpr, EP_OuterON) ) return 0; /* rule (4a) */ |
| 105893 | 105856 | if( pExpr->w.iJoin!=pSrc->iCursor ) return 0; /* rule (4b) */ |
| 105894 | 105857 | }else{ |
| 105895 | | - if( ExprHasProperty(pExpr, EP_FromJoin) ) return 0; /* rule (5) */ |
| 105858 | + if( ExprHasProperty(pExpr, EP_OuterON) ) return 0; /* rule (5) */ |
| 105896 | 105859 | } |
| 105897 | 105860 | return sqlite3ExprIsTableConstant(pExpr, pSrc->iCursor); /* rules (1), (2) */ |
| 105898 | 105861 | } |
| 105899 | 105862 | |
| 105900 | 105863 | |
| | @@ -106312,15 +106275,11 @@ |
| 106312 | 106275 | int mustBeUnique; /* True if RHS must be unique */ |
| 106313 | 106276 | Vdbe *v = sqlite3GetVdbe(pParse); /* Virtual machine being coded */ |
| 106314 | 106277 | |
| 106315 | 106278 | assert( pX->op==TK_IN ); |
| 106316 | 106279 | mustBeUnique = (inFlags & IN_INDEX_LOOP)!=0; |
| 106317 | | - if( pX->iTable && (inFlags & IN_INDEX_REUSE_CUR)!=0 ){ |
| 106318 | | - iTab = pX->iTable; |
| 106319 | | - }else{ |
| 106320 | | - iTab = pParse->nTab++; |
| 106321 | | - } |
| 106280 | + iTab = pParse->nTab++; |
| 106322 | 106281 | |
| 106323 | 106282 | /* If the RHS of this IN(...) operator is a SELECT, and if it matters |
| 106324 | 106283 | ** whether or not the SELECT result contains NULL values, check whether |
| 106325 | 106284 | ** or not NULL is actually possible (it may not be, for example, due |
| 106326 | 106285 | ** to NOT NULL constraints in the schema). If no NULL values are possible, |
| | @@ -106650,13 +106609,12 @@ |
| 106650 | 106609 | pExpr->x.pSelect->selId)); |
| 106651 | 106610 | } |
| 106652 | 106611 | assert( ExprUseYSub(pExpr) ); |
| 106653 | 106612 | sqlite3VdbeAddOp2(v, OP_Gosub, pExpr->y.sub.regReturn, |
| 106654 | 106613 | pExpr->y.sub.iAddr); |
| 106655 | | - if( iTab!=pExpr->iTable ){ |
| 106656 | | - sqlite3VdbeAddOp2(v, OP_OpenDup, iTab, pExpr->iTable); |
| 106657 | | - } |
| 106614 | + assert( iTab!=pExpr->iTable ); |
| 106615 | + sqlite3VdbeAddOp2(v, OP_OpenDup, iTab, pExpr->iTable); |
| 106658 | 106616 | sqlite3VdbeJumpHere(v, addrOnce); |
| 106659 | 106617 | return; |
| 106660 | 106618 | } |
| 106661 | 106619 | |
| 106662 | 106620 | /* Begin coding the subroutine */ |
| | @@ -108645,12 +108603,12 @@ |
| 108645 | 108603 | }else{ |
| 108646 | 108604 | /* Mark the expression is being from the ON or USING clause of a join |
| 108647 | 108605 | ** so that the sqlite3ExprCodeTarget() routine will not attempt to move |
| 108648 | 108606 | ** it into the Parse.pConstExpr list. We should use a new bit for this, |
| 108649 | 108607 | ** for clarity, but we are out of bits in the Expr.flags field so we |
| 108650 | | - ** have to reuse the EP_FromJoin bit. Bummer. */ |
| 108651 | | - pDel->flags |= EP_FromJoin; |
| 108608 | + ** have to reuse the EP_OuterON bit. Bummer. */ |
| 108609 | + pDel->flags |= EP_OuterON; |
| 108652 | 108610 | sqlite3ExprCodeTarget(pParse, &exprAnd, dest); |
| 108653 | 108611 | } |
| 108654 | 108612 | sqlite3ReleaseTempReg(pParse, regFree1); |
| 108655 | 108613 | } |
| 108656 | 108614 | sqlite3ExprDelete(db, pDel); |
| | @@ -109331,11 +109289,11 @@ |
| 109331 | 109289 | ** (never setting pWalker->eCode) is a harmless missed optimization. |
| 109332 | 109290 | */ |
| 109333 | 109291 | static int impliesNotNullRow(Walker *pWalker, Expr *pExpr){ |
| 109334 | 109292 | testcase( pExpr->op==TK_AGG_COLUMN ); |
| 109335 | 109293 | testcase( pExpr->op==TK_AGG_FUNCTION ); |
| 109336 | | - if( ExprHasProperty(pExpr, EP_FromJoin) ) return WRC_Prune; |
| 109294 | + if( ExprHasProperty(pExpr, EP_OuterON) ) return WRC_Prune; |
| 109337 | 109295 | switch( pExpr->op ){ |
| 109338 | 109296 | case TK_ISNOT: |
| 109339 | 109297 | case TK_ISNULL: |
| 109340 | 109298 | case TK_NOTNULL: |
| 109341 | 109299 | case TK_IS: |
| | @@ -109428,11 +109386,11 @@ |
| 109428 | 109386 | ** is NULL. A false negative is merely a missed optimization opportunity. |
| 109429 | 109387 | ** |
| 109430 | 109388 | ** False positives are not allowed, however. A false positive may result |
| 109431 | 109389 | ** in an incorrect answer. |
| 109432 | 109390 | ** |
| 109433 | | -** Terms of p that are marked with EP_FromJoin (and hence that come from |
| 109391 | +** Terms of p that are marked with EP_OuterON (and hence that come from |
| 109434 | 109392 | ** the ON or USING clauses of OUTER JOINS) are excluded from the analysis. |
| 109435 | 109393 | ** |
| 109436 | 109394 | ** This routine is used to check if a LEFT JOIN can be converted into |
| 109437 | 109395 | ** an ordinary JOIN. The p argument is the WHERE clause. If the WHERE |
| 109438 | 109396 | ** clause requires that some column of the right table of the LEFT JOIN |
| | @@ -135849,15 +135807,15 @@ |
| 135849 | 135807 | } |
| 135850 | 135808 | return 0; |
| 135851 | 135809 | } |
| 135852 | 135810 | |
| 135853 | 135811 | /* |
| 135854 | | -** Set the EP_FromJoin property on all terms of the given expression. |
| 135812 | +** Set the EP_OuterON property on all terms of the given expression. |
| 135855 | 135813 | ** And set the Expr.w.iJoin to iTable for every term in the |
| 135856 | 135814 | ** expression. |
| 135857 | 135815 | ** |
| 135858 | | -** The EP_FromJoin property is used on terms of an expression to tell |
| 135816 | +** The EP_OuterON property is used on terms of an expression to tell |
| 135859 | 135817 | ** the OUTER JOIN processing logic that this term is part of the |
| 135860 | 135818 | ** join restriction specified in the ON or USING clause and not a part |
| 135861 | 135819 | ** of the more general WHERE clause. These terms are moved over to the |
| 135862 | 135820 | ** WHERE clause during join processing but we need to remember that they |
| 135863 | 135821 | ** originated in the ON or USING clause. |
| | @@ -135875,11 +135833,11 @@ |
| 135875 | 135833 | ** defer the handling of t1.x=5, it will be processed immediately |
| 135876 | 135834 | ** after the t1 loop and rows with t1.x!=5 will never appear in |
| 135877 | 135835 | ** the output, which is incorrect. |
| 135878 | 135836 | */ |
| 135879 | 135837 | SQLITE_PRIVATE void sqlite3SetJoinExpr(Expr *p, int iTable, u32 joinFlag){ |
| 135880 | | - assert( joinFlag==EP_FromJoin || joinFlag==EP_InnerJoin ); |
| 135838 | + assert( joinFlag==EP_OuterON || joinFlag==EP_InnerON ); |
| 135881 | 135839 | while( p ){ |
| 135882 | 135840 | ExprSetProperty(p, joinFlag); |
| 135883 | 135841 | assert( !ExprHasProperty(p, EP_TokenOnly|EP_Reduced) ); |
| 135884 | 135842 | ExprSetVVAProperty(p, EP_NoReduce); |
| 135885 | 135843 | p->w.iJoin = iTable; |
| | @@ -135896,21 +135854,21 @@ |
| 135896 | 135854 | p = p->pRight; |
| 135897 | 135855 | } |
| 135898 | 135856 | } |
| 135899 | 135857 | |
| 135900 | 135858 | /* Undo the work of sqlite3SetJoinExpr(). In the expression p, convert every |
| 135901 | | -** term that is marked with EP_FromJoin and w.iJoin==iTable into |
| 135902 | | -** an ordinary term that omits the EP_FromJoin mark. |
| 135859 | +** term that is marked with EP_OuterON and w.iJoin==iTable into |
| 135860 | +** an ordinary term that omits the EP_OuterON mark. |
| 135903 | 135861 | ** |
| 135904 | 135862 | ** This happens when a LEFT JOIN is simplified into an ordinary JOIN. |
| 135905 | 135863 | */ |
| 135906 | 135864 | static void unsetJoinExpr(Expr *p, int iTable){ |
| 135907 | 135865 | while( p ){ |
| 135908 | | - if( ExprHasProperty(p, EP_FromJoin) |
| 135866 | + if( ExprHasProperty(p, EP_OuterON) |
| 135909 | 135867 | && (iTable<0 || p->w.iJoin==iTable) ){ |
| 135910 | | - ExprClearProperty(p, EP_FromJoin); |
| 135911 | | - ExprSetProperty(p, EP_InnerJoin); |
| 135868 | + ExprClearProperty(p, EP_OuterON); |
| 135869 | + ExprSetProperty(p, EP_InnerON); |
| 135912 | 135870 | } |
| 135913 | 135871 | if( p->op==TK_COLUMN && p->iTable==iTable ){ |
| 135914 | 135872 | ExprClearProperty(p, EP_CanBeNull); |
| 135915 | 135873 | } |
| 135916 | 135874 | if( p->op==TK_FUNCTION ){ |
| | @@ -135934,12 +135892,12 @@ |
| 135934 | 135892 | ** do not need to be concerned with NATURAL joins and we only have |
| 135935 | 135893 | ** think about USING joins. |
| 135936 | 135894 | ** |
| 135937 | 135895 | ** * ON and USING clauses result in extra terms being added to the |
| 135938 | 135896 | ** WHERE clause to enforce the specified constraints. The extra |
| 135939 | | -** WHERE clause terms will be tagged with EP_FromJoin or |
| 135940 | | -** EP_InnerJoin so that we know that they originated in ON/USING. |
| 135897 | +** WHERE clause terms will be tagged with EP_OuterON or |
| 135898 | +** EP_InnerON so that we know that they originated in ON/USING. |
| 135941 | 135899 | ** |
| 135942 | 135900 | ** The terms of a FROM clause are contained in the Select.pSrc structure. |
| 135943 | 135901 | ** The left most table is the first entry in Select.pSrc. The right-most |
| 135944 | 135902 | ** table is the last entry. The join operator is held in the entry to |
| 135945 | 135903 | ** the right. Thus entry 1 contains the join operator for the join between |
| | @@ -135960,11 +135918,11 @@ |
| 135960 | 135918 | for(i=0; i<pSrc->nSrc-1; i++, pRight++, pLeft++){ |
| 135961 | 135919 | Table *pRightTab = pRight->pTab; |
| 135962 | 135920 | u32 joinType; |
| 135963 | 135921 | |
| 135964 | 135922 | if( NEVER(pLeft->pTab==0 || pRightTab==0) ) continue; |
| 135965 | | - joinType = (pRight->fg.jointype & JT_OUTER)!=0 ? EP_FromJoin : EP_InnerJoin; |
| 135923 | + joinType = (pRight->fg.jointype & JT_OUTER)!=0 ? EP_OuterON : EP_InnerON; |
| 135966 | 135924 | |
| 135967 | 135925 | /* If this is a NATURAL join, synthesize an approprate USING clause |
| 135968 | 135926 | ** to specify which columns should be joined. |
| 135969 | 135927 | */ |
| 135970 | 135928 | if( pRight->fg.jointype & JT_NATURAL ){ |
| | @@ -139233,11 +139191,11 @@ |
| 139233 | 139191 | static Expr *substExpr( |
| 139234 | 139192 | SubstContext *pSubst, /* Description of the substitution */ |
| 139235 | 139193 | Expr *pExpr /* Expr in which substitution occurs */ |
| 139236 | 139194 | ){ |
| 139237 | 139195 | if( pExpr==0 ) return 0; |
| 139238 | | - if( ExprHasProperty(pExpr, EP_FromJoin) |
| 139196 | + if( ExprHasProperty(pExpr, EP_OuterON) |
| 139239 | 139197 | && pExpr->w.iJoin==pSubst->iTable |
| 139240 | 139198 | ){ |
| 139241 | 139199 | pExpr->w.iJoin = pSubst->iNewTable; |
| 139242 | 139200 | } |
| 139243 | 139201 | if( pExpr->op==TK_COLUMN |
| | @@ -139274,13 +139232,13 @@ |
| 139274 | 139232 | return pExpr; |
| 139275 | 139233 | } |
| 139276 | 139234 | if( pSubst->isOuterJoin ){ |
| 139277 | 139235 | ExprSetProperty(pNew, EP_CanBeNull); |
| 139278 | 139236 | } |
| 139279 | | - if( ExprHasProperty(pExpr,EP_FromJoin|EP_InnerJoin) ){ |
| 139237 | + if( ExprHasProperty(pExpr,EP_OuterON|EP_InnerON) ){ |
| 139280 | 139238 | sqlite3SetJoinExpr(pNew, pExpr->w.iJoin, |
| 139281 | | - pExpr->flags & (EP_FromJoin|EP_InnerJoin)); |
| 139239 | + pExpr->flags & (EP_OuterON|EP_InnerON)); |
| 139282 | 139240 | } |
| 139283 | 139241 | sqlite3ExprDelete(db, pExpr); |
| 139284 | 139242 | pExpr = pNew; |
| 139285 | 139243 | |
| 139286 | 139244 | /* Ensure that the expression now has an implicit collation sequence, |
| | @@ -139440,11 +139398,11 @@ |
| 139440 | 139398 | static int renumberCursorsCb(Walker *pWalker, Expr *pExpr){ |
| 139441 | 139399 | int op = pExpr->op; |
| 139442 | 139400 | if( op==TK_COLUMN || op==TK_IF_NULL_ROW ){ |
| 139443 | 139401 | renumberCursorDoMapping(pWalker, &pExpr->iTable); |
| 139444 | 139402 | } |
| 139445 | | - if( ExprHasProperty(pExpr, EP_FromJoin) ){ |
| 139403 | + if( ExprHasProperty(pExpr, EP_OuterON) ){ |
| 139446 | 139404 | renumberCursorDoMapping(pWalker, &pExpr->w.iJoin); |
| 139447 | 139405 | } |
| 139448 | 139406 | return WRC_Continue; |
| 139449 | 139407 | } |
| 139450 | 139408 | |
| | @@ -140018,11 +139976,11 @@ |
| 140018 | 139976 | pSub->pOrderBy = 0; |
| 140019 | 139977 | } |
| 140020 | 139978 | pWhere = pSub->pWhere; |
| 140021 | 139979 | pSub->pWhere = 0; |
| 140022 | 139980 | if( isOuterJoin>0 ){ |
| 140023 | | - sqlite3SetJoinExpr(pWhere, iNewParent, EP_FromJoin); |
| 139981 | + sqlite3SetJoinExpr(pWhere, iNewParent, EP_OuterON); |
| 140024 | 139982 | } |
| 140025 | 139983 | if( pWhere ){ |
| 140026 | 139984 | if( pParent->pWhere ){ |
| 140027 | 139985 | pParent->pWhere = sqlite3PExpr(pParse, TK_AND, pWhere, pParent->pWhere); |
| 140028 | 139986 | }else{ |
| | @@ -140151,11 +140109,11 @@ |
| 140151 | 140109 | ** found, add it to the pConst structure. |
| 140152 | 140110 | */ |
| 140153 | 140111 | static void findConstInWhere(WhereConst *pConst, Expr *pExpr){ |
| 140154 | 140112 | Expr *pRight, *pLeft; |
| 140155 | 140113 | if( NEVER(pExpr==0) ) return; |
| 140156 | | - if( ExprHasProperty(pExpr, EP_FromJoin) ) return; |
| 140114 | + if( ExprHasProperty(pExpr, EP_OuterON) ) return; |
| 140157 | 140115 | if( pExpr->op==TK_AND ){ |
| 140158 | 140116 | findConstInWhere(pConst, pExpr->pRight); |
| 140159 | 140117 | findConstInWhere(pConst, pExpr->pLeft); |
| 140160 | 140118 | return; |
| 140161 | 140119 | } |
| | @@ -140187,13 +140145,13 @@ |
| 140187 | 140145 | int bIgnoreAffBlob |
| 140188 | 140146 | ){ |
| 140189 | 140147 | int i; |
| 140190 | 140148 | if( pConst->pOomFault[0] ) return WRC_Prune; |
| 140191 | 140149 | if( pExpr->op!=TK_COLUMN ) return WRC_Continue; |
| 140192 | | - if( ExprHasProperty(pExpr, EP_FixedCol|EP_FromJoin) ){ |
| 140150 | + if( ExprHasProperty(pExpr, EP_FixedCol|EP_OuterON) ){ |
| 140193 | 140151 | testcase( ExprHasProperty(pExpr, EP_FixedCol) ); |
| 140194 | | - testcase( ExprHasProperty(pExpr, EP_FromJoin) ); |
| 140152 | + testcase( ExprHasProperty(pExpr, EP_OuterON) ); |
| 140195 | 140153 | return WRC_Continue; |
| 140196 | 140154 | } |
| 140197 | 140155 | for(i=0; i<pConst->nConst; i++){ |
| 140198 | 140156 | Expr *pColumn = pConst->apExpr[i*2]; |
| 140199 | 140157 | if( pColumn==pExpr ) continue; |
| | @@ -140474,16 +140432,16 @@ |
| 140474 | 140432 | pWhere = pWhere->pLeft; |
| 140475 | 140433 | } |
| 140476 | 140434 | |
| 140477 | 140435 | #if 0 /* Legacy code. Checks now done by sqlite3ExprIsTableConstraint() */ |
| 140478 | 140436 | if( isLeftJoin |
| 140479 | | - && (ExprHasProperty(pWhere,EP_FromJoin)==0 |
| 140437 | + && (ExprHasProperty(pWhere,EP_OuterON)==0 |
| 140480 | 140438 | || pWhere->w.iJoin!=iCursor) |
| 140481 | 140439 | ){ |
| 140482 | 140440 | return 0; /* restriction (4) */ |
| 140483 | 140441 | } |
| 140484 | | - if( ExprHasProperty(pWhere,EP_FromJoin) |
| 140442 | + if( ExprHasProperty(pWhere,EP_OuterON) |
| 140485 | 140443 | && pWhere->w.iJoin!=iCursor |
| 140486 | 140444 | ){ |
| 140487 | 140445 | return 0; /* restriction (5) */ |
| 140488 | 140446 | } |
| 140489 | 140447 | #endif |
| | @@ -143178,11 +143136,11 @@ |
| 143178 | 143136 | } |
| 143179 | 143137 | SELECTTRACE(1,pParse,p,("WhereBegin returns\n")); |
| 143180 | 143138 | eDist = sqlite3WhereIsDistinct(pWInfo); |
| 143181 | 143139 | updateAccumulator(pParse, regAcc, pAggInfo, eDist); |
| 143182 | 143140 | if( eDist!=WHERE_DISTINCT_NOOP ){ |
| 143183 | | - struct AggInfo_func *pF = &pAggInfo->aFunc[0]; |
| 143141 | + struct AggInfo_func *pF = pAggInfo->aFunc; |
| 143184 | 143142 | if( pF ){ |
| 143185 | 143143 | fixDistinctOpenEph(pParse, eDist, pF->iDistinct, pF->iDistAddr); |
| 143186 | 143144 | } |
| 143187 | 143145 | } |
| 143188 | 143146 | |
| | @@ -148402,11 +148360,11 @@ |
| 148402 | 148360 | ** This object is a header on a block of allocated memory that will be |
| 148403 | 148361 | ** automatically freed when its WInfo oject is destructed. |
| 148404 | 148362 | */ |
| 148405 | 148363 | struct WhereMemBlock { |
| 148406 | 148364 | WhereMemBlock *pNext; /* Next block in the chain */ |
| 148407 | | - u8 sz; /* Bytes of space */ |
| 148365 | + u64 sz; /* Bytes of space */ |
| 148408 | 148366 | }; |
| 148409 | 148367 | |
| 148410 | 148368 | /* |
| 148411 | 148369 | ** Extra information attached to a WhereLevel that is a RIGHT JOIN. |
| 148412 | 148370 | */ |
| | @@ -149344,11 +149302,11 @@ |
| 149344 | 149302 | */ |
| 149345 | 149303 | static void disableTerm(WhereLevel *pLevel, WhereTerm *pTerm){ |
| 149346 | 149304 | int nLoop = 0; |
| 149347 | 149305 | assert( pTerm!=0 ); |
| 149348 | 149306 | while( (pTerm->wtFlags & TERM_CODED)==0 |
| 149349 | | - && (pLevel->iLeftJoin==0 || ExprHasProperty(pTerm->pExpr, EP_FromJoin)) |
| 149307 | + && (pLevel->iLeftJoin==0 || ExprHasProperty(pTerm->pExpr, EP_OuterON)) |
| 149350 | 149308 | && (pLevel->notReady & pTerm->prereqAll)==0 |
| 149351 | 149309 | ){ |
| 149352 | 149310 | if( nLoop && (pTerm->wtFlags & TERM_LIKE)!=0 ){ |
| 149353 | 149311 | pTerm->wtFlags |= TERM_LIKECOND; |
| 149354 | 149312 | }else{ |
| | @@ -149617,12 +149575,11 @@ |
| 149617 | 149575 | pExpr->iTable = iTab; |
| 149618 | 149576 | } |
| 149619 | 149577 | sqlite3ExprDelete(db, pX); |
| 149620 | 149578 | }else{ |
| 149621 | 149579 | aiMap = (int*)sqlite3DbMallocZero(pParse->db, sizeof(int)*nEq); |
| 149622 | | - eType = sqlite3FindInIndex(pParse, pX, IN_INDEX_LOOP|IN_INDEX_REUSE_CUR, 0, aiMap,&iTab); |
| 149623 | | - iTab = pExpr->iTable; |
| 149580 | + eType = sqlite3FindInIndex(pParse, pX, IN_INDEX_LOOP, 0, aiMap, &iTab); |
| 149624 | 149581 | } |
| 149625 | 149582 | pX = pExpr; |
| 149626 | 149583 | } |
| 149627 | 149584 | |
| 149628 | 149585 | if( eType==IN_INDEX_INDEX_DESC ){ |
| | @@ -150066,20 +150023,20 @@ |
| 150066 | 150023 | ** |
| 150067 | 150024 | ** are also excluded. See codeCursorHintIsOrFunction() for details. |
| 150068 | 150025 | */ |
| 150069 | 150026 | if( pTabItem->fg.jointype & JT_LEFT ){ |
| 150070 | 150027 | Expr *pExpr = pTerm->pExpr; |
| 150071 | | - if( !ExprHasProperty(pExpr, EP_FromJoin) |
| 150028 | + if( !ExprHasProperty(pExpr, EP_OuterON) |
| 150072 | 150029 | || pExpr->w.iJoin!=pTabItem->iCursor |
| 150073 | 150030 | ){ |
| 150074 | 150031 | sWalker.eCode = 0; |
| 150075 | 150032 | sWalker.xExprCallback = codeCursorHintIsOrFunction; |
| 150076 | 150033 | sqlite3WalkExpr(&sWalker, pTerm->pExpr); |
| 150077 | 150034 | if( sWalker.eCode ) continue; |
| 150078 | 150035 | } |
| 150079 | 150036 | }else{ |
| 150080 | | - if( ExprHasProperty(pTerm->pExpr, EP_FromJoin) ) continue; |
| 150037 | + if( ExprHasProperty(pTerm->pExpr, EP_OuterON) ) continue; |
| 150081 | 150038 | } |
| 150082 | 150039 | |
| 150083 | 150040 | /* All terms in pWLoop->aLTerm[] except pEndRange are used to initialize |
| 150084 | 150041 | ** the cursor. These terms are not needed as hints for a pure range |
| 150085 | 150042 | ** scan (that has no == terms) so omit them. */ |
| | @@ -151406,11 +151363,11 @@ |
| 151406 | 151363 | WhereInfo *pSubWInfo; /* Info for single OR-term scan */ |
| 151407 | 151364 | Expr *pOrExpr = pOrTerm->pExpr; /* Current OR clause term */ |
| 151408 | 151365 | Expr *pDelete; /* Local copy of OR clause term */ |
| 151409 | 151366 | int jmp1 = 0; /* Address of jump operation */ |
| 151410 | 151367 | testcase( (pTabItem[0].fg.jointype & JT_LEFT)!=0 |
| 151411 | | - && !ExprHasProperty(pOrExpr, EP_FromJoin) |
| 151368 | + && !ExprHasProperty(pOrExpr, EP_OuterON) |
| 151412 | 151369 | ); /* See TH3 vtab25.400 and ticket 614b25314c766238 */ |
| 151413 | 151370 | pDelete = pOrExpr = sqlite3ExprDup(db, pOrExpr, 0); |
| 151414 | 151371 | if( db->mallocFailed ){ |
| 151415 | 151372 | sqlite3ExprDelete(db, pDelete); |
| 151416 | 151373 | continue; |
| | @@ -151614,16 +151571,23 @@ |
| 151614 | 151571 | pWInfo->untestedTerms = 1; |
| 151615 | 151572 | continue; |
| 151616 | 151573 | } |
| 151617 | 151574 | pE = pTerm->pExpr; |
| 151618 | 151575 | assert( pE!=0 ); |
| 151619 | | - if( (pTabItem->fg.jointype & (JT_LEFT|JT_LTORJ)) |
| 151620 | | - && !ExprHasProperty(pE,EP_FromJoin|EP_InnerJoin) |
| 151621 | | - ){ |
| 151622 | | - continue; |
| 151576 | + if( pTabItem->fg.jointype & (JT_LEFT|JT_LTORJ|JT_RIGHT) ){ |
| 151577 | + if( !ExprHasProperty(pE,EP_OuterON|EP_InnerON) ){ |
| 151578 | + /* Defer processing WHERE clause constraints until after outer |
| 151579 | + ** join processing. tag-20220513a */ |
| 151580 | + continue; |
| 151581 | + }else{ |
| 151582 | + Bitmask m = sqlite3WhereGetMask(&pWInfo->sMaskSet, pE->w.iJoin); |
| 151583 | + if( m & pLevel->notReady ){ |
| 151584 | + /* An ON clause that is not ripe */ |
| 151585 | + continue; |
| 151586 | + } |
| 151587 | + } |
| 151623 | 151588 | } |
| 151624 | | - |
| 151625 | 151589 | if( iLoop==1 && !sqlite3ExprCoveredByIndex(pE, pLevel->iTabCur, pIdx) ){ |
| 151626 | 151590 | iNext = 2; |
| 151627 | 151591 | continue; |
| 151628 | 151592 | } |
| 151629 | 151593 | if( iLoop<3 && (pTerm->wtFlags & TERM_VARSELECT) ){ |
| | @@ -151678,19 +151642,19 @@ |
| 151678 | 151642 | WhereTerm *pAlt; |
| 151679 | 151643 | if( pTerm->wtFlags & (TERM_VIRTUAL|TERM_CODED) ) continue; |
| 151680 | 151644 | if( (pTerm->eOperator & (WO_EQ|WO_IS))==0 ) continue; |
| 151681 | 151645 | if( (pTerm->eOperator & WO_EQUIV)==0 ) continue; |
| 151682 | 151646 | if( pTerm->leftCursor!=iCur ) continue; |
| 151683 | | - if( pTabItem->fg.jointype & (JT_LEFT|JT_LTORJ) ) continue; |
| 151647 | + if( pTabItem->fg.jointype & (JT_LEFT|JT_LTORJ|JT_RIGHT) ) continue; |
| 151684 | 151648 | pE = pTerm->pExpr; |
| 151685 | 151649 | #ifdef WHERETRACE_ENABLED /* 0x800 */ |
| 151686 | 151650 | if( sqlite3WhereTrace & 0x800 ){ |
| 151687 | 151651 | sqlite3DebugPrintf("Coding transitive constraint:\n"); |
| 151688 | 151652 | sqlite3WhereTermPrint(pTerm, pWC->nTerm-j); |
| 151689 | 151653 | } |
| 151690 | 151654 | #endif |
| 151691 | | - assert( !ExprHasProperty(pE, EP_FromJoin) ); |
| 151655 | + assert( !ExprHasProperty(pE, EP_OuterON) ); |
| 151692 | 151656 | assert( (pTerm->prereqRight & pLevel->notReady)!=0 ); |
| 151693 | 151657 | assert( (pTerm->eOperator & (WO_OR|WO_AND))==0 ); |
| 151694 | 151658 | pAlt = sqlite3WhereFindTerm(pWC, iCur, pTerm->u.x.leftColumn, notReady, |
| 151695 | 151659 | WO_EQ|WO_IN|WO_IS, 0); |
| 151696 | 151660 | if( pAlt==0 ) continue; |
| | @@ -151757,22 +151721,12 @@ |
| 151757 | 151721 | */ |
| 151758 | 151722 | if( pLevel->iLeftJoin ){ |
| 151759 | 151723 | pLevel->addrFirst = sqlite3VdbeCurrentAddr(v); |
| 151760 | 151724 | sqlite3VdbeAddOp2(v, OP_Integer, 1, pLevel->iLeftJoin); |
| 151761 | 151725 | VdbeComment((v, "record LEFT JOIN hit")); |
| 151762 | | - for(pTerm=pWC->a, j=0; j<pWC->nBase; j++, pTerm++){ |
| 151763 | | - testcase( pTerm->wtFlags & TERM_VIRTUAL ); |
| 151764 | | - testcase( pTerm->wtFlags & TERM_CODED ); |
| 151765 | | - if( pTerm->wtFlags & (TERM_VIRTUAL|TERM_CODED) ) continue; |
| 151766 | | - if( (pTerm->prereqAll & pLevel->notReady)!=0 ){ |
| 151767 | | - assert( pWInfo->untestedTerms ); |
| 151768 | | - continue; |
| 151769 | | - } |
| 151770 | | - if( pTabItem->fg.jointype & JT_LTORJ ) continue; |
| 151771 | | - assert( pTerm->pExpr ); |
| 151772 | | - sqlite3ExprIfFalse(pParse, pTerm->pExpr, addrCont, SQLITE_JUMPIFNULL); |
| 151773 | | - pTerm->wtFlags |= TERM_CODED; |
| 151726 | + if( pLevel->pRJ==0 ){ |
| 151727 | + goto code_outer_join_constraints; /* WHERE clause constraints */ |
| 151774 | 151728 | } |
| 151775 | 151729 | } |
| 151776 | 151730 | |
| 151777 | 151731 | if( pLevel->pRJ ){ |
| 151778 | 151732 | /* Create a subroutine used to process all interior loops and code |
| | @@ -151784,10 +151738,30 @@ |
| 151784 | 151738 | WhereRightJoin *pRJ = pLevel->pRJ; |
| 151785 | 151739 | sqlite3VdbeAddOp2(v, OP_BeginSubrtn, 0, pRJ->regReturn); |
| 151786 | 151740 | pRJ->addrSubrtn = sqlite3VdbeCurrentAddr(v); |
| 151787 | 151741 | assert( pParse->withinRJSubrtn < 255 ); |
| 151788 | 151742 | pParse->withinRJSubrtn++; |
| 151743 | + |
| 151744 | + /* WHERE clause constraints must be deferred until after outer join |
| 151745 | + ** row elimination has completed, since WHERE clause constraints apply |
| 151746 | + ** to the results of the OUTER JOIN. The following loop generates the |
| 151747 | + ** appropriate WHERE clause constraint checks. tag-20220513a. |
| 151748 | + */ |
| 151749 | + code_outer_join_constraints: |
| 151750 | + for(pTerm=pWC->a, j=0; j<pWC->nBase; j++, pTerm++){ |
| 151751 | + testcase( pTerm->wtFlags & TERM_VIRTUAL ); |
| 151752 | + testcase( pTerm->wtFlags & TERM_CODED ); |
| 151753 | + if( pTerm->wtFlags & (TERM_VIRTUAL|TERM_CODED) ) continue; |
| 151754 | + if( (pTerm->prereqAll & pLevel->notReady)!=0 ){ |
| 151755 | + assert( pWInfo->untestedTerms ); |
| 151756 | + continue; |
| 151757 | + } |
| 151758 | + if( pTabItem->fg.jointype & JT_LTORJ ) continue; |
| 151759 | + assert( pTerm->pExpr ); |
| 151760 | + sqlite3ExprIfFalse(pParse, pTerm->pExpr, addrCont, SQLITE_JUMPIFNULL); |
| 151761 | + pTerm->wtFlags |= TERM_CODED; |
| 151762 | + } |
| 151789 | 151763 | } |
| 151790 | 151764 | |
| 151791 | 151765 | #if WHERETRACE_ENABLED /* 0x20800 */ |
| 151792 | 151766 | if( sqlite3WhereTrace & 0x20000 ){ |
| 151793 | 151767 | sqlite3DebugPrintf("All WHERE-clause terms after coding level %d:\n", |
| | @@ -151839,11 +151813,11 @@ |
| 151839 | 151813 | mAll |= pLoop->maskSelf; |
| 151840 | 151814 | for(k=0; k<pWC->nTerm; k++){ |
| 151841 | 151815 | WhereTerm *pTerm = &pWC->a[k]; |
| 151842 | 151816 | if( pTerm->wtFlags & TERM_VIRTUAL ) break; |
| 151843 | 151817 | if( pTerm->prereqAll & ~mAll ) continue; |
| 151844 | | - if( ExprHasProperty(pTerm->pExpr, EP_FromJoin|EP_InnerJoin) ) continue; |
| 151818 | + if( ExprHasProperty(pTerm->pExpr, EP_OuterON|EP_InnerON) ) continue; |
| 151845 | 151819 | pSubWhere = sqlite3ExprAnd(pParse, pSubWhere, |
| 151846 | 151820 | sqlite3ExprDup(pParse->db, pTerm->pExpr, 0)); |
| 151847 | 151821 | } |
| 151848 | 151822 | } |
| 151849 | 151823 | sFrom.nSrc = 1; |
| | @@ -152351,12 +152325,12 @@ |
| 152351 | 152325 | /* |
| 152352 | 152326 | ** If the pBase expression originated in the ON or USING clause of |
| 152353 | 152327 | ** a join, then transfer the appropriate markings over to derived. |
| 152354 | 152328 | */ |
| 152355 | 152329 | static void transferJoinMarkings(Expr *pDerived, Expr *pBase){ |
| 152356 | | - if( pDerived ){ |
| 152357 | | - pDerived->flags |= pBase->flags & EP_FromJoin; |
| 152330 | + if( pDerived && ExprHasProperty(pBase, EP_OuterON|EP_InnerON) ){ |
| 152331 | + pDerived->flags |= pBase->flags & (EP_OuterON|EP_InnerON); |
| 152358 | 152332 | pDerived->w.iJoin = pBase->w.iJoin; |
| 152359 | 152333 | } |
| 152360 | 152334 | } |
| 152361 | 152335 | |
| 152362 | 152336 | /* |
| | @@ -152807,11 +152781,11 @@ |
| 152807 | 152781 | static int termIsEquivalence(Parse *pParse, Expr *pExpr){ |
| 152808 | 152782 | char aff1, aff2; |
| 152809 | 152783 | CollSeq *pColl; |
| 152810 | 152784 | if( !OptimizationEnabled(pParse->db, SQLITE_Transitive) ) return 0; |
| 152811 | 152785 | if( pExpr->op!=TK_EQ && pExpr->op!=TK_IS ) return 0; |
| 152812 | | - if( ExprHasProperty(pExpr, EP_FromJoin) ) return 0; |
| 152786 | + if( ExprHasProperty(pExpr, EP_OuterON) ) return 0; |
| 152813 | 152787 | aff1 = sqlite3ExprAffinity(pExpr->pLeft); |
| 152814 | 152788 | aff2 = sqlite3ExprAffinity(pExpr->pRight); |
| 152815 | 152789 | if( aff1!=aff2 |
| 152816 | 152790 | && (!sqlite3IsNumericAffinity(aff1) || !sqlite3IsNumericAffinity(aff2)) |
| 152817 | 152791 | ){ |
| | @@ -152999,11 +152973,11 @@ |
| 152999 | 152973 | sqlite3TreeViewExpr(0,pExpr,0); |
| 153000 | 152974 | abort(); |
| 153001 | 152975 | } |
| 153002 | 152976 | #endif |
| 153003 | 152977 | |
| 153004 | | - if( ExprHasProperty(pExpr, EP_FromJoin) ){ |
| 152978 | + if( ExprHasProperty(pExpr, EP_OuterON) ){ |
| 153005 | 152979 | Bitmask x = sqlite3WhereGetMask(pMaskSet, pExpr->w.iJoin); |
| 153006 | 152980 | prereqAll |= x; |
| 153007 | 152981 | extraRight = x-1; /* ON clause terms may not be used with an index |
| 153008 | 152982 | ** on left table of a LEFT JOIN. Ticket #3015 */ |
| 153009 | 152983 | if( (prereqAll>>1)>=x ){ |
| | @@ -153074,11 +153048,11 @@ |
| 153074 | 153048 | pNew->prereqRight = prereqLeft | extraRight; |
| 153075 | 153049 | pNew->prereqAll = prereqAll; |
| 153076 | 153050 | pNew->eOperator = (operatorMask(pDup->op) + eExtraOp) & opMask; |
| 153077 | 153051 | }else |
| 153078 | 153052 | if( op==TK_ISNULL |
| 153079 | | - && !ExprHasProperty(pExpr,EP_FromJoin) |
| 153053 | + && !ExprHasProperty(pExpr,EP_OuterON) |
| 153080 | 153054 | && 0==sqlite3ExprCanBeNull(pLeft) |
| 153081 | 153055 | ){ |
| 153082 | 153056 | assert( !ExprHasProperty(pExpr, EP_IntValue) ); |
| 153083 | 153057 | pExpr->op = TK_TRUEFALSE; |
| 153084 | 153058 | pExpr->u.zToken = "false"; |
| | @@ -153145,11 +153119,11 @@ |
| 153145 | 153119 | ** The virtual term must be tagged with TERM_VNULL. |
| 153146 | 153120 | */ |
| 153147 | 153121 | else if( pExpr->op==TK_NOTNULL ){ |
| 153148 | 153122 | if( pExpr->pLeft->op==TK_COLUMN |
| 153149 | 153123 | && pExpr->pLeft->iColumn>=0 |
| 153150 | | - && !ExprHasProperty(pExpr, EP_FromJoin) |
| 153124 | + && !ExprHasProperty(pExpr, EP_OuterON) |
| 153151 | 153125 | ){ |
| 153152 | 153126 | Expr *pNewExpr; |
| 153153 | 153127 | Expr *pLeft = pExpr->pLeft; |
| 153154 | 153128 | int idxNew; |
| 153155 | 153129 | WhereTerm *pNewTerm; |
| | @@ -153349,12 +153323,12 @@ |
| 153349 | 153323 | prereqColumn = sqlite3WhereExprUsage(pMaskSet, pLeft); |
| 153350 | 153324 | if( (prereqExpr & prereqColumn)==0 ){ |
| 153351 | 153325 | Expr *pNewExpr; |
| 153352 | 153326 | pNewExpr = sqlite3PExpr(pParse, TK_MATCH, |
| 153353 | 153327 | 0, sqlite3ExprDup(db, pRight, 0)); |
| 153354 | | - if( ExprHasProperty(pExpr, EP_FromJoin) && pNewExpr ){ |
| 153355 | | - ExprSetProperty(pNewExpr, EP_FromJoin); |
| 153328 | + if( ExprHasProperty(pExpr, EP_OuterON) && pNewExpr ){ |
| 153329 | + ExprSetProperty(pNewExpr, EP_OuterON); |
| 153356 | 153330 | pNewExpr->w.iJoin = pExpr->w.iJoin; |
| 153357 | 153331 | } |
| 153358 | 153332 | idxNew = whereClauseInsert(pWC, pNewExpr, TERM_VIRTUAL|TERM_DYNAMIC); |
| 153359 | 153333 | testcase( idxNew==0 ); |
| 153360 | 153334 | pNewTerm = &pWC->a[idxNew]; |
| | @@ -153717,13 +153691,13 @@ |
| 153717 | 153691 | pItem->colUsed |= sqlite3ExprColUsed(pColRef); |
| 153718 | 153692 | pRhs = sqlite3PExpr(pParse, TK_UPLUS, |
| 153719 | 153693 | sqlite3ExprDup(pParse->db, pArgs->a[j].pExpr, 0), 0); |
| 153720 | 153694 | pTerm = sqlite3PExpr(pParse, TK_EQ, pColRef, pRhs); |
| 153721 | 153695 | if( pItem->fg.jointype & (JT_LEFT|JT_LTORJ) ){ |
| 153722 | | - joinType = EP_FromJoin; |
| 153696 | + joinType = EP_OuterON; |
| 153723 | 153697 | }else{ |
| 153724 | | - joinType = EP_InnerJoin; |
| 153698 | + joinType = EP_InnerON; |
| 153725 | 153699 | } |
| 153726 | 153700 | sqlite3SetJoinExpr(pTerm, pItem->iCursor, joinType); |
| 153727 | 153701 | whereClauseInsert(pWC, pTerm, TERM_DYNAMIC); |
| 153728 | 153702 | } |
| 153729 | 153703 | } |
| | @@ -154060,11 +154034,11 @@ |
| 154060 | 154034 | if( pTerm->leftCursor==iCur |
| 154061 | 154035 | && pTerm->u.x.leftColumn==iColumn |
| 154062 | 154036 | && (iColumn!=XN_EXPR |
| 154063 | 154037 | || sqlite3ExprCompareSkip(pTerm->pExpr->pLeft, |
| 154064 | 154038 | pScan->pIdxExpr,iCur)==0) |
| 154065 | | - && (pScan->iEquiv<=1 || !ExprHasProperty(pTerm->pExpr, EP_FromJoin)) |
| 154039 | + && (pScan->iEquiv<=1 || !ExprHasProperty(pTerm->pExpr, EP_OuterON)) |
| 154066 | 154040 | ){ |
| 154067 | 154041 | if( (pTerm->eOperator & WO_EQUIV)!=0 |
| 154068 | 154042 | && pScan->nEquiv<ArraySize(pScan->aiCur) |
| 154069 | 154043 | && (pX = whereRightSubexprIsColumn(pTerm->pExpr))!=0 |
| 154070 | 154044 | ){ |
| | @@ -154487,11 +154461,11 @@ |
| 154487 | 154461 | ){ |
| 154488 | 154462 | char aff; |
| 154489 | 154463 | if( pTerm->leftCursor!=pSrc->iCursor ) return 0; |
| 154490 | 154464 | if( (pTerm->eOperator & (WO_EQ|WO_IS))==0 ) return 0; |
| 154491 | 154465 | if( (pSrc->fg.jointype & (JT_LEFT|JT_LTORJ))!=0 |
| 154492 | | - && !ExprHasProperty(pTerm->pExpr, EP_FromJoin) |
| 154466 | + && !ExprHasProperty(pTerm->pExpr, EP_OuterON) |
| 154493 | 154467 | && (pTerm->eOperator & WO_IS) |
| 154494 | 154468 | ){ |
| 154495 | 154469 | /* Cannot use an IS term from the WHERE clause as an index driver for |
| 154496 | 154470 | ** the RHS of a LEFT JOIN or for the LHS of a RIGHT JOIN. Such a term |
| 154497 | 154471 | ** can only be used if it is from the ON clause. */ |
| | @@ -154911,11 +154885,11 @@ |
| 154911 | 154885 | /* tag-20191211-002: WHERE-clause constraints are not useful to the |
| 154912 | 154886 | ** right-hand table of a LEFT JOIN nor to the left-hand table of a |
| 154913 | 154887 | ** RIGHT JOIN. See tag-20191211-001 for the |
| 154914 | 154888 | ** equivalent restriction for ordinary tables. */ |
| 154915 | 154889 | if( (pSrc->fg.jointype & (JT_LEFT|JT_LTORJ))!=0 |
| 154916 | | - && !ExprHasProperty(pTerm->pExpr, EP_FromJoin) |
| 154890 | + && !ExprHasProperty(pTerm->pExpr, EP_OuterON) |
| 154917 | 154891 | ){ |
| 154918 | 154892 | continue; |
| 154919 | 154893 | } |
| 154920 | 154894 | nTerm++; |
| 154921 | 154895 | pTerm->wtFlags |= TERM_OK; |
| | @@ -155789,11 +155763,11 @@ |
| 155789 | 155763 | char zType[8]; |
| 155790 | 155764 | char zLeft[50]; |
| 155791 | 155765 | memcpy(zType, "....", 5); |
| 155792 | 155766 | if( pTerm->wtFlags & TERM_VIRTUAL ) zType[0] = 'V'; |
| 155793 | 155767 | if( pTerm->eOperator & WO_EQUIV ) zType[1] = 'E'; |
| 155794 | | - if( ExprHasProperty(pTerm->pExpr, EP_FromJoin) ) zType[2] = 'L'; |
| 155768 | + if( ExprHasProperty(pTerm->pExpr, EP_OuterON) ) zType[2] = 'L'; |
| 155795 | 155769 | if( pTerm->wtFlags & TERM_CODED ) zType[3] = 'C'; |
| 155796 | 155770 | if( pTerm->eOperator & WO_SINGLE ){ |
| 155797 | 155771 | assert( (pTerm->eOperator & (WO_OR|WO_AND))==0 ); |
| 155798 | 155772 | sqlite3_snprintf(sizeof(zLeft),zLeft,"left={%d:%d}", |
| 155799 | 155773 | pTerm->leftCursor, pTerm->u.x.leftColumn); |
| | @@ -156566,11 +156540,11 @@ |
| 156566 | 156540 | /* tag-20191211-001: Do not allow constraints from the WHERE clause to |
| 156567 | 156541 | ** be used by the right table of a LEFT JOIN nor by the left table of a |
| 156568 | 156542 | ** RIGHT JOIN. Only constraints in the |
| 156569 | 156543 | ** ON clause are allowed. See tag-20191211-002 for the vtab equivalent. */ |
| 156570 | 156544 | if( (pSrc->fg.jointype & (JT_LEFT|JT_LTORJ))!=0 |
| 156571 | | - && !ExprHasProperty(pTerm->pExpr, EP_FromJoin|EP_InnerJoin) |
| 156545 | + && !ExprHasProperty(pTerm->pExpr, EP_OuterON|EP_InnerON) |
| 156572 | 156546 | ){ |
| 156573 | 156547 | continue; |
| 156574 | 156548 | } |
| 156575 | 156549 | |
| 156576 | 156550 | if( IsUniqueIndex(pProbe) && saved_nEq==pProbe->nKeyCol-1 ){ |
| | @@ -156935,12 +156909,12 @@ |
| 156935 | 156909 | } |
| 156936 | 156910 | if( pParse->db->flags & SQLITE_EnableQPSG ) pParse = 0; |
| 156937 | 156911 | for(i=0, pTerm=pWC->a; i<pWC->nTerm; i++, pTerm++){ |
| 156938 | 156912 | Expr *pExpr; |
| 156939 | 156913 | pExpr = pTerm->pExpr; |
| 156940 | | - if( (!ExprHasProperty(pExpr, EP_FromJoin) || pExpr->w.iJoin==iTab) |
| 156941 | | - && (isLeft==0 || ExprHasProperty(pExpr, EP_FromJoin)) |
| 156914 | + if( (!ExprHasProperty(pExpr, EP_OuterON) || pExpr->w.iJoin==iTab) |
| 156915 | + && (isLeft==0 || ExprHasProperty(pExpr, EP_OuterON)) |
| 156942 | 156916 | && sqlite3ExprImpliesExpr(pParse, pExpr, pWhere, iTab) |
| 156943 | 156917 | && (pTerm->wtFlags & TERM_VNULL)==0 |
| 156944 | 156918 | ){ |
| 156945 | 156919 | return 1; |
| 156946 | 156920 | } |
| | @@ -157212,11 +157186,18 @@ |
| 157212 | 157186 | |
| 157213 | 157187 | pNew->rRun = sqlite3LogEstAdd(pNew->rRun, nLookup); |
| 157214 | 157188 | } |
| 157215 | 157189 | ApplyCostMultiplier(pNew->rRun, pTab->costMult); |
| 157216 | 157190 | whereLoopOutputAdjust(pWC, pNew, rSize); |
| 157217 | | - rc = whereLoopInsert(pBuilder, pNew); |
| 157191 | + if( (pSrc->fg.jointype & JT_RIGHT)!=0 && pProbe->aColExpr ){ |
| 157192 | + /* Do not do an SCAN of a index-on-expression in a RIGHT JOIN |
| 157193 | + ** because the cursor used to access the index might not be |
| 157194 | + ** positioned to the correct row during the right-join no-match |
| 157195 | + ** loop. */ |
| 157196 | + }else{ |
| 157197 | + rc = whereLoopInsert(pBuilder, pNew); |
| 157198 | + } |
| 157218 | 157199 | pNew->nOut = rSize; |
| 157219 | 157200 | if( rc ) break; |
| 157220 | 157201 | } |
| 157221 | 157202 | } |
| 157222 | 157203 | |
| | @@ -158944,11 +158925,11 @@ |
| 158944 | 158925 | } |
| 158945 | 158926 | if( (tabUsed & pLoop->maskSelf)!=0 ) continue; |
| 158946 | 158927 | pEnd = pWInfo->sWC.a + pWInfo->sWC.nTerm; |
| 158947 | 158928 | for(pTerm=pWInfo->sWC.a; pTerm<pEnd; pTerm++){ |
| 158948 | 158929 | if( (pTerm->prereqAll & pLoop->maskSelf)!=0 ){ |
| 158949 | | - if( !ExprHasProperty(pTerm->pExpr, EP_FromJoin) |
| 158930 | + if( !ExprHasProperty(pTerm->pExpr, EP_OuterON) |
| 158950 | 158931 | || pTerm->pExpr->w.iJoin!=pItem->iCursor |
| 158951 | 158932 | ){ |
| 158952 | 158933 | break; |
| 158953 | 158934 | } |
| 158954 | 158935 | } |
| | @@ -159898,10 +159879,11 @@ |
| 159898 | 159879 | VdbeModuleComment((v, "End WHERE-loop%d: %s", i, |
| 159899 | 159880 | pWInfo->pTabList->a[pLevel->iFrom].pTab->zName)); |
| 159900 | 159881 | } |
| 159901 | 159882 | |
| 159902 | 159883 | assert( pWInfo->nLevel<=pTabList->nSrc ); |
| 159884 | + if( pWInfo->pExprMods ) whereUndoExprMods(pWInfo); |
| 159903 | 159885 | for(i=0, pLevel=pWInfo->a; i<pWInfo->nLevel; i++, pLevel++){ |
| 159904 | 159886 | int k, last; |
| 159905 | 159887 | VdbeOp *pOp, *pLastOp; |
| 159906 | 159888 | Index *pIdx = 0; |
| 159907 | 159889 | SrcItem *pTabItem = &pTabList->a[pLevel->iFrom]; |
| | @@ -160034,11 +160016,10 @@ |
| 160034 | 160016 | */ |
| 160035 | 160017 | sqlite3VdbeResolveLabel(v, pWInfo->iBreak); |
| 160036 | 160018 | |
| 160037 | 160019 | /* Final cleanup |
| 160038 | 160020 | */ |
| 160039 | | - if( pWInfo->pExprMods ) whereUndoExprMods(pWInfo); |
| 160040 | 160021 | pParse->nQueryLoop = pWInfo->savedNQueryLoop; |
| 160041 | 160022 | whereInfoFree(db, pWInfo); |
| 160042 | 160023 | return; |
| 160043 | 160024 | } |
| 160044 | 160025 | |
| | @@ -163662,22 +163643,22 @@ |
| 163662 | 163643 | #define sqlite3ParserCTX_PDECL ,Parse *pParse |
| 163663 | 163644 | #define sqlite3ParserCTX_PARAM ,pParse |
| 163664 | 163645 | #define sqlite3ParserCTX_FETCH Parse *pParse=yypParser->pParse; |
| 163665 | 163646 | #define sqlite3ParserCTX_STORE yypParser->pParse=pParse; |
| 163666 | 163647 | #define YYFALLBACK 1 |
| 163667 | | -#define YYNSTATE 570 |
| 163668 | | -#define YYNRULE 403 |
| 163669 | | -#define YYNRULE_WITH_ACTION 340 |
| 163648 | +#define YYNSTATE 576 |
| 163649 | +#define YYNRULE 405 |
| 163650 | +#define YYNRULE_WITH_ACTION 342 |
| 163670 | 163651 | #define YYNTOKEN 185 |
| 163671 | | -#define YY_MAX_SHIFT 569 |
| 163672 | | -#define YY_MIN_SHIFTREDUCE 829 |
| 163673 | | -#define YY_MAX_SHIFTREDUCE 1231 |
| 163674 | | -#define YY_ERROR_ACTION 1232 |
| 163675 | | -#define YY_ACCEPT_ACTION 1233 |
| 163676 | | -#define YY_NO_ACTION 1234 |
| 163677 | | -#define YY_MIN_REDUCE 1235 |
| 163678 | | -#define YY_MAX_REDUCE 1637 |
| 163652 | +#define YY_MAX_SHIFT 575 |
| 163653 | +#define YY_MIN_SHIFTREDUCE 835 |
| 163654 | +#define YY_MAX_SHIFTREDUCE 1239 |
| 163655 | +#define YY_ERROR_ACTION 1240 |
| 163656 | +#define YY_ACCEPT_ACTION 1241 |
| 163657 | +#define YY_NO_ACTION 1242 |
| 163658 | +#define YY_MIN_REDUCE 1243 |
| 163659 | +#define YY_MAX_REDUCE 1647 |
| 163679 | 163660 | /************* End control #defines *******************************************/ |
| 163680 | 163661 | #define YY_NLOOKAHEAD ((int)(sizeof(yy_lookahead)/sizeof(yy_lookahead[0]))) |
| 163681 | 163662 | |
| 163682 | 163663 | /* Define the yytestcase() macro to be a no-op if is not already defined |
| 163683 | 163664 | ** otherwise. |
| | @@ -163740,219 +163721,222 @@ |
| 163740 | 163721 | ** yy_reduce_ofst[] For each state, the offset into yy_action for |
| 163741 | 163722 | ** shifting non-terminals after a reduce. |
| 163742 | 163723 | ** yy_default[] Default action for each state. |
| 163743 | 163724 | ** |
| 163744 | 163725 | *********** Begin parsing tables **********************************************/ |
| 163745 | | -#define YY_ACTTAB_COUNT (2064) |
| 163726 | +#define YY_ACTTAB_COUNT (2098) |
| 163746 | 163727 | static const YYACTIONTYPE yy_action[] = { |
| 163747 | | - /* 0 */ 562, 204, 562, 116, 112, 225, 562, 116, 112, 225, |
| 163748 | | - /* 10 */ 562, 1306, 373, 1285, 404, 556, 556, 556, 562, 405, |
| 163749 | | - /* 20 */ 374, 1306, 1268, 41, 41, 41, 41, 204, 1516, 71, |
| 163750 | | - /* 30 */ 71, 965, 415, 41, 41, 487, 299, 275, 299, 966, |
| 163751 | | - /* 40 */ 393, 71, 71, 123, 124, 114, 1209, 1209, 1042, 1045, |
| 163752 | | - /* 50 */ 1034, 1034, 121, 121, 122, 122, 122, 122, 472, 405, |
| 163753 | | - /* 60 */ 1233, 1, 1, 569, 2, 1237, 544, 116, 112, 225, |
| 163754 | | - /* 70 */ 313, 476, 142, 476, 520, 116, 112, 225, 525, 1319, |
| 163755 | | - /* 80 */ 413, 519, 138, 123, 124, 114, 1209, 1209, 1042, 1045, |
| 163756 | | - /* 90 */ 1034, 1034, 121, 121, 122, 122, 122, 122, 116, 112, |
| 163757 | | - /* 100 */ 225, 323, 120, 120, 120, 120, 119, 119, 118, 118, |
| 163758 | | - /* 110 */ 118, 117, 113, 440, 280, 280, 280, 280, 438, 438, |
| 163759 | | - /* 120 */ 438, 1557, 372, 1559, 1184, 371, 1155, 559, 1155, 559, |
| 163760 | | - /* 130 */ 405, 1557, 533, 255, 222, 440, 99, 141, 445, 312, |
| 163761 | | - /* 140 */ 553, 236, 120, 120, 120, 120, 119, 119, 118, 118, |
| 163762 | | - /* 150 */ 118, 117, 113, 440, 123, 124, 114, 1209, 1209, 1042, |
| 163763 | | - /* 160 */ 1045, 1034, 1034, 121, 121, 122, 122, 122, 122, 138, |
| 163764 | | - /* 170 */ 290, 1184, 335, 444, 118, 118, 118, 117, 113, 440, |
| 163765 | | - /* 180 */ 125, 1184, 1185, 1186, 144, 437, 436, 562, 117, 113, |
| 163766 | | - /* 190 */ 440, 122, 122, 122, 122, 115, 120, 120, 120, 120, |
| 163767 | | - /* 200 */ 119, 119, 118, 118, 118, 117, 113, 440, 450, 110, |
| 163768 | | - /* 210 */ 13, 13, 542, 120, 120, 120, 120, 119, 119, 118, |
| 163769 | | - /* 220 */ 118, 118, 117, 113, 440, 418, 312, 553, 1184, 1185, |
| 163770 | | - /* 230 */ 1186, 145, 1216, 405, 1216, 122, 122, 122, 122, 120, |
| 163771 | | - /* 240 */ 120, 120, 120, 119, 119, 118, 118, 118, 117, 113, |
| 163772 | | - /* 250 */ 440, 461, 338, 1031, 1031, 1043, 1046, 123, 124, 114, |
| 163773 | | - /* 260 */ 1209, 1209, 1042, 1045, 1034, 1034, 121, 121, 122, 122, |
| 163774 | | - /* 270 */ 122, 122, 1271, 518, 218, 1184, 562, 405, 220, 510, |
| 163775 | | - /* 280 */ 171, 80, 81, 120, 120, 120, 120, 119, 119, 118, |
| 163776 | | - /* 290 */ 118, 118, 117, 113, 440, 1001, 16, 16, 1184, 55, |
| 163777 | | - /* 300 */ 55, 123, 124, 114, 1209, 1209, 1042, 1045, 1034, 1034, |
| 163778 | | - /* 310 */ 121, 121, 122, 122, 122, 122, 120, 120, 120, 120, |
| 163779 | | - /* 320 */ 119, 119, 118, 118, 118, 117, 113, 440, 1035, 542, |
| 163780 | | - /* 330 */ 1184, 369, 1184, 1185, 1186, 248, 1426, 395, 500, 497, |
| 163781 | | - /* 340 */ 496, 108, 554, 560, 4, 920, 920, 429, 495, 336, |
| 163782 | | - /* 350 */ 456, 324, 356, 390, 1229, 1184, 1185, 1186, 557, 562, |
| 163783 | | - /* 360 */ 120, 120, 120, 120, 119, 119, 118, 118, 118, 117, |
| 163784 | | - /* 370 */ 113, 440, 280, 280, 365, 1570, 1597, 437, 436, 150, |
| 163785 | | - /* 380 */ 405, 441, 71, 71, 1278, 559, 1213, 1184, 1185, 1186, |
| 163786 | | - /* 390 */ 83, 1215, 267, 551, 539, 511, 1551, 562, 96, 1214, |
| 163787 | | - /* 400 */ 6, 1270, 468, 138, 123, 124, 114, 1209, 1209, 1042, |
| 163788 | | - /* 410 */ 1045, 1034, 1034, 121, 121, 122, 122, 122, 122, 544, |
| 163789 | | - /* 420 */ 13, 13, 1021, 503, 1216, 1184, 1216, 543, 106, 106, |
| 163790 | | - /* 430 */ 218, 562, 1230, 171, 562, 423, 107, 193, 441, 564, |
| 163791 | | - /* 440 */ 563, 426, 1542, 1011, 321, 545, 1184, 266, 283, 364, |
| 163792 | | - /* 450 */ 506, 359, 505, 253, 71, 71, 539, 71, 71, 355, |
| 163793 | | - /* 460 */ 312, 553, 1603, 120, 120, 120, 120, 119, 119, 118, |
| 163794 | | - /* 470 */ 118, 118, 117, 113, 440, 1011, 1011, 1013, 1014, 27, |
| 163795 | | - /* 480 */ 280, 280, 1184, 1185, 1186, 1150, 562, 1602, 405, 895, |
| 163796 | | - /* 490 */ 186, 544, 352, 559, 544, 931, 529, 513, 1150, 512, |
| 163797 | | - /* 500 */ 409, 1150, 546, 1184, 1185, 1186, 562, 540, 1544, 51, |
| 163798 | | - /* 510 */ 51, 210, 123, 124, 114, 1209, 1209, 1042, 1045, 1034, |
| 163799 | | - /* 520 */ 1034, 121, 121, 122, 122, 122, 122, 1184, 470, 56, |
| 163800 | | - /* 530 */ 56, 405, 280, 280, 1480, 501, 119, 119, 118, 118, |
| 163801 | | - /* 540 */ 118, 117, 113, 440, 1001, 559, 514, 213, 537, 1551, |
| 163802 | | - /* 550 */ 312, 553, 138, 6, 528, 123, 124, 114, 1209, 1209, |
| 163803 | | - /* 560 */ 1042, 1045, 1034, 1034, 121, 121, 122, 122, 122, 122, |
| 163804 | | - /* 570 */ 1545, 120, 120, 120, 120, 119, 119, 118, 118, 118, |
| 163805 | | - /* 580 */ 117, 113, 440, 481, 1184, 1185, 1186, 478, 277, 1259, |
| 163806 | | - /* 590 */ 951, 248, 1184, 369, 500, 497, 496, 1184, 336, 565, |
| 163807 | | - /* 600 */ 1184, 565, 405, 288, 495, 951, 870, 187, 476, 312, |
| 163808 | | - /* 610 */ 553, 380, 286, 376, 120, 120, 120, 120, 119, 119, |
| 163809 | | - /* 620 */ 118, 118, 118, 117, 113, 440, 123, 124, 114, 1209, |
| 163810 | | - /* 630 */ 1209, 1042, 1045, 1034, 1034, 121, 121, 122, 122, 122, |
| 163811 | | - /* 640 */ 122, 405, 390, 1128, 1184, 863, 98, 280, 280, 1184, |
| 163812 | | - /* 650 */ 1185, 1186, 369, 1085, 1184, 1185, 1186, 1184, 1185, 1186, |
| 163813 | | - /* 660 */ 559, 451, 32, 369, 229, 123, 124, 114, 1209, 1209, |
| 163814 | | - /* 670 */ 1042, 1045, 1034, 1034, 121, 121, 122, 122, 122, 122, |
| 163815 | | - /* 680 */ 1425, 953, 562, 224, 952, 120, 120, 120, 120, 119, |
| 163816 | | - /* 690 */ 119, 118, 118, 118, 117, 113, 440, 1150, 224, 1184, |
| 163817 | | - /* 700 */ 153, 1184, 1185, 1186, 1543, 13, 13, 297, 951, 1224, |
| 163818 | | - /* 710 */ 1150, 149, 405, 1150, 369, 1573, 1168, 5, 365, 1570, |
| 163819 | | - /* 720 */ 425, 1230, 3, 951, 120, 120, 120, 120, 119, 119, |
| 163820 | | - /* 730 */ 118, 118, 118, 117, 113, 440, 123, 124, 114, 1209, |
| 163821 | | - /* 740 */ 1209, 1042, 1045, 1034, 1034, 121, 121, 122, 122, 122, |
| 163822 | | - /* 750 */ 122, 405, 204, 561, 1184, 1022, 1184, 1185, 1186, 1184, |
| 163823 | | - /* 760 */ 384, 846, 151, 1542, 282, 398, 1090, 1090, 484, 562, |
| 163824 | | - /* 770 */ 461, 338, 1311, 1311, 1542, 123, 124, 114, 1209, 1209, |
| 163825 | | - /* 780 */ 1042, 1045, 1034, 1034, 121, 121, 122, 122, 122, 122, |
| 163826 | | - /* 790 */ 127, 562, 13, 13, 370, 120, 120, 120, 120, 119, |
| 163827 | | - /* 800 */ 119, 118, 118, 118, 117, 113, 440, 298, 562, 449, |
| 163828 | | - /* 810 */ 524, 1184, 1185, 1186, 13, 13, 1184, 1185, 1186, 1289, |
| 163829 | | - /* 820 */ 459, 1259, 405, 1309, 1309, 1542, 1006, 449, 448, 196, |
| 163830 | | - /* 830 */ 295, 71, 71, 1257, 120, 120, 120, 120, 119, 119, |
| 163831 | | - /* 840 */ 118, 118, 118, 117, 113, 440, 123, 124, 114, 1209, |
| 163832 | | - /* 850 */ 1209, 1042, 1045, 1034, 1034, 121, 121, 122, 122, 122, |
| 163833 | | - /* 860 */ 122, 405, 223, 1065, 1150, 280, 280, 415, 308, 274, |
| 163834 | | - /* 870 */ 274, 281, 281, 1411, 402, 401, 378, 1150, 559, 562, |
| 163835 | | - /* 880 */ 1150, 1188, 559, 1590, 559, 123, 124, 114, 1209, 1209, |
| 163836 | | - /* 890 */ 1042, 1045, 1034, 1034, 121, 121, 122, 122, 122, 122, |
| 163837 | | - /* 900 */ 449, 1472, 13, 13, 1526, 120, 120, 120, 120, 119, |
| 163838 | | - /* 910 */ 119, 118, 118, 118, 117, 113, 440, 197, 562, 350, |
| 163839 | | - /* 920 */ 1576, 569, 2, 1237, 834, 835, 836, 1552, 313, 1204, |
| 163840 | | - /* 930 */ 142, 6, 405, 251, 250, 249, 202, 1319, 9, 1188, |
| 163841 | | - /* 940 */ 258, 71, 71, 420, 120, 120, 120, 120, 119, 119, |
| 163842 | | - /* 950 */ 118, 118, 118, 117, 113, 440, 123, 124, 114, 1209, |
| 163843 | | - /* 960 */ 1209, 1042, 1045, 1034, 1034, 121, 121, 122, 122, 122, |
| 163844 | | - /* 970 */ 122, 562, 280, 280, 562, 1205, 405, 568, 309, 1237, |
| 163845 | | - /* 980 */ 345, 1288, 348, 415, 313, 559, 142, 487, 521, 1633, |
| 163846 | | - /* 990 */ 391, 367, 487, 1319, 70, 70, 1287, 71, 71, 236, |
| 163847 | | - /* 1000 */ 1317, 101, 114, 1209, 1209, 1042, 1045, 1034, 1034, 121, |
| 163848 | | - /* 1010 */ 121, 122, 122, 122, 122, 120, 120, 120, 120, 119, |
| 163849 | | - /* 1020 */ 119, 118, 118, 118, 117, 113, 440, 1106, 280, 280, |
| 163850 | | - /* 1030 */ 424, 444, 1515, 1205, 435, 280, 280, 1479, 1344, 307, |
| 163851 | | - /* 1040 */ 470, 559, 1107, 965, 487, 487, 213, 1255, 559, 1528, |
| 163852 | | - /* 1050 */ 562, 966, 203, 562, 1021, 236, 379, 1108, 515, 120, |
| 163853 | | - /* 1060 */ 120, 120, 120, 119, 119, 118, 118, 118, 117, 113, |
| 163854 | | - /* 1070 */ 440, 1012, 104, 71, 71, 1011, 13, 13, 906, 562, |
| 163855 | | - /* 1080 */ 1485, 562, 280, 280, 95, 522, 487, 444, 907, 1318, |
| 163856 | | - /* 1090 */ 1314, 541, 405, 280, 280, 559, 147, 205, 1485, 1487, |
| 163857 | | - /* 1100 */ 258, 446, 15, 15, 43, 43, 559, 1011, 1011, 1013, |
| 163858 | | - /* 1110 */ 439, 328, 405, 523, 12, 291, 123, 124, 114, 1209, |
| 163859 | | - /* 1120 */ 1209, 1042, 1045, 1034, 1034, 121, 121, 122, 122, 122, |
| 163860 | | - /* 1130 */ 122, 343, 405, 858, 1524, 1205, 123, 124, 114, 1209, |
| 163861 | | - /* 1140 */ 1209, 1042, 1045, 1034, 1034, 121, 121, 122, 122, 122, |
| 163862 | | - /* 1150 */ 122, 1129, 1631, 470, 1631, 367, 123, 111, 114, 1209, |
| 163863 | | - /* 1160 */ 1209, 1042, 1045, 1034, 1034, 121, 121, 122, 122, 122, |
| 163864 | | - /* 1170 */ 122, 1485, 325, 470, 327, 120, 120, 120, 120, 119, |
| 163865 | | - /* 1180 */ 119, 118, 118, 118, 117, 113, 440, 199, 1411, 562, |
| 163866 | | - /* 1190 */ 1286, 858, 460, 1205, 432, 120, 120, 120, 120, 119, |
| 163867 | | - /* 1200 */ 119, 118, 118, 118, 117, 113, 440, 547, 1129, 1632, |
| 163868 | | - /* 1210 */ 535, 1632, 57, 57, 886, 120, 120, 120, 120, 119, |
| 163869 | | - /* 1220 */ 119, 118, 118, 118, 117, 113, 440, 562, 294, 534, |
| 163870 | | - /* 1230 */ 1127, 1411, 1549, 1550, 1323, 405, 6, 6, 1161, 1260, |
| 163871 | | - /* 1240 */ 411, 316, 280, 280, 1411, 504, 559, 521, 296, 453, |
| 163872 | | - /* 1250 */ 44, 44, 562, 887, 12, 559, 326, 474, 421, 403, |
| 163873 | | - /* 1260 */ 124, 114, 1209, 1209, 1042, 1045, 1034, 1034, 121, 121, |
| 163874 | | - /* 1270 */ 122, 122, 122, 122, 562, 58, 58, 284, 1184, 1411, |
| 163875 | | - /* 1280 */ 492, 454, 388, 388, 387, 269, 385, 1127, 1548, 843, |
| 163876 | | - /* 1290 */ 1161, 403, 6, 562, 317, 1150, 466, 59, 59, 1547, |
| 163877 | | - /* 1300 */ 1106, 422, 230, 6, 319, 252, 536, 252, 1150, 427, |
| 163878 | | - /* 1310 */ 562, 1150, 318, 17, 483, 1107, 60, 60, 120, 120, |
| 163879 | | - /* 1320 */ 120, 120, 119, 119, 118, 118, 118, 117, 113, 440, |
| 163880 | | - /* 1330 */ 1108, 212, 477, 61, 61, 1184, 1185, 1186, 108, 554, |
| 163881 | | - /* 1340 */ 320, 4, 232, 452, 522, 562, 233, 452, 562, 433, |
| 163882 | | - /* 1350 */ 164, 550, 416, 137, 475, 557, 562, 289, 562, 1087, |
| 163883 | | - /* 1360 */ 562, 289, 562, 1087, 527, 562, 866, 8, 62, 62, |
| 163884 | | - /* 1370 */ 231, 45, 45, 562, 410, 562, 410, 562, 441, 46, |
| 163885 | | - /* 1380 */ 46, 47, 47, 49, 49, 50, 50, 195, 63, 63, |
| 163886 | | - /* 1390 */ 551, 562, 355, 562, 98, 482, 64, 64, 65, 65, |
| 163887 | | - /* 1400 */ 14, 14, 555, 411, 531, 406, 562, 1021, 562, 530, |
| 163888 | | - /* 1410 */ 312, 553, 312, 553, 66, 66, 129, 129, 562, 1021, |
| 163889 | | - /* 1420 */ 562, 508, 926, 866, 1012, 106, 106, 925, 1011, 67, |
| 163890 | | - /* 1430 */ 67, 52, 52, 107, 447, 441, 564, 563, 412, 173, |
| 163891 | | - /* 1440 */ 1011, 68, 68, 69, 69, 562, 463, 562, 926, 467, |
| 163892 | | - /* 1450 */ 1356, 279, 222, 925, 311, 1355, 403, 562, 455, 403, |
| 163893 | | - /* 1460 */ 1011, 1011, 1013, 235, 403, 84, 209, 1342, 53, 53, |
| 163894 | | - /* 1470 */ 159, 159, 1011, 1011, 1013, 1014, 27, 1575, 1172, 443, |
| 163895 | | - /* 1480 */ 160, 160, 284, 95, 105, 1531, 103, 388, 388, 387, |
| 163896 | | - /* 1490 */ 269, 385, 562, 873, 843, 877, 562, 108, 554, 462, |
| 163897 | | - /* 1500 */ 4, 562, 148, 30, 38, 562, 1124, 230, 392, 319, |
| 163898 | | - /* 1510 */ 108, 554, 523, 4, 557, 76, 76, 318, 562, 54, |
| 163899 | | - /* 1520 */ 54, 562, 333, 464, 72, 72, 329, 557, 130, 130, |
| 163900 | | - /* 1530 */ 562, 285, 1504, 562, 31, 1503, 562, 441, 334, 479, |
| 163901 | | - /* 1540 */ 98, 73, 73, 340, 157, 157, 292, 232, 1072, 551, |
| 163902 | | - /* 1550 */ 441, 873, 1352, 131, 131, 164, 132, 132, 137, 128, |
| 163903 | | - /* 1560 */ 128, 1564, 551, 531, 562, 315, 562, 344, 532, 1003, |
| 163904 | | - /* 1570 */ 469, 257, 257, 885, 884, 231, 531, 562, 1021, 562, |
| 163905 | | - /* 1580 */ 471, 530, 257, 363, 106, 106, 517, 158, 158, 152, |
| 163906 | | - /* 1590 */ 152, 1021, 107, 362, 441, 564, 563, 106, 106, 1011, |
| 163907 | | - /* 1600 */ 136, 136, 135, 135, 562, 107, 1072, 441, 564, 563, |
| 163908 | | - /* 1610 */ 406, 347, 1011, 562, 349, 312, 553, 562, 339, 562, |
| 163909 | | - /* 1620 */ 98, 493, 353, 254, 98, 892, 893, 133, 133, 351, |
| 163910 | | - /* 1630 */ 1302, 1011, 1011, 1013, 1014, 27, 134, 134, 1015, 447, |
| 163911 | | - /* 1640 */ 75, 75, 77, 77, 1011, 1011, 1013, 1014, 27, 1172, |
| 163912 | | - /* 1650 */ 443, 562, 358, 284, 108, 554, 368, 4, 388, 388, |
| 163913 | | - /* 1660 */ 387, 269, 385, 562, 1133, 843, 562, 1068, 956, 254, |
| 163914 | | - /* 1670 */ 257, 557, 968, 969, 74, 74, 549, 923, 230, 110, |
| 163915 | | - /* 1680 */ 319, 108, 554, 1084, 4, 1084, 42, 42, 318, 48, |
| 163916 | | - /* 1690 */ 48, 1083, 1365, 1083, 441, 856, 1015, 146, 557, 924, |
| 163917 | | - /* 1700 */ 1410, 110, 1338, 1350, 548, 1416, 551, 1267, 207, 1258, |
| 163918 | | - /* 1710 */ 1246, 1245, 1247, 1583, 11, 488, 272, 215, 232, 1335, |
| 163919 | | - /* 1720 */ 304, 441, 305, 306, 389, 228, 164, 1397, 1392, 137, |
| 163920 | | - /* 1730 */ 287, 331, 332, 551, 293, 1021, 1385, 337, 473, 200, |
| 163921 | | - /* 1740 */ 361, 106, 106, 930, 498, 1402, 231, 1401, 1285, 107, |
| 163922 | | - /* 1750 */ 396, 441, 564, 563, 219, 1476, 1011, 1347, 1475, 1348, |
| 163923 | | - /* 1760 */ 1346, 1345, 1021, 1224, 552, 1586, 261, 1221, 106, 106, |
| 163924 | | - /* 1770 */ 1523, 201, 383, 1521, 214, 414, 107, 83, 441, 564, |
| 163925 | | - /* 1780 */ 563, 406, 211, 1011, 175, 1398, 312, 553, 1011, 1011, |
| 163926 | | - /* 1790 */ 1013, 1014, 27, 226, 184, 169, 100, 554, 79, 4, |
| 163927 | | - /* 1800 */ 82, 457, 35, 179, 458, 177, 491, 238, 96, 1481, |
| 163928 | | - /* 1810 */ 447, 180, 1404, 557, 181, 1011, 1011, 1013, 1014, 27, |
| 163929 | | - /* 1820 */ 182, 1403, 394, 36, 465, 1406, 397, 188, 1470, 480, |
| 163930 | | - /* 1830 */ 242, 89, 1492, 486, 342, 244, 441, 273, 192, 346, |
| 163931 | | - /* 1840 */ 489, 245, 399, 1248, 428, 246, 507, 1296, 551, 91, |
| 163932 | | - /* 1850 */ 877, 1305, 1304, 220, 1601, 1295, 1303, 430, 431, 516, |
| 163933 | | - /* 1860 */ 1569, 259, 400, 302, 1600, 1275, 303, 260, 360, 1274, |
| 163934 | | - /* 1870 */ 1273, 1599, 366, 1555, 434, 1554, 1370, 1021, 1369, 542, |
| 163935 | | - /* 1880 */ 126, 10, 1456, 106, 106, 377, 102, 97, 310, 526, |
| 163936 | | - /* 1890 */ 34, 107, 566, 441, 564, 563, 1178, 271, 1011, 268, |
| 163937 | | - /* 1900 */ 270, 567, 1243, 1238, 206, 1328, 375, 381, 1327, 382, |
| 163938 | | - /* 1910 */ 407, 161, 174, 408, 1508, 1509, 143, 300, 830, 162, |
| 163939 | | - /* 1920 */ 1507, 1506, 163, 442, 208, 314, 227, 216, 217, 78, |
| 163940 | | - /* 1930 */ 1011, 1011, 1013, 1014, 27, 140, 1082, 322, 1080, 165, |
| 163941 | | - /* 1940 */ 176, 1204, 234, 178, 909, 330, 237, 1096, 183, 166, |
| 163942 | | - /* 1950 */ 167, 417, 85, 86, 419, 185, 87, 88, 168, 1099, |
| 163943 | | - /* 1960 */ 239, 1095, 240, 154, 18, 241, 341, 1218, 257, 1088, |
| 163944 | | - /* 1970 */ 243, 485, 190, 189, 37, 845, 490, 362, 247, 494, |
| 163945 | | - /* 1980 */ 357, 191, 875, 90, 19, 502, 354, 20, 499, 92, |
| 163946 | | - /* 1990 */ 170, 155, 888, 93, 301, 509, 94, 1166, 156, 1048, |
| 163947 | | - /* 2000 */ 1135, 39, 221, 1134, 276, 278, 256, 194, 110, 960, |
| 163948 | | - /* 2010 */ 954, 1156, 21, 1152, 22, 1160, 1140, 1154, 23, 33, |
| 163949 | | - /* 2020 */ 24, 1159, 25, 538, 26, 198, 98, 1063, 1049, 1047, |
| 163950 | | - /* 2030 */ 1051, 7, 1105, 262, 1104, 263, 1052, 28, 40, 558, |
| 163951 | | - /* 2040 */ 1016, 857, 109, 29, 919, 386, 139, 172, 264, 265, |
| 163952 | | - /* 2050 */ 1174, 1592, 1173, 1234, 1234, 1234, 1234, 1234, 1234, 1234, |
| 163953 | | - /* 2060 */ 1234, 1234, 1234, 1591, |
| 163728 | + /* 0 */ 568, 208, 568, 118, 115, 229, 568, 118, 115, 229, |
| 163729 | + /* 10 */ 568, 1314, 377, 1293, 408, 562, 562, 562, 568, 409, |
| 163730 | + /* 20 */ 378, 1314, 1276, 41, 41, 41, 41, 208, 1526, 71, |
| 163731 | + /* 30 */ 71, 971, 419, 41, 41, 491, 303, 279, 303, 972, |
| 163732 | + /* 40 */ 397, 71, 71, 125, 126, 80, 1217, 1217, 1050, 1053, |
| 163733 | + /* 50 */ 1040, 1040, 123, 123, 124, 124, 124, 124, 476, 409, |
| 163734 | + /* 60 */ 1241, 1, 1, 575, 2, 1245, 550, 118, 115, 229, |
| 163735 | + /* 70 */ 317, 480, 146, 480, 524, 118, 115, 229, 529, 1327, |
| 163736 | + /* 80 */ 417, 523, 142, 125, 126, 80, 1217, 1217, 1050, 1053, |
| 163737 | + /* 90 */ 1040, 1040, 123, 123, 124, 124, 124, 124, 118, 115, |
| 163738 | + /* 100 */ 229, 327, 122, 122, 122, 122, 121, 121, 120, 120, |
| 163739 | + /* 110 */ 120, 119, 116, 444, 284, 284, 284, 284, 442, 442, |
| 163740 | + /* 120 */ 442, 1567, 376, 1569, 1192, 375, 1163, 565, 1163, 565, |
| 163741 | + /* 130 */ 409, 1567, 537, 259, 226, 444, 101, 145, 449, 316, |
| 163742 | + /* 140 */ 559, 240, 122, 122, 122, 122, 121, 121, 120, 120, |
| 163743 | + /* 150 */ 120, 119, 116, 444, 125, 126, 80, 1217, 1217, 1050, |
| 163744 | + /* 160 */ 1053, 1040, 1040, 123, 123, 124, 124, 124, 124, 142, |
| 163745 | + /* 170 */ 294, 1192, 339, 448, 120, 120, 120, 119, 116, 444, |
| 163746 | + /* 180 */ 127, 1192, 1193, 1194, 148, 441, 440, 568, 119, 116, |
| 163747 | + /* 190 */ 444, 124, 124, 124, 124, 117, 122, 122, 122, 122, |
| 163748 | + /* 200 */ 121, 121, 120, 120, 120, 119, 116, 444, 454, 113, |
| 163749 | + /* 210 */ 13, 13, 546, 122, 122, 122, 122, 121, 121, 120, |
| 163750 | + /* 220 */ 120, 120, 119, 116, 444, 422, 316, 559, 1192, 1193, |
| 163751 | + /* 230 */ 1194, 149, 1224, 409, 1224, 124, 124, 124, 124, 122, |
| 163752 | + /* 240 */ 122, 122, 122, 121, 121, 120, 120, 120, 119, 116, |
| 163753 | + /* 250 */ 444, 465, 342, 1037, 1037, 1051, 1054, 125, 126, 80, |
| 163754 | + /* 260 */ 1217, 1217, 1050, 1053, 1040, 1040, 123, 123, 124, 124, |
| 163755 | + /* 270 */ 124, 124, 1279, 522, 222, 1192, 568, 409, 224, 514, |
| 163756 | + /* 280 */ 175, 82, 83, 122, 122, 122, 122, 121, 121, 120, |
| 163757 | + /* 290 */ 120, 120, 119, 116, 444, 1007, 16, 16, 1192, 133, |
| 163758 | + /* 300 */ 133, 125, 126, 80, 1217, 1217, 1050, 1053, 1040, 1040, |
| 163759 | + /* 310 */ 123, 123, 124, 124, 124, 124, 122, 122, 122, 122, |
| 163760 | + /* 320 */ 121, 121, 120, 120, 120, 119, 116, 444, 1041, 546, |
| 163761 | + /* 330 */ 1192, 373, 1192, 1193, 1194, 252, 1434, 399, 504, 501, |
| 163762 | + /* 340 */ 500, 111, 560, 566, 4, 926, 926, 433, 499, 340, |
| 163763 | + /* 350 */ 460, 328, 360, 394, 1237, 1192, 1193, 1194, 563, 568, |
| 163764 | + /* 360 */ 122, 122, 122, 122, 121, 121, 120, 120, 120, 119, |
| 163765 | + /* 370 */ 116, 444, 284, 284, 369, 1580, 1607, 441, 440, 154, |
| 163766 | + /* 380 */ 409, 445, 71, 71, 1286, 565, 1221, 1192, 1193, 1194, |
| 163767 | + /* 390 */ 85, 1223, 271, 557, 543, 515, 1561, 568, 98, 1222, |
| 163768 | + /* 400 */ 6, 1278, 472, 142, 125, 126, 80, 1217, 1217, 1050, |
| 163769 | + /* 410 */ 1053, 1040, 1040, 123, 123, 124, 124, 124, 124, 550, |
| 163770 | + /* 420 */ 13, 13, 1027, 507, 1224, 1192, 1224, 549, 109, 109, |
| 163771 | + /* 430 */ 222, 568, 1238, 175, 568, 427, 110, 197, 445, 570, |
| 163772 | + /* 440 */ 569, 430, 1552, 1017, 325, 551, 1192, 270, 287, 368, |
| 163773 | + /* 450 */ 510, 363, 509, 257, 71, 71, 543, 71, 71, 359, |
| 163774 | + /* 460 */ 316, 559, 1613, 122, 122, 122, 122, 121, 121, 120, |
| 163775 | + /* 470 */ 120, 120, 119, 116, 444, 1017, 1017, 1019, 1020, 27, |
| 163776 | + /* 480 */ 284, 284, 1192, 1193, 1194, 1158, 568, 1612, 409, 901, |
| 163777 | + /* 490 */ 190, 550, 356, 565, 550, 937, 533, 517, 1158, 516, |
| 163778 | + /* 500 */ 413, 1158, 552, 1192, 1193, 1194, 568, 544, 1554, 51, |
| 163779 | + /* 510 */ 51, 214, 125, 126, 80, 1217, 1217, 1050, 1053, 1040, |
| 163780 | + /* 520 */ 1040, 123, 123, 124, 124, 124, 124, 1192, 474, 135, |
| 163781 | + /* 530 */ 135, 409, 284, 284, 1490, 505, 121, 121, 120, 120, |
| 163782 | + /* 540 */ 120, 119, 116, 444, 1007, 565, 518, 217, 541, 1561, |
| 163783 | + /* 550 */ 316, 559, 142, 6, 532, 125, 126, 80, 1217, 1217, |
| 163784 | + /* 560 */ 1050, 1053, 1040, 1040, 123, 123, 124, 124, 124, 124, |
| 163785 | + /* 570 */ 1555, 122, 122, 122, 122, 121, 121, 120, 120, 120, |
| 163786 | + /* 580 */ 119, 116, 444, 485, 1192, 1193, 1194, 482, 281, 1267, |
| 163787 | + /* 590 */ 957, 252, 1192, 373, 504, 501, 500, 1192, 340, 571, |
| 163788 | + /* 600 */ 1192, 571, 409, 292, 499, 957, 876, 191, 480, 316, |
| 163789 | + /* 610 */ 559, 384, 290, 380, 122, 122, 122, 122, 121, 121, |
| 163790 | + /* 620 */ 120, 120, 120, 119, 116, 444, 125, 126, 80, 1217, |
| 163791 | + /* 630 */ 1217, 1050, 1053, 1040, 1040, 123, 123, 124, 124, 124, |
| 163792 | + /* 640 */ 124, 409, 394, 1136, 1192, 869, 100, 284, 284, 1192, |
| 163793 | + /* 650 */ 1193, 1194, 373, 1093, 1192, 1193, 1194, 1192, 1193, 1194, |
| 163794 | + /* 660 */ 565, 455, 32, 373, 233, 125, 126, 80, 1217, 1217, |
| 163795 | + /* 670 */ 1050, 1053, 1040, 1040, 123, 123, 124, 124, 124, 124, |
| 163796 | + /* 680 */ 1433, 959, 568, 228, 958, 122, 122, 122, 122, 121, |
| 163797 | + /* 690 */ 121, 120, 120, 120, 119, 116, 444, 1158, 228, 1192, |
| 163798 | + /* 700 */ 157, 1192, 1193, 1194, 1553, 13, 13, 301, 957, 1232, |
| 163799 | + /* 710 */ 1158, 153, 409, 1158, 373, 1583, 1176, 5, 369, 1580, |
| 163800 | + /* 720 */ 429, 1238, 3, 957, 122, 122, 122, 122, 121, 121, |
| 163801 | + /* 730 */ 120, 120, 120, 119, 116, 444, 125, 126, 80, 1217, |
| 163802 | + /* 740 */ 1217, 1050, 1053, 1040, 1040, 123, 123, 124, 124, 124, |
| 163803 | + /* 750 */ 124, 409, 208, 567, 1192, 1028, 1192, 1193, 1194, 1192, |
| 163804 | + /* 760 */ 388, 852, 155, 1552, 286, 402, 1098, 1098, 488, 568, |
| 163805 | + /* 770 */ 465, 342, 1319, 1319, 1552, 125, 126, 80, 1217, 1217, |
| 163806 | + /* 780 */ 1050, 1053, 1040, 1040, 123, 123, 124, 124, 124, 124, |
| 163807 | + /* 790 */ 129, 568, 13, 13, 374, 122, 122, 122, 122, 121, |
| 163808 | + /* 800 */ 121, 120, 120, 120, 119, 116, 444, 302, 568, 453, |
| 163809 | + /* 810 */ 528, 1192, 1193, 1194, 13, 13, 1192, 1193, 1194, 1297, |
| 163810 | + /* 820 */ 463, 1267, 409, 1317, 1317, 1552, 1012, 453, 452, 200, |
| 163811 | + /* 830 */ 299, 71, 71, 1265, 122, 122, 122, 122, 121, 121, |
| 163812 | + /* 840 */ 120, 120, 120, 119, 116, 444, 125, 126, 80, 1217, |
| 163813 | + /* 850 */ 1217, 1050, 1053, 1040, 1040, 123, 123, 124, 124, 124, |
| 163814 | + /* 860 */ 124, 409, 227, 1073, 1158, 284, 284, 419, 312, 278, |
| 163815 | + /* 870 */ 278, 285, 285, 1419, 406, 405, 382, 1158, 565, 568, |
| 163816 | + /* 880 */ 1158, 1196, 565, 1600, 565, 125, 126, 80, 1217, 1217, |
| 163817 | + /* 890 */ 1050, 1053, 1040, 1040, 123, 123, 124, 124, 124, 124, |
| 163818 | + /* 900 */ 453, 1482, 13, 13, 1536, 122, 122, 122, 122, 121, |
| 163819 | + /* 910 */ 121, 120, 120, 120, 119, 116, 444, 201, 568, 354, |
| 163820 | + /* 920 */ 1586, 575, 2, 1245, 840, 841, 842, 1562, 317, 1212, |
| 163821 | + /* 930 */ 146, 6, 409, 255, 254, 253, 206, 1327, 9, 1196, |
| 163822 | + /* 940 */ 262, 71, 71, 424, 122, 122, 122, 122, 121, 121, |
| 163823 | + /* 950 */ 120, 120, 120, 119, 116, 444, 125, 126, 80, 1217, |
| 163824 | + /* 960 */ 1217, 1050, 1053, 1040, 1040, 123, 123, 124, 124, 124, |
| 163825 | + /* 970 */ 124, 568, 284, 284, 568, 1213, 409, 574, 313, 1245, |
| 163826 | + /* 980 */ 349, 1296, 352, 419, 317, 565, 146, 491, 525, 1643, |
| 163827 | + /* 990 */ 395, 371, 491, 1327, 70, 70, 1295, 71, 71, 240, |
| 163828 | + /* 1000 */ 1325, 104, 80, 1217, 1217, 1050, 1053, 1040, 1040, 123, |
| 163829 | + /* 1010 */ 123, 124, 124, 124, 124, 122, 122, 122, 122, 121, |
| 163830 | + /* 1020 */ 121, 120, 120, 120, 119, 116, 444, 1114, 284, 284, |
| 163831 | + /* 1030 */ 428, 448, 1525, 1213, 439, 284, 284, 1489, 1352, 311, |
| 163832 | + /* 1040 */ 474, 565, 1115, 971, 491, 491, 217, 1263, 565, 1538, |
| 163833 | + /* 1050 */ 568, 972, 207, 568, 1027, 240, 383, 1116, 519, 122, |
| 163834 | + /* 1060 */ 122, 122, 122, 121, 121, 120, 120, 120, 119, 116, |
| 163835 | + /* 1070 */ 444, 1018, 107, 71, 71, 1017, 13, 13, 912, 568, |
| 163836 | + /* 1080 */ 1495, 568, 284, 284, 97, 526, 491, 448, 913, 1326, |
| 163837 | + /* 1090 */ 1322, 545, 409, 284, 284, 565, 151, 209, 1495, 1497, |
| 163838 | + /* 1100 */ 262, 450, 55, 55, 56, 56, 565, 1017, 1017, 1019, |
| 163839 | + /* 1110 */ 443, 332, 409, 527, 12, 295, 125, 126, 80, 1217, |
| 163840 | + /* 1120 */ 1217, 1050, 1053, 1040, 1040, 123, 123, 124, 124, 124, |
| 163841 | + /* 1130 */ 124, 347, 409, 864, 1534, 1213, 125, 126, 80, 1217, |
| 163842 | + /* 1140 */ 1217, 1050, 1053, 1040, 1040, 123, 123, 124, 124, 124, |
| 163843 | + /* 1150 */ 124, 1137, 1641, 474, 1641, 371, 125, 114, 80, 1217, |
| 163844 | + /* 1160 */ 1217, 1050, 1053, 1040, 1040, 123, 123, 124, 124, 124, |
| 163845 | + /* 1170 */ 124, 1495, 329, 474, 331, 122, 122, 122, 122, 121, |
| 163846 | + /* 1180 */ 121, 120, 120, 120, 119, 116, 444, 203, 1419, 568, |
| 163847 | + /* 1190 */ 1294, 864, 464, 1213, 436, 122, 122, 122, 122, 121, |
| 163848 | + /* 1200 */ 121, 120, 120, 120, 119, 116, 444, 553, 1137, 1642, |
| 163849 | + /* 1210 */ 539, 1642, 15, 15, 892, 122, 122, 122, 122, 121, |
| 163850 | + /* 1220 */ 121, 120, 120, 120, 119, 116, 444, 568, 298, 538, |
| 163851 | + /* 1230 */ 1135, 1419, 1559, 1560, 1331, 409, 6, 6, 1169, 1268, |
| 163852 | + /* 1240 */ 415, 320, 284, 284, 1419, 508, 565, 525, 300, 457, |
| 163853 | + /* 1250 */ 43, 43, 568, 893, 12, 565, 330, 478, 425, 407, |
| 163854 | + /* 1260 */ 126, 80, 1217, 1217, 1050, 1053, 1040, 1040, 123, 123, |
| 163855 | + /* 1270 */ 124, 124, 124, 124, 568, 57, 57, 288, 1192, 1419, |
| 163856 | + /* 1280 */ 496, 458, 392, 392, 391, 273, 389, 1135, 1558, 849, |
| 163857 | + /* 1290 */ 1169, 407, 6, 568, 321, 1158, 470, 44, 44, 1557, |
| 163858 | + /* 1300 */ 1114, 426, 234, 6, 323, 256, 540, 256, 1158, 431, |
| 163859 | + /* 1310 */ 568, 1158, 322, 17, 487, 1115, 58, 58, 122, 122, |
| 163860 | + /* 1320 */ 122, 122, 121, 121, 120, 120, 120, 119, 116, 444, |
| 163861 | + /* 1330 */ 1116, 216, 481, 59, 59, 1192, 1193, 1194, 111, 560, |
| 163862 | + /* 1340 */ 324, 4, 236, 456, 526, 568, 237, 456, 568, 437, |
| 163863 | + /* 1350 */ 168, 556, 420, 141, 479, 563, 568, 293, 568, 1095, |
| 163864 | + /* 1360 */ 568, 293, 568, 1095, 531, 568, 872, 8, 60, 60, |
| 163865 | + /* 1370 */ 235, 61, 61, 568, 414, 568, 414, 568, 445, 62, |
| 163866 | + /* 1380 */ 62, 45, 45, 46, 46, 47, 47, 199, 49, 49, |
| 163867 | + /* 1390 */ 557, 568, 359, 568, 100, 486, 50, 50, 63, 63, |
| 163868 | + /* 1400 */ 64, 64, 561, 415, 535, 410, 568, 1027, 568, 534, |
| 163869 | + /* 1410 */ 316, 559, 316, 559, 65, 65, 14, 14, 568, 1027, |
| 163870 | + /* 1420 */ 568, 512, 932, 872, 1018, 109, 109, 931, 1017, 66, |
| 163871 | + /* 1430 */ 66, 131, 131, 110, 451, 445, 570, 569, 416, 177, |
| 163872 | + /* 1440 */ 1017, 132, 132, 67, 67, 568, 467, 568, 932, 471, |
| 163873 | + /* 1450 */ 1364, 283, 226, 931, 315, 1363, 407, 568, 459, 407, |
| 163874 | + /* 1460 */ 1017, 1017, 1019, 239, 407, 86, 213, 1350, 52, 52, |
| 163875 | + /* 1470 */ 68, 68, 1017, 1017, 1019, 1020, 27, 1585, 1180, 447, |
| 163876 | + /* 1480 */ 69, 69, 288, 97, 108, 1541, 106, 392, 392, 391, |
| 163877 | + /* 1490 */ 273, 389, 568, 879, 849, 883, 568, 111, 560, 466, |
| 163878 | + /* 1500 */ 4, 568, 152, 30, 38, 568, 1132, 234, 396, 323, |
| 163879 | + /* 1510 */ 111, 560, 527, 4, 563, 53, 53, 322, 568, 163, |
| 163880 | + /* 1520 */ 163, 568, 337, 468, 164, 164, 333, 563, 76, 76, |
| 163881 | + /* 1530 */ 568, 289, 1514, 568, 31, 1513, 568, 445, 338, 483, |
| 163882 | + /* 1540 */ 100, 54, 54, 344, 72, 72, 296, 236, 1080, 557, |
| 163883 | + /* 1550 */ 445, 879, 1360, 134, 134, 168, 73, 73, 141, 161, |
| 163884 | + /* 1560 */ 161, 1574, 557, 535, 568, 319, 568, 348, 536, 1009, |
| 163885 | + /* 1570 */ 473, 261, 261, 891, 890, 235, 535, 568, 1027, 568, |
| 163886 | + /* 1580 */ 475, 534, 261, 367, 109, 109, 521, 136, 136, 130, |
| 163887 | + /* 1590 */ 130, 1027, 110, 366, 445, 570, 569, 109, 109, 1017, |
| 163888 | + /* 1600 */ 162, 162, 156, 156, 568, 110, 1080, 445, 570, 569, |
| 163889 | + /* 1610 */ 410, 351, 1017, 568, 353, 316, 559, 568, 343, 568, |
| 163890 | + /* 1620 */ 100, 497, 357, 258, 100, 898, 899, 140, 140, 355, |
| 163891 | + /* 1630 */ 1310, 1017, 1017, 1019, 1020, 27, 139, 139, 362, 451, |
| 163892 | + /* 1640 */ 137, 137, 138, 138, 1017, 1017, 1019, 1020, 27, 1180, |
| 163893 | + /* 1650 */ 447, 568, 372, 288, 111, 560, 1021, 4, 392, 392, |
| 163894 | + /* 1660 */ 391, 273, 389, 568, 1141, 849, 568, 1076, 568, 258, |
| 163895 | + /* 1670 */ 492, 563, 568, 211, 75, 75, 555, 962, 234, 261, |
| 163896 | + /* 1680 */ 323, 111, 560, 929, 4, 113, 77, 77, 322, 74, |
| 163897 | + /* 1690 */ 74, 42, 42, 1373, 445, 48, 48, 1418, 563, 974, |
| 163898 | + /* 1700 */ 975, 1092, 1091, 1092, 1091, 862, 557, 150, 930, 1346, |
| 163899 | + /* 1710 */ 113, 1358, 554, 1424, 1021, 1275, 1266, 1254, 236, 1253, |
| 163900 | + /* 1720 */ 1255, 445, 1593, 1343, 308, 276, 168, 309, 11, 141, |
| 163901 | + /* 1730 */ 393, 310, 232, 557, 1405, 1027, 335, 291, 1400, 219, |
| 163902 | + /* 1740 */ 336, 109, 109, 936, 297, 1410, 235, 341, 477, 110, |
| 163903 | + /* 1750 */ 502, 445, 570, 569, 1393, 1409, 1017, 400, 1293, 365, |
| 163904 | + /* 1760 */ 223, 1486, 1027, 1485, 1355, 1356, 1354, 1353, 109, 109, |
| 163905 | + /* 1770 */ 204, 1596, 1232, 558, 265, 218, 110, 205, 445, 570, |
| 163906 | + /* 1780 */ 569, 410, 387, 1017, 1533, 179, 316, 559, 1017, 1017, |
| 163907 | + /* 1790 */ 1019, 1020, 27, 230, 1531, 1229, 79, 560, 85, 4, |
| 163908 | + /* 1800 */ 418, 215, 548, 81, 84, 188, 1406, 173, 181, 461, |
| 163909 | + /* 1810 */ 451, 35, 462, 563, 183, 1017, 1017, 1019, 1020, 27, |
| 163910 | + /* 1820 */ 184, 1491, 185, 186, 495, 242, 98, 398, 1412, 36, |
| 163911 | + /* 1830 */ 1411, 484, 91, 469, 401, 1414, 445, 192, 1480, 246, |
| 163912 | + /* 1840 */ 1502, 490, 346, 277, 248, 196, 493, 511, 557, 350, |
| 163913 | + /* 1850 */ 1256, 249, 250, 403, 1313, 1312, 111, 560, 432, 4, |
| 163914 | + /* 1860 */ 1311, 1304, 93, 1611, 883, 1610, 224, 404, 434, 520, |
| 163915 | + /* 1870 */ 263, 435, 1579, 563, 1283, 1282, 364, 1027, 306, 1281, |
| 163916 | + /* 1880 */ 264, 1609, 1565, 109, 109, 370, 1303, 307, 1564, 438, |
| 163917 | + /* 1890 */ 128, 110, 1378, 445, 570, 569, 445, 546, 1017, 10, |
| 163918 | + /* 1900 */ 1466, 105, 381, 1377, 34, 572, 99, 1336, 557, 314, |
| 163919 | + /* 1910 */ 1186, 530, 272, 274, 379, 210, 1335, 547, 385, 386, |
| 163920 | + /* 1920 */ 275, 573, 1251, 1246, 411, 412, 1518, 165, 178, 1519, |
| 163921 | + /* 1930 */ 1017, 1017, 1019, 1020, 27, 1517, 1516, 1027, 78, 147, |
| 163922 | + /* 1940 */ 166, 220, 221, 109, 109, 836, 304, 167, 446, 212, |
| 163923 | + /* 1950 */ 318, 110, 231, 445, 570, 569, 144, 1090, 1017, 1088, |
| 163924 | + /* 1960 */ 326, 180, 169, 1212, 182, 334, 238, 915, 241, 1104, |
| 163925 | + /* 1970 */ 187, 170, 171, 421, 87, 88, 423, 189, 89, 90, |
| 163926 | + /* 1980 */ 172, 1107, 243, 1103, 244, 158, 18, 245, 345, 247, |
| 163927 | + /* 1990 */ 1017, 1017, 1019, 1020, 27, 261, 1096, 193, 1226, 489, |
| 163928 | + /* 2000 */ 194, 37, 366, 851, 494, 251, 195, 506, 92, 19, |
| 163929 | + /* 2010 */ 498, 358, 20, 503, 881, 361, 94, 894, 305, 159, |
| 163930 | + /* 2020 */ 513, 39, 95, 1174, 160, 1056, 966, 1143, 96, 174, |
| 163931 | + /* 2030 */ 1142, 225, 280, 282, 198, 960, 113, 1164, 1160, 260, |
| 163932 | + /* 2040 */ 21, 22, 23, 1162, 1168, 1167, 1148, 24, 33, 25, |
| 163933 | + /* 2050 */ 202, 542, 26, 100, 1071, 102, 1057, 103, 7, 1055, |
| 163934 | + /* 2060 */ 1059, 1113, 1060, 1112, 266, 267, 28, 40, 390, 1022, |
| 163935 | + /* 2070 */ 863, 112, 29, 564, 1182, 1181, 268, 176, 143, 925, |
| 163936 | + /* 2080 */ 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, 1242, |
| 163937 | + /* 2090 */ 1242, 1242, 1242, 1242, 269, 1602, 1242, 1601, |
| 163954 | 163938 | }; |
| 163955 | 163939 | static const YYCODETYPE yy_lookahead[] = { |
| 163956 | 163940 | /* 0 */ 193, 193, 193, 274, 275, 276, 193, 274, 275, 276, |
| 163957 | 163941 | /* 10 */ 193, 223, 219, 225, 206, 210, 211, 212, 193, 19, |
| 163958 | 163942 | /* 20 */ 219, 233, 216, 216, 217, 216, 217, 193, 295, 216, |
| | @@ -164114,57 +164098,57 @@ |
| 164114 | 164098 | /* 1580 */ 23, 90, 25, 121, 106, 107, 19, 216, 217, 216, |
| 164115 | 164099 | /* 1590 */ 217, 100, 114, 131, 116, 117, 118, 106, 107, 121, |
| 164116 | 164100 | /* 1600 */ 216, 217, 216, 217, 193, 114, 117, 116, 117, 118, |
| 164117 | 164101 | /* 1610 */ 133, 193, 121, 193, 193, 138, 139, 193, 23, 193, |
| 164118 | 164102 | /* 1620 */ 25, 23, 23, 25, 25, 7, 8, 216, 217, 193, |
| 164119 | | - /* 1630 */ 193, 153, 154, 155, 156, 157, 216, 217, 59, 162, |
| 164103 | + /* 1630 */ 193, 153, 154, 155, 156, 157, 216, 217, 193, 162, |
| 164120 | 164104 | /* 1640 */ 216, 217, 216, 217, 153, 154, 155, 156, 157, 1, |
| 164121 | | - /* 1650 */ 2, 193, 193, 5, 19, 20, 193, 22, 10, 11, |
| 164122 | | - /* 1660 */ 12, 13, 14, 193, 97, 17, 193, 23, 23, 25, |
| 164123 | | - /* 1670 */ 25, 36, 83, 84, 216, 217, 236, 23, 30, 25, |
| 164124 | | - /* 1680 */ 32, 19, 20, 153, 22, 155, 216, 217, 40, 216, |
| 164125 | | - /* 1690 */ 217, 153, 193, 155, 59, 23, 117, 25, 36, 23, |
| 164126 | | - /* 1700 */ 193, 25, 193, 193, 193, 193, 71, 193, 242, 193, |
| 164127 | | - /* 1710 */ 193, 193, 193, 193, 243, 288, 287, 214, 70, 255, |
| 164128 | | - /* 1720 */ 255, 59, 255, 255, 191, 297, 78, 271, 267, 81, |
| 164129 | | - /* 1730 */ 245, 293, 246, 71, 246, 100, 267, 245, 293, 249, |
| 164130 | | - /* 1740 */ 219, 106, 107, 108, 220, 271, 98, 271, 225, 114, |
| 164131 | | - /* 1750 */ 271, 116, 117, 118, 229, 219, 121, 259, 219, 259, |
| 164132 | | - /* 1760 */ 259, 259, 100, 60, 280, 196, 141, 38, 106, 107, |
| 164133 | | - /* 1770 */ 200, 249, 245, 200, 243, 200, 114, 151, 116, 117, |
| 164134 | | - /* 1780 */ 118, 133, 150, 121, 297, 272, 138, 139, 153, 154, |
| 164135 | | - /* 1790 */ 155, 156, 157, 297, 22, 43, 19, 20, 294, 22, |
| 164136 | | - /* 1800 */ 294, 18, 270, 237, 200, 234, 18, 199, 149, 283, |
| 164137 | | - /* 1810 */ 162, 237, 272, 36, 237, 153, 154, 155, 156, 157, |
| 164138 | | - /* 1820 */ 237, 272, 246, 270, 246, 234, 246, 234, 246, 200, |
| 164139 | | - /* 1830 */ 199, 158, 290, 62, 289, 199, 59, 200, 22, 200, |
| 164140 | | - /* 1840 */ 221, 199, 221, 200, 64, 199, 115, 227, 71, 22, |
| 164141 | | - /* 1850 */ 126, 218, 218, 165, 224, 227, 218, 24, 113, 305, |
| 164142 | | - /* 1860 */ 312, 200, 221, 282, 224, 218, 282, 91, 218, 220, |
| 164143 | | - /* 1870 */ 218, 218, 221, 317, 82, 317, 265, 100, 265, 145, |
| 164144 | | - /* 1880 */ 148, 22, 277, 106, 107, 200, 158, 147, 279, 146, |
| 164145 | | - /* 1890 */ 25, 114, 202, 116, 117, 118, 13, 6, 121, 194, |
| 164146 | | - /* 1900 */ 194, 192, 192, 192, 248, 250, 249, 247, 250, 246, |
| 164147 | | - /* 1910 */ 303, 207, 300, 303, 213, 213, 222, 222, 4, 207, |
| 164148 | | - /* 1920 */ 213, 213, 207, 3, 22, 163, 15, 214, 214, 213, |
| 164149 | | - /* 1930 */ 153, 154, 155, 156, 157, 16, 23, 139, 23, 130, |
| 164150 | | - /* 1940 */ 151, 25, 24, 142, 20, 16, 144, 1, 142, 130, |
| 164151 | | - /* 1950 */ 130, 61, 53, 53, 37, 151, 53, 53, 130, 116, |
| 164152 | | - /* 1960 */ 34, 1, 141, 5, 22, 115, 161, 75, 25, 68, |
| 164153 | | - /* 1970 */ 141, 41, 115, 68, 24, 20, 19, 131, 125, 67, |
| 164154 | | - /* 1980 */ 24, 22, 59, 22, 22, 96, 23, 22, 67, 22, |
| 164155 | | - /* 1990 */ 37, 23, 28, 149, 67, 22, 25, 23, 23, 23, |
| 164156 | | - /* 2000 */ 23, 22, 141, 97, 23, 23, 34, 22, 25, 116, |
| 164157 | | - /* 2010 */ 143, 75, 34, 88, 34, 75, 23, 86, 34, 22, |
| 164158 | | - /* 2020 */ 34, 93, 34, 24, 34, 25, 25, 23, 23, 23, |
| 164159 | | - /* 2030 */ 23, 44, 23, 25, 23, 22, 11, 22, 22, 25, |
| 164160 | | - /* 2040 */ 23, 23, 22, 22, 135, 15, 23, 25, 141, 141, |
| 164161 | | - /* 2050 */ 1, 141, 1, 319, 319, 319, 319, 319, 319, 319, |
| 164162 | | - /* 2060 */ 319, 319, 319, 141, 319, 319, 319, 319, 319, 319, |
| 164163 | | - /* 2070 */ 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, |
| 164105 | + /* 1650 */ 2, 193, 193, 5, 19, 20, 59, 22, 10, 11, |
| 164106 | + /* 1660 */ 12, 13, 14, 193, 97, 17, 193, 23, 193, 25, |
| 164107 | + /* 1670 */ 288, 36, 193, 242, 216, 217, 236, 23, 30, 25, |
| 164108 | + /* 1680 */ 32, 19, 20, 23, 22, 25, 216, 217, 40, 216, |
| 164109 | + /* 1690 */ 217, 216, 217, 193, 59, 216, 217, 193, 36, 83, |
| 164110 | + /* 1700 */ 84, 153, 153, 155, 155, 23, 71, 25, 23, 193, |
| 164111 | + /* 1710 */ 25, 193, 193, 193, 117, 193, 193, 193, 70, 193, |
| 164112 | + /* 1720 */ 193, 59, 193, 255, 255, 287, 78, 255, 243, 81, |
| 164113 | + /* 1730 */ 191, 255, 297, 71, 271, 100, 293, 245, 267, 214, |
| 164114 | + /* 1740 */ 246, 106, 107, 108, 246, 271, 98, 245, 293, 114, |
| 164115 | + /* 1750 */ 220, 116, 117, 118, 267, 271, 121, 271, 225, 219, |
| 164116 | + /* 1760 */ 229, 219, 100, 219, 259, 259, 259, 259, 106, 107, |
| 164117 | + /* 1770 */ 249, 196, 60, 280, 141, 243, 114, 249, 116, 117, |
| 164118 | + /* 1780 */ 118, 133, 245, 121, 200, 297, 138, 139, 153, 154, |
| 164119 | + /* 1790 */ 155, 156, 157, 297, 200, 38, 19, 20, 151, 22, |
| 164120 | + /* 1800 */ 200, 150, 140, 294, 294, 22, 272, 43, 234, 18, |
| 164121 | + /* 1810 */ 162, 270, 200, 36, 237, 153, 154, 155, 156, 157, |
| 164122 | + /* 1820 */ 237, 283, 237, 237, 18, 199, 149, 246, 272, 270, |
| 164123 | + /* 1830 */ 272, 200, 158, 246, 246, 234, 59, 234, 246, 199, |
| 164124 | + /* 1840 */ 290, 62, 289, 200, 199, 22, 221, 115, 71, 200, |
| 164125 | + /* 1850 */ 200, 199, 199, 221, 218, 218, 19, 20, 64, 22, |
| 164126 | + /* 1860 */ 218, 227, 22, 224, 126, 224, 165, 221, 24, 305, |
| 164127 | + /* 1870 */ 200, 113, 312, 36, 218, 220, 218, 100, 282, 218, |
| 164128 | + /* 1880 */ 91, 218, 317, 106, 107, 221, 227, 282, 317, 82, |
| 164129 | + /* 1890 */ 148, 114, 265, 116, 117, 118, 59, 145, 121, 22, |
| 164130 | + /* 1900 */ 277, 158, 200, 265, 25, 202, 147, 250, 71, 279, |
| 164131 | + /* 1910 */ 13, 146, 194, 194, 249, 248, 250, 140, 247, 246, |
| 164132 | + /* 1920 */ 6, 192, 192, 192, 303, 303, 213, 207, 300, 213, |
| 164133 | + /* 1930 */ 153, 154, 155, 156, 157, 213, 213, 100, 213, 222, |
| 164134 | + /* 1940 */ 207, 214, 214, 106, 107, 4, 222, 207, 3, 22, |
| 164135 | + /* 1950 */ 163, 114, 15, 116, 117, 118, 16, 23, 121, 23, |
| 164136 | + /* 1960 */ 139, 151, 130, 25, 142, 16, 24, 20, 144, 1, |
| 164137 | + /* 1970 */ 142, 130, 130, 61, 53, 53, 37, 151, 53, 53, |
| 164138 | + /* 1980 */ 130, 116, 34, 1, 141, 5, 22, 115, 161, 141, |
| 164139 | + /* 1990 */ 153, 154, 155, 156, 157, 25, 68, 68, 75, 41, |
| 164140 | + /* 2000 */ 115, 24, 131, 20, 19, 125, 22, 96, 22, 22, |
| 164141 | + /* 2010 */ 67, 23, 22, 67, 59, 24, 22, 28, 67, 23, |
| 164142 | + /* 2020 */ 22, 22, 149, 23, 23, 23, 116, 23, 25, 37, |
| 164143 | + /* 2030 */ 97, 141, 23, 23, 22, 143, 25, 75, 88, 34, |
| 164144 | + /* 2040 */ 34, 34, 34, 86, 75, 93, 23, 34, 22, 34, |
| 164145 | + /* 2050 */ 25, 24, 34, 25, 23, 142, 23, 142, 44, 23, |
| 164146 | + /* 2060 */ 23, 23, 11, 23, 25, 22, 22, 22, 15, 23, |
| 164147 | + /* 2070 */ 23, 22, 22, 25, 1, 1, 141, 25, 23, 135, |
| 164164 | 164148 | /* 2080 */ 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, |
| 164165 | | - /* 2090 */ 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, |
| 164149 | + /* 2090 */ 319, 319, 319, 319, 141, 141, 319, 141, 319, 319, |
| 164166 | 164150 | /* 2100 */ 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, |
| 164167 | 164151 | /* 2110 */ 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, |
| 164168 | 164152 | /* 2120 */ 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, |
| 164169 | 164153 | /* 2130 */ 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, |
| 164170 | 164154 | /* 2140 */ 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, |
| | @@ -164175,77 +164159,82 @@ |
| 164175 | 164159 | /* 2190 */ 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, |
| 164176 | 164160 | /* 2200 */ 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, |
| 164177 | 164161 | /* 2210 */ 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, |
| 164178 | 164162 | /* 2220 */ 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, |
| 164179 | 164163 | /* 2230 */ 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, |
| 164180 | | - /* 2240 */ 319, 319, 319, 319, 319, 319, 319, 319, 319, |
| 164164 | + /* 2240 */ 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, |
| 164165 | + /* 2250 */ 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, |
| 164166 | + /* 2260 */ 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, |
| 164167 | + /* 2270 */ 319, 319, 319, 319, 319, 319, 319, 319, 319, 319, |
| 164168 | + /* 2280 */ 319, 319, 319, |
| 164181 | 164169 | }; |
| 164182 | | -#define YY_SHIFT_COUNT (569) |
| 164170 | +#define YY_SHIFT_COUNT (575) |
| 164183 | 164171 | #define YY_SHIFT_MIN (0) |
| 164184 | | -#define YY_SHIFT_MAX (2051) |
| 164172 | +#define YY_SHIFT_MAX (2074) |
| 164185 | 164173 | static const unsigned short int yy_shift_ofst[] = { |
| 164186 | | - /* 0 */ 1648, 1477, 1272, 322, 322, 1, 1319, 1478, 1491, 1662, |
| 164187 | | - /* 10 */ 1662, 1662, 471, 0, 0, 214, 1093, 1662, 1662, 1662, |
| 164188 | | - /* 20 */ 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, |
| 164174 | + /* 0 */ 1648, 1477, 1272, 322, 322, 1, 1319, 1478, 1491, 1837, |
| 164175 | + /* 10 */ 1837, 1837, 471, 0, 0, 214, 1093, 1837, 1837, 1837, |
| 164176 | + /* 20 */ 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, |
| 164189 | 164177 | /* 30 */ 271, 271, 1219, 1219, 216, 88, 1, 1, 1, 1, |
| 164190 | 164178 | /* 40 */ 1, 40, 111, 258, 361, 469, 512, 583, 622, 693, |
| 164191 | 164179 | /* 50 */ 732, 803, 842, 913, 1073, 1093, 1093, 1093, 1093, 1093, |
| 164192 | 164180 | /* 60 */ 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, 1093, |
| 164193 | 164181 | /* 70 */ 1093, 1093, 1093, 1113, 1093, 1216, 957, 957, 1635, 1662, |
| 164194 | | - /* 80 */ 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, |
| 164195 | | - /* 90 */ 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, |
| 164196 | | - /* 100 */ 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, |
| 164197 | | - /* 110 */ 1662, 1662, 1662, 1662, 1777, 1662, 1662, 1662, 1662, 1662, |
| 164198 | | - /* 120 */ 1662, 1662, 1662, 1662, 1662, 1662, 1662, 1662, 137, 181, |
| 164199 | | - /* 130 */ 181, 181, 181, 181, 94, 430, 66, 65, 112, 366, |
| 164200 | | - /* 140 */ 533, 533, 740, 1261, 533, 533, 79, 79, 533, 412, |
| 164201 | | - /* 150 */ 412, 412, 77, 412, 123, 113, 113, 22, 22, 2064, |
| 164202 | | - /* 160 */ 2064, 328, 328, 328, 239, 468, 468, 468, 468, 1015, |
| 164203 | | - /* 170 */ 1015, 409, 366, 1129, 1186, 533, 533, 533, 533, 533, |
| 164182 | + /* 80 */ 1777, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, |
| 164183 | + /* 90 */ 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, |
| 164184 | + /* 100 */ 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, |
| 164185 | + /* 110 */ 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, |
| 164186 | + /* 120 */ 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, 1837, |
| 164187 | + /* 130 */ 137, 181, 181, 181, 181, 181, 181, 181, 94, 430, |
| 164188 | + /* 140 */ 66, 65, 112, 366, 533, 533, 740, 1261, 533, 533, |
| 164189 | + /* 150 */ 79, 79, 533, 412, 412, 412, 77, 412, 123, 113, |
| 164190 | + /* 160 */ 113, 22, 22, 2098, 2098, 328, 328, 328, 239, 468, |
| 164191 | + /* 170 */ 468, 468, 468, 1015, 1015, 409, 366, 1129, 1186, 533, |
| 164204 | 164192 | /* 180 */ 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, |
| 164205 | | - /* 190 */ 533, 533, 533, 533, 533, 969, 621, 621, 533, 642, |
| 164206 | | - /* 200 */ 788, 788, 1228, 1228, 822, 822, 67, 1274, 2064, 2064, |
| 164207 | | - /* 210 */ 2064, 2064, 2064, 2064, 2064, 1307, 954, 954, 585, 472, |
| 164208 | | - /* 220 */ 640, 387, 695, 538, 541, 700, 533, 533, 533, 533, |
| 164209 | | - /* 230 */ 533, 533, 533, 533, 533, 533, 222, 533, 533, 533, |
| 164210 | | - /* 240 */ 533, 533, 533, 533, 533, 533, 533, 533, 533, 1179, |
| 164211 | | - /* 250 */ 1179, 1179, 533, 533, 533, 565, 533, 533, 533, 916, |
| 164212 | | - /* 260 */ 1144, 533, 533, 1288, 533, 533, 533, 533, 533, 533, |
| 164213 | | - /* 270 */ 533, 533, 639, 1330, 209, 1076, 1076, 1076, 1076, 580, |
| 164214 | | - /* 280 */ 209, 209, 1313, 768, 917, 649, 1181, 1316, 405, 1316, |
| 164215 | | - /* 290 */ 1238, 249, 1181, 1181, 249, 1181, 405, 1238, 1369, 464, |
| 164216 | | - /* 300 */ 1259, 1012, 1012, 1012, 1368, 1368, 1368, 1368, 184, 184, |
| 164217 | | - /* 310 */ 1326, 904, 1287, 1480, 1703, 1703, 1625, 1625, 1729, 1729, |
| 164218 | | - /* 320 */ 1625, 1626, 1632, 1772, 1752, 1783, 1783, 1783, 1783, 1625, |
| 164219 | | - /* 330 */ 1788, 1659, 1632, 1632, 1659, 1772, 1752, 1659, 1752, 1659, |
| 164220 | | - /* 340 */ 1625, 1788, 1673, 1771, 1625, 1788, 1816, 1625, 1788, 1625, |
| 164221 | | - /* 350 */ 1788, 1816, 1731, 1731, 1731, 1780, 1827, 1827, 1816, 1731, |
| 164222 | | - /* 360 */ 1724, 1731, 1780, 1731, 1731, 1688, 1833, 1745, 1745, 1816, |
| 164223 | | - /* 370 */ 1625, 1776, 1776, 1792, 1792, 1732, 1734, 1859, 1625, 1728, |
| 164224 | | - /* 380 */ 1732, 1740, 1743, 1659, 1865, 1883, 1883, 1891, 1891, 1891, |
| 164225 | | - /* 390 */ 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, 2064, |
| 164226 | | - /* 400 */ 2064, 2064, 2064, 2064, 2064, 207, 1095, 331, 620, 903, |
| 164227 | | - /* 410 */ 806, 1074, 1483, 1432, 1481, 1322, 1370, 1394, 1515, 1291, |
| 164228 | | - /* 420 */ 1546, 1547, 1557, 1595, 1598, 1599, 1434, 1453, 1618, 1462, |
| 164229 | | - /* 430 */ 1567, 1489, 1644, 1645, 1589, 1654, 1530, 1538, 1672, 1676, |
| 164230 | | - /* 440 */ 1579, 742, 1914, 1920, 1902, 1762, 1911, 1919, 1913, 1915, |
| 164231 | | - /* 450 */ 1798, 1789, 1809, 1916, 1916, 1918, 1801, 1924, 1802, 1929, |
| 164232 | | - /* 460 */ 1946, 1806, 1819, 1916, 1820, 1890, 1917, 1916, 1804, 1899, |
| 164233 | | - /* 470 */ 1900, 1903, 1904, 1828, 1843, 1926, 1821, 1960, 1958, 1942, |
| 164234 | | - /* 480 */ 1850, 1805, 1901, 1943, 1905, 1892, 1930, 1829, 1857, 1950, |
| 164235 | | - /* 490 */ 1955, 1957, 1846, 1853, 1959, 1912, 1961, 1962, 1963, 1965, |
| 164236 | | - /* 500 */ 1921, 1923, 1956, 1889, 1964, 1967, 1927, 1953, 1968, 1844, |
| 164237 | | - /* 510 */ 1973, 1974, 1975, 1976, 1971, 1977, 1979, 1906, 1861, 1981, |
| 164238 | | - /* 520 */ 1982, 1893, 1972, 1985, 1867, 1983, 1978, 1980, 1984, 1986, |
| 164239 | | - /* 530 */ 1925, 1936, 1931, 1987, 1940, 1928, 1988, 1993, 1997, 1999, |
| 164240 | | - /* 540 */ 2000, 2001, 1990, 2004, 1983, 2005, 2006, 2007, 2009, 2008, |
| 164241 | | - /* 550 */ 2011, 2013, 2025, 2015, 2016, 2017, 2018, 2020, 2021, 2014, |
| 164242 | | - /* 560 */ 1909, 1907, 1908, 1910, 1922, 2022, 2023, 2030, 2049, 2051, |
| 164193 | + /* 190 */ 533, 533, 533, 533, 533, 533, 533, 533, 533, 969, |
| 164194 | + /* 200 */ 621, 621, 533, 642, 788, 788, 1228, 1228, 822, 822, |
| 164195 | + /* 210 */ 67, 1274, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 1307, |
| 164196 | + /* 220 */ 954, 954, 585, 472, 640, 387, 695, 538, 541, 700, |
| 164197 | + /* 230 */ 533, 533, 533, 533, 533, 533, 533, 533, 533, 533, |
| 164198 | + /* 240 */ 222, 533, 533, 533, 533, 533, 533, 533, 533, 533, |
| 164199 | + /* 250 */ 533, 533, 533, 1179, 1179, 1179, 533, 533, 533, 565, |
| 164200 | + /* 260 */ 533, 533, 533, 916, 1144, 533, 533, 1288, 533, 533, |
| 164201 | + /* 270 */ 533, 533, 533, 533, 533, 533, 639, 1330, 209, 1076, |
| 164202 | + /* 280 */ 1076, 1076, 1076, 580, 209, 209, 1313, 768, 917, 649, |
| 164203 | + /* 290 */ 1181, 1316, 405, 1316, 1238, 249, 1181, 1181, 249, 1181, |
| 164204 | + /* 300 */ 405, 1238, 1369, 464, 1259, 1012, 1012, 1012, 1368, 1368, |
| 164205 | + /* 310 */ 1368, 1368, 184, 184, 1326, 904, 1287, 1480, 1712, 1712, |
| 164206 | + /* 320 */ 1633, 1633, 1757, 1757, 1633, 1647, 1651, 1783, 1764, 1791, |
| 164207 | + /* 330 */ 1791, 1791, 1791, 1633, 1806, 1677, 1651, 1651, 1677, 1783, |
| 164208 | + /* 340 */ 1764, 1677, 1764, 1677, 1633, 1806, 1674, 1779, 1633, 1806, |
| 164209 | + /* 350 */ 1823, 1633, 1806, 1633, 1806, 1823, 1732, 1732, 1732, 1794, |
| 164210 | + /* 360 */ 1840, 1840, 1823, 1732, 1738, 1732, 1794, 1732, 1732, 1701, |
| 164211 | + /* 370 */ 1844, 1758, 1758, 1823, 1633, 1789, 1789, 1807, 1807, 1742, |
| 164212 | + /* 380 */ 1752, 1877, 1633, 1743, 1742, 1759, 1765, 1677, 1879, 1897, |
| 164213 | + /* 390 */ 1897, 1914, 1914, 1914, 2098, 2098, 2098, 2098, 2098, 2098, |
| 164214 | + /* 400 */ 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 2098, 207, |
| 164215 | + /* 410 */ 1095, 331, 620, 903, 806, 1074, 1483, 1432, 1481, 1322, |
| 164216 | + /* 420 */ 1370, 1394, 1515, 1291, 1546, 1547, 1557, 1595, 1598, 1599, |
| 164217 | + /* 430 */ 1434, 1453, 1618, 1462, 1567, 1489, 1644, 1654, 1616, 1660, |
| 164218 | + /* 440 */ 1548, 1549, 1682, 1685, 1597, 742, 1941, 1945, 1927, 1787, |
| 164219 | + /* 450 */ 1937, 1940, 1934, 1936, 1821, 1810, 1832, 1938, 1938, 1942, |
| 164220 | + /* 460 */ 1822, 1947, 1824, 1949, 1968, 1828, 1841, 1938, 1842, 1912, |
| 164221 | + /* 470 */ 1939, 1938, 1826, 1921, 1922, 1925, 1926, 1850, 1865, 1948, |
| 164222 | + /* 480 */ 1843, 1982, 1980, 1964, 1872, 1827, 1928, 1970, 1929, 1923, |
| 164223 | + /* 490 */ 1958, 1848, 1885, 1977, 1983, 1985, 1871, 1880, 1984, 1943, |
| 164224 | + /* 500 */ 1986, 1987, 1988, 1990, 1946, 1955, 1991, 1911, 1989, 1994, |
| 164225 | + /* 510 */ 1951, 1992, 1996, 1873, 1998, 2000, 2001, 2002, 2003, 2004, |
| 164226 | + /* 520 */ 1999, 1933, 1890, 2009, 2010, 1910, 2005, 2012, 1892, 2011, |
| 164227 | + /* 530 */ 2006, 2007, 2008, 2013, 1950, 1962, 1957, 2014, 1969, 1952, |
| 164228 | + /* 540 */ 2015, 2023, 2026, 2027, 2025, 2028, 2018, 1913, 1915, 2031, |
| 164229 | + /* 550 */ 2011, 2033, 2036, 2037, 2038, 2039, 2040, 2043, 2051, 2044, |
| 164230 | + /* 560 */ 2045, 2046, 2047, 2049, 2050, 2048, 1944, 1935, 1953, 1954, |
| 164231 | + /* 570 */ 1956, 2052, 2055, 2053, 2073, 2074, |
| 164243 | 164232 | }; |
| 164244 | | -#define YY_REDUCE_COUNT (404) |
| 164233 | +#define YY_REDUCE_COUNT (408) |
| 164245 | 164234 | #define YY_REDUCE_MIN (-271) |
| 164246 | | -#define YY_REDUCE_MAX (1716) |
| 164235 | +#define YY_REDUCE_MAX (1740) |
| 164247 | 164236 | static const short yy_reduce_ofst[] = { |
| 164248 | 164237 | /* 0 */ -125, 733, 789, 241, 293, -123, -193, -191, -183, -187, |
| 164249 | 164238 | /* 10 */ 166, 238, 133, -207, -199, -267, -176, -6, 204, 489, |
| 164250 | 164239 | /* 20 */ 576, -175, 598, 686, 615, 725, 860, 778, 781, 857, |
| 164251 | 164240 | /* 30 */ 616, 887, 87, 240, -192, 408, 626, 796, 843, 854, |
| | @@ -164255,98 +164244,99 @@ |
| 164255 | 164244 | /* 70 */ -271, -271, -271, -271, -271, -271, -271, -271, 80, 83, |
| 164256 | 164245 | /* 80 */ 313, 886, 888, 996, 1034, 1059, 1081, 1100, 1117, 1152, |
| 164257 | 164246 | /* 90 */ 1155, 1163, 1165, 1167, 1169, 1172, 1180, 1182, 1184, 1198, |
| 164258 | 164247 | /* 100 */ 1200, 1213, 1215, 1225, 1227, 1252, 1254, 1264, 1299, 1303, |
| 164259 | 164248 | /* 110 */ 1308, 1312, 1325, 1328, 1337, 1340, 1343, 1371, 1373, 1384, |
| 164260 | | - /* 120 */ 1386, 1411, 1420, 1424, 1426, 1458, 1470, 1473, -271, -271, |
| 164261 | | - /* 130 */ -271, -271, -271, -271, -271, -271, -271, 138, 459, 396, |
| 164262 | | - /* 140 */ -158, 470, 302, -212, 521, 201, -195, -92, 559, 630, |
| 164263 | | - /* 150 */ 632, 630, -271, 632, 901, 63, 407, -271, -271, -271, |
| 164264 | | - /* 160 */ -271, 161, 161, 161, 251, 335, 847, 960, 980, 537, |
| 164265 | | - /* 170 */ 588, 618, 628, 688, 688, -166, -161, 674, 790, 794, |
| 164266 | | - /* 180 */ 799, 851, 852, -122, 680, -120, 995, 1038, 415, 1051, |
| 164267 | | - /* 190 */ 893, 798, 962, 400, 1086, 779, 923, 924, 263, 1041, |
| 164268 | | - /* 200 */ 979, 990, 1083, 1097, 1031, 1194, 362, 994, 1139, 1005, |
| 164269 | | - /* 210 */ 1037, 1202, 1205, 1195, 1210, -194, 56, 185, -135, 232, |
| 164270 | | - /* 220 */ 522, 560, 601, 617, 669, 683, 711, 856, 908, 941, |
| 164271 | | - /* 230 */ 1048, 1101, 1147, 1257, 1262, 1265, 392, 1292, 1333, 1339, |
| 164272 | | - /* 240 */ 1342, 1346, 1350, 1359, 1374, 1418, 1421, 1436, 1437, 593, |
| 164273 | | - /* 250 */ 755, 770, 997, 1459, 1463, 1209, 1499, 1507, 1509, 1132, |
| 164274 | | - /* 260 */ 1243, 1510, 1511, 1440, 1512, 560, 1514, 1516, 1517, 1518, |
| 164275 | | - /* 270 */ 1519, 1520, 1427, 1429, 1466, 1464, 1465, 1467, 1468, 1209, |
| 164276 | | - /* 280 */ 1466, 1466, 1471, 1503, 1533, 1428, 1456, 1461, 1485, 1469, |
| 164277 | | - /* 290 */ 1438, 1486, 1474, 1476, 1488, 1479, 1492, 1445, 1524, 1525, |
| 164278 | | - /* 300 */ 1523, 1521, 1536, 1539, 1498, 1500, 1501, 1502, 1490, 1522, |
| 164279 | | - /* 310 */ 1484, 1527, 1531, 1569, 1487, 1496, 1570, 1573, 1504, 1506, |
| 164280 | | - /* 320 */ 1575, 1526, 1513, 1532, 1571, 1566, 1574, 1577, 1583, 1604, |
| 164281 | | - /* 330 */ 1608, 1576, 1540, 1549, 1578, 1553, 1591, 1580, 1593, 1582, |
| 164282 | | - /* 340 */ 1629, 1631, 1542, 1545, 1637, 1636, 1619, 1639, 1642, 1643, |
| 164283 | | - /* 350 */ 1646, 1621, 1633, 1634, 1638, 1620, 1630, 1640, 1641, 1647, |
| 164284 | | - /* 360 */ 1649, 1650, 1628, 1652, 1653, 1548, 1554, 1581, 1584, 1651, |
| 164285 | | - /* 370 */ 1661, 1556, 1558, 1611, 1613, 1655, 1657, 1605, 1685, 1609, |
| 164286 | | - /* 380 */ 1658, 1656, 1660, 1663, 1690, 1705, 1706, 1709, 1710, 1711, |
| 164287 | | - /* 390 */ 1607, 1610, 1612, 1704, 1701, 1702, 1707, 1708, 1712, 1694, |
| 164288 | | - /* 400 */ 1695, 1713, 1714, 1716, 1715, |
| 164249 | + /* 120 */ 1386, 1411, 1420, 1424, 1426, 1458, 1470, 1473, 1475, 1479, |
| 164250 | + /* 130 */ -271, -271, -271, -271, -271, -271, -271, -271, -271, -271, |
| 164251 | + /* 140 */ -271, 138, 459, 396, -158, 470, 302, -212, 521, 201, |
| 164252 | + /* 150 */ -195, -92, 559, 630, 632, 630, -271, 632, 901, 63, |
| 164253 | + /* 160 */ 407, -271, -271, -271, -271, 161, 161, 161, 251, 335, |
| 164254 | + /* 170 */ 847, 960, 980, 537, 588, 618, 628, 688, 688, -166, |
| 164255 | + /* 180 */ -161, 674, 790, 794, 799, 851, 852, -122, 680, -120, |
| 164256 | + /* 190 */ 995, 1038, 415, 1051, 893, 798, 962, 400, 1086, 779, |
| 164257 | + /* 200 */ 923, 924, 263, 1041, 979, 990, 1083, 1097, 1031, 1194, |
| 164258 | + /* 210 */ 362, 994, 1139, 1005, 1037, 1202, 1205, 1195, 1210, -194, |
| 164259 | + /* 220 */ 56, 185, -135, 232, 522, 560, 601, 617, 669, 683, |
| 164260 | + /* 230 */ 711, 856, 908, 941, 1048, 1101, 1147, 1257, 1262, 1265, |
| 164261 | + /* 240 */ 392, 1292, 1333, 1339, 1342, 1346, 1350, 1359, 1374, 1418, |
| 164262 | + /* 250 */ 1421, 1436, 1437, 593, 755, 770, 997, 1445, 1459, 1209, |
| 164263 | + /* 260 */ 1500, 1504, 1516, 1132, 1243, 1518, 1519, 1440, 1520, 560, |
| 164264 | + /* 270 */ 1522, 1523, 1524, 1526, 1527, 1529, 1382, 1438, 1431, 1468, |
| 164265 | + /* 280 */ 1469, 1472, 1476, 1209, 1431, 1431, 1485, 1525, 1539, 1435, |
| 164266 | + /* 290 */ 1463, 1471, 1492, 1487, 1443, 1494, 1474, 1484, 1498, 1486, |
| 164267 | + /* 300 */ 1502, 1455, 1530, 1531, 1533, 1540, 1542, 1544, 1505, 1506, |
| 164268 | + /* 310 */ 1507, 1508, 1521, 1528, 1493, 1537, 1532, 1575, 1488, 1496, |
| 164269 | + /* 320 */ 1584, 1594, 1509, 1510, 1600, 1538, 1534, 1541, 1574, 1577, |
| 164270 | + /* 330 */ 1583, 1585, 1586, 1612, 1626, 1581, 1556, 1558, 1587, 1559, |
| 164271 | + /* 340 */ 1601, 1588, 1603, 1592, 1631, 1640, 1550, 1553, 1643, 1645, |
| 164272 | + /* 350 */ 1625, 1649, 1652, 1650, 1653, 1632, 1636, 1637, 1642, 1634, |
| 164273 | + /* 360 */ 1639, 1641, 1646, 1656, 1655, 1658, 1659, 1661, 1663, 1560, |
| 164274 | + /* 370 */ 1564, 1596, 1605, 1664, 1670, 1565, 1571, 1627, 1638, 1657, |
| 164275 | + /* 380 */ 1665, 1623, 1702, 1630, 1666, 1667, 1671, 1673, 1703, 1718, |
| 164276 | + /* 390 */ 1719, 1729, 1730, 1731, 1621, 1622, 1628, 1720, 1713, 1716, |
| 164277 | + /* 400 */ 1722, 1723, 1733, 1717, 1724, 1727, 1728, 1725, 1740, |
| 164289 | 164278 | }; |
| 164290 | 164279 | static const YYACTIONTYPE yy_default[] = { |
| 164291 | | - /* 0 */ 1637, 1637, 1637, 1465, 1232, 1343, 1232, 1232, 1232, 1465, |
| 164292 | | - /* 10 */ 1465, 1465, 1232, 1373, 1373, 1518, 1265, 1232, 1232, 1232, |
| 164293 | | - /* 20 */ 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1464, 1232, 1232, |
| 164294 | | - /* 30 */ 1232, 1232, 1553, 1553, 1232, 1232, 1232, 1232, 1232, 1232, |
| 164295 | | - /* 40 */ 1232, 1232, 1382, 1232, 1389, 1232, 1232, 1232, 1232, 1232, |
| 164296 | | - /* 50 */ 1466, 1467, 1232, 1232, 1232, 1517, 1519, 1482, 1396, 1395, |
| 164297 | | - /* 60 */ 1394, 1393, 1500, 1361, 1387, 1380, 1384, 1460, 1461, 1459, |
| 164298 | | - /* 70 */ 1463, 1467, 1466, 1232, 1383, 1430, 1444, 1429, 1232, 1232, |
| 164299 | | - /* 80 */ 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, |
| 164300 | | - /* 90 */ 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, |
| 164301 | | - /* 100 */ 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, |
| 164302 | | - /* 110 */ 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, |
| 164303 | | - /* 120 */ 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1438, 1443, |
| 164304 | | - /* 130 */ 1450, 1442, 1439, 1432, 1431, 1433, 1434, 1232, 1232, 1256, |
| 164305 | | - /* 140 */ 1232, 1232, 1253, 1307, 1232, 1232, 1232, 1232, 1232, 1537, |
| 164306 | | - /* 150 */ 1536, 1232, 1435, 1232, 1265, 1424, 1423, 1447, 1436, 1446, |
| 164307 | | - /* 160 */ 1445, 1525, 1589, 1588, 1483, 1232, 1232, 1232, 1232, 1232, |
| 164308 | | - /* 170 */ 1232, 1553, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, |
| 164309 | | - /* 180 */ 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, |
| 164310 | | - /* 190 */ 1232, 1232, 1232, 1232, 1232, 1363, 1553, 1553, 1232, 1265, |
| 164311 | | - /* 200 */ 1553, 1553, 1364, 1364, 1261, 1261, 1367, 1232, 1532, 1334, |
| 164312 | | - /* 210 */ 1334, 1334, 1334, 1343, 1334, 1232, 1232, 1232, 1232, 1232, |
| 164313 | | - /* 220 */ 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, |
| 164314 | | - /* 230 */ 1522, 1520, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, |
| 164315 | | - /* 240 */ 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, |
| 164316 | | - /* 250 */ 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1339, |
| 164317 | | - /* 260 */ 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, |
| 164318 | | - /* 270 */ 1232, 1582, 1232, 1495, 1321, 1339, 1339, 1339, 1339, 1341, |
| 164319 | | - /* 280 */ 1322, 1320, 1333, 1266, 1239, 1629, 1399, 1388, 1340, 1388, |
| 164320 | | - /* 290 */ 1626, 1386, 1399, 1399, 1386, 1399, 1340, 1626, 1282, 1605, |
| 164321 | | - /* 300 */ 1277, 1373, 1373, 1373, 1363, 1363, 1363, 1363, 1367, 1367, |
| 164322 | | - /* 310 */ 1462, 1340, 1333, 1232, 1629, 1629, 1349, 1349, 1628, 1628, |
| 164323 | | - /* 320 */ 1349, 1483, 1613, 1408, 1310, 1316, 1316, 1316, 1316, 1349, |
| 164324 | | - /* 330 */ 1250, 1386, 1613, 1613, 1386, 1408, 1310, 1386, 1310, 1386, |
| 164325 | | - /* 340 */ 1349, 1250, 1499, 1623, 1349, 1250, 1473, 1349, 1250, 1349, |
| 164326 | | - /* 350 */ 1250, 1473, 1308, 1308, 1308, 1297, 1232, 1232, 1473, 1308, |
| 164327 | | - /* 360 */ 1282, 1308, 1297, 1308, 1308, 1571, 1232, 1477, 1477, 1473, |
| 164328 | | - /* 370 */ 1349, 1563, 1563, 1376, 1376, 1381, 1367, 1468, 1349, 1232, |
| 164329 | | - /* 380 */ 1381, 1379, 1377, 1386, 1300, 1585, 1585, 1581, 1581, 1581, |
| 164330 | | - /* 390 */ 1634, 1634, 1532, 1598, 1265, 1265, 1265, 1265, 1598, 1284, |
| 164331 | | - /* 400 */ 1284, 1266, 1266, 1265, 1598, 1232, 1232, 1232, 1232, 1232, |
| 164332 | | - /* 410 */ 1232, 1593, 1232, 1527, 1484, 1353, 1232, 1232, 1232, 1232, |
| 164333 | | - /* 420 */ 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, |
| 164334 | | - /* 430 */ 1538, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, |
| 164335 | | - /* 440 */ 1232, 1413, 1232, 1235, 1529, 1232, 1232, 1232, 1232, 1232, |
| 164336 | | - /* 450 */ 1232, 1232, 1232, 1390, 1391, 1354, 1232, 1232, 1232, 1232, |
| 164337 | | - /* 460 */ 1232, 1232, 1232, 1405, 1232, 1232, 1232, 1400, 1232, 1232, |
| 164338 | | - /* 470 */ 1232, 1232, 1232, 1232, 1232, 1232, 1625, 1232, 1232, 1232, |
| 164339 | | - /* 480 */ 1232, 1232, 1232, 1498, 1497, 1232, 1232, 1351, 1232, 1232, |
| 164340 | | - /* 490 */ 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, |
| 164341 | | - /* 500 */ 1232, 1280, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, |
| 164342 | | - /* 510 */ 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, |
| 164343 | | - /* 520 */ 1232, 1232, 1232, 1232, 1232, 1378, 1232, 1232, 1232, 1232, |
| 164344 | | - /* 530 */ 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, |
| 164345 | | - /* 540 */ 1568, 1368, 1232, 1232, 1616, 1232, 1232, 1232, 1232, 1232, |
| 164346 | | - /* 550 */ 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1232, 1609, |
| 164347 | | - /* 560 */ 1324, 1415, 1232, 1414, 1418, 1254, 1232, 1244, 1232, 1232, |
| 164280 | + /* 0 */ 1647, 1647, 1647, 1475, 1240, 1351, 1240, 1240, 1240, 1475, |
| 164281 | + /* 10 */ 1475, 1475, 1240, 1381, 1381, 1528, 1273, 1240, 1240, 1240, |
| 164282 | + /* 20 */ 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1474, 1240, 1240, |
| 164283 | + /* 30 */ 1240, 1240, 1563, 1563, 1240, 1240, 1240, 1240, 1240, 1240, |
| 164284 | + /* 40 */ 1240, 1240, 1390, 1240, 1397, 1240, 1240, 1240, 1240, 1240, |
| 164285 | + /* 50 */ 1476, 1477, 1240, 1240, 1240, 1527, 1529, 1492, 1404, 1403, |
| 164286 | + /* 60 */ 1402, 1401, 1510, 1369, 1395, 1388, 1392, 1470, 1471, 1469, |
| 164287 | + /* 70 */ 1473, 1477, 1476, 1240, 1391, 1438, 1454, 1437, 1240, 1240, |
| 164288 | + /* 80 */ 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, |
| 164289 | + /* 90 */ 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, |
| 164290 | + /* 100 */ 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, |
| 164291 | + /* 110 */ 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, |
| 164292 | + /* 120 */ 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, |
| 164293 | + /* 130 */ 1446, 1453, 1452, 1451, 1460, 1450, 1447, 1440, 1439, 1441, |
| 164294 | + /* 140 */ 1442, 1240, 1240, 1264, 1240, 1240, 1261, 1315, 1240, 1240, |
| 164295 | + /* 150 */ 1240, 1240, 1240, 1547, 1546, 1240, 1443, 1240, 1273, 1432, |
| 164296 | + /* 160 */ 1431, 1457, 1444, 1456, 1455, 1535, 1599, 1598, 1493, 1240, |
| 164297 | + /* 170 */ 1240, 1240, 1240, 1240, 1240, 1563, 1240, 1240, 1240, 1240, |
| 164298 | + /* 180 */ 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, |
| 164299 | + /* 190 */ 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1371, |
| 164300 | + /* 200 */ 1563, 1563, 1240, 1273, 1563, 1563, 1372, 1372, 1269, 1269, |
| 164301 | + /* 210 */ 1375, 1240, 1542, 1342, 1342, 1342, 1342, 1351, 1342, 1240, |
| 164302 | + /* 220 */ 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, |
| 164303 | + /* 230 */ 1240, 1240, 1240, 1240, 1532, 1530, 1240, 1240, 1240, 1240, |
| 164304 | + /* 240 */ 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, |
| 164305 | + /* 250 */ 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, |
| 164306 | + /* 260 */ 1240, 1240, 1240, 1347, 1240, 1240, 1240, 1240, 1240, 1240, |
| 164307 | + /* 270 */ 1240, 1240, 1240, 1240, 1240, 1592, 1240, 1505, 1329, 1347, |
| 164308 | + /* 280 */ 1347, 1347, 1347, 1349, 1330, 1328, 1341, 1274, 1247, 1639, |
| 164309 | + /* 290 */ 1407, 1396, 1348, 1396, 1636, 1394, 1407, 1407, 1394, 1407, |
| 164310 | + /* 300 */ 1348, 1636, 1290, 1615, 1285, 1381, 1381, 1381, 1371, 1371, |
| 164311 | + /* 310 */ 1371, 1371, 1375, 1375, 1472, 1348, 1341, 1240, 1639, 1639, |
| 164312 | + /* 320 */ 1357, 1357, 1638, 1638, 1357, 1493, 1623, 1416, 1318, 1324, |
| 164313 | + /* 330 */ 1324, 1324, 1324, 1357, 1258, 1394, 1623, 1623, 1394, 1416, |
| 164314 | + /* 340 */ 1318, 1394, 1318, 1394, 1357, 1258, 1509, 1633, 1357, 1258, |
| 164315 | + /* 350 */ 1483, 1357, 1258, 1357, 1258, 1483, 1316, 1316, 1316, 1305, |
| 164316 | + /* 360 */ 1240, 1240, 1483, 1316, 1290, 1316, 1305, 1316, 1316, 1581, |
| 164317 | + /* 370 */ 1240, 1487, 1487, 1483, 1357, 1573, 1573, 1384, 1384, 1389, |
| 164318 | + /* 380 */ 1375, 1478, 1357, 1240, 1389, 1387, 1385, 1394, 1308, 1595, |
| 164319 | + /* 390 */ 1595, 1591, 1591, 1591, 1644, 1644, 1542, 1608, 1273, 1273, |
| 164320 | + /* 400 */ 1273, 1273, 1608, 1292, 1292, 1274, 1274, 1273, 1608, 1240, |
| 164321 | + /* 410 */ 1240, 1240, 1240, 1240, 1240, 1603, 1240, 1537, 1494, 1361, |
| 164322 | + /* 420 */ 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, |
| 164323 | + /* 430 */ 1240, 1240, 1240, 1240, 1548, 1240, 1240, 1240, 1240, 1240, |
| 164324 | + /* 440 */ 1240, 1240, 1240, 1240, 1240, 1421, 1240, 1243, 1539, 1240, |
| 164325 | + /* 450 */ 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1398, 1399, 1362, |
| 164326 | + /* 460 */ 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1413, 1240, 1240, |
| 164327 | + /* 470 */ 1240, 1408, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, |
| 164328 | + /* 480 */ 1635, 1240, 1240, 1240, 1240, 1240, 1240, 1508, 1507, 1240, |
| 164329 | + /* 490 */ 1240, 1359, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, |
| 164330 | + /* 500 */ 1240, 1240, 1240, 1240, 1240, 1288, 1240, 1240, 1240, 1240, |
| 164331 | + /* 510 */ 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, |
| 164332 | + /* 520 */ 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1386, |
| 164333 | + /* 530 */ 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, |
| 164334 | + /* 540 */ 1240, 1240, 1240, 1240, 1578, 1376, 1240, 1240, 1240, 1240, |
| 164335 | + /* 550 */ 1626, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, 1240, |
| 164336 | + /* 560 */ 1240, 1240, 1240, 1240, 1240, 1619, 1332, 1423, 1240, 1422, |
| 164337 | + /* 570 */ 1426, 1262, 1240, 1252, 1240, 1240, |
| 164348 | 164338 | }; |
| 164349 | 164339 | /********** End of lemon-generated parsing tables *****************************/ |
| 164350 | 164340 | |
| 164351 | 164341 | /* The next table maps tokens (terminal symbols) into fallback tokens. |
| 164352 | 164342 | ** If a construct like the following: |
| | @@ -165170,204 +165160,206 @@ |
| 165170 | 165160 | /* 204 */ "expr ::= expr likeop expr ESCAPE expr", |
| 165171 | 165161 | /* 205 */ "expr ::= expr ISNULL|NOTNULL", |
| 165172 | 165162 | /* 206 */ "expr ::= expr NOT NULL", |
| 165173 | 165163 | /* 207 */ "expr ::= expr IS expr", |
| 165174 | 165164 | /* 208 */ "expr ::= expr IS NOT expr", |
| 165175 | | - /* 209 */ "expr ::= NOT expr", |
| 165176 | | - /* 210 */ "expr ::= BITNOT expr", |
| 165177 | | - /* 211 */ "expr ::= PLUS|MINUS expr", |
| 165178 | | - /* 212 */ "expr ::= expr PTR expr", |
| 165179 | | - /* 213 */ "between_op ::= BETWEEN", |
| 165180 | | - /* 214 */ "between_op ::= NOT BETWEEN", |
| 165181 | | - /* 215 */ "expr ::= expr between_op expr AND expr", |
| 165182 | | - /* 216 */ "in_op ::= IN", |
| 165183 | | - /* 217 */ "in_op ::= NOT IN", |
| 165184 | | - /* 218 */ "expr ::= expr in_op LP exprlist RP", |
| 165185 | | - /* 219 */ "expr ::= LP select RP", |
| 165186 | | - /* 220 */ "expr ::= expr in_op LP select RP", |
| 165187 | | - /* 221 */ "expr ::= expr in_op nm dbnm paren_exprlist", |
| 165188 | | - /* 222 */ "expr ::= EXISTS LP select RP", |
| 165189 | | - /* 223 */ "expr ::= CASE case_operand case_exprlist case_else END", |
| 165190 | | - /* 224 */ "case_exprlist ::= case_exprlist WHEN expr THEN expr", |
| 165191 | | - /* 225 */ "case_exprlist ::= WHEN expr THEN expr", |
| 165192 | | - /* 226 */ "case_else ::= ELSE expr", |
| 165193 | | - /* 227 */ "case_else ::=", |
| 165194 | | - /* 228 */ "case_operand ::= expr", |
| 165195 | | - /* 229 */ "case_operand ::=", |
| 165196 | | - /* 230 */ "exprlist ::=", |
| 165197 | | - /* 231 */ "nexprlist ::= nexprlist COMMA expr", |
| 165198 | | - /* 232 */ "nexprlist ::= expr", |
| 165199 | | - /* 233 */ "paren_exprlist ::=", |
| 165200 | | - /* 234 */ "paren_exprlist ::= LP exprlist RP", |
| 165201 | | - /* 235 */ "cmd ::= createkw uniqueflag INDEX ifnotexists nm dbnm ON nm LP sortlist RP where_opt", |
| 165202 | | - /* 236 */ "uniqueflag ::= UNIQUE", |
| 165203 | | - /* 237 */ "uniqueflag ::=", |
| 165204 | | - /* 238 */ "eidlist_opt ::=", |
| 165205 | | - /* 239 */ "eidlist_opt ::= LP eidlist RP", |
| 165206 | | - /* 240 */ "eidlist ::= eidlist COMMA nm collate sortorder", |
| 165207 | | - /* 241 */ "eidlist ::= nm collate sortorder", |
| 165208 | | - /* 242 */ "collate ::=", |
| 165209 | | - /* 243 */ "collate ::= COLLATE ID|STRING", |
| 165210 | | - /* 244 */ "cmd ::= DROP INDEX ifexists fullname", |
| 165211 | | - /* 245 */ "cmd ::= VACUUM vinto", |
| 165212 | | - /* 246 */ "cmd ::= VACUUM nm vinto", |
| 165213 | | - /* 247 */ "vinto ::= INTO expr", |
| 165214 | | - /* 248 */ "vinto ::=", |
| 165215 | | - /* 249 */ "cmd ::= PRAGMA nm dbnm", |
| 165216 | | - /* 250 */ "cmd ::= PRAGMA nm dbnm EQ nmnum", |
| 165217 | | - /* 251 */ "cmd ::= PRAGMA nm dbnm LP nmnum RP", |
| 165218 | | - /* 252 */ "cmd ::= PRAGMA nm dbnm EQ minus_num", |
| 165219 | | - /* 253 */ "cmd ::= PRAGMA nm dbnm LP minus_num RP", |
| 165220 | | - /* 254 */ "plus_num ::= PLUS INTEGER|FLOAT", |
| 165221 | | - /* 255 */ "minus_num ::= MINUS INTEGER|FLOAT", |
| 165222 | | - /* 256 */ "cmd ::= createkw trigger_decl BEGIN trigger_cmd_list END", |
| 165223 | | - /* 257 */ "trigger_decl ::= temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON fullname foreach_clause when_clause", |
| 165224 | | - /* 258 */ "trigger_time ::= BEFORE|AFTER", |
| 165225 | | - /* 259 */ "trigger_time ::= INSTEAD OF", |
| 165226 | | - /* 260 */ "trigger_time ::=", |
| 165227 | | - /* 261 */ "trigger_event ::= DELETE|INSERT", |
| 165228 | | - /* 262 */ "trigger_event ::= UPDATE", |
| 165229 | | - /* 263 */ "trigger_event ::= UPDATE OF idlist", |
| 165230 | | - /* 264 */ "when_clause ::=", |
| 165231 | | - /* 265 */ "when_clause ::= WHEN expr", |
| 165232 | | - /* 266 */ "trigger_cmd_list ::= trigger_cmd_list trigger_cmd SEMI", |
| 165233 | | - /* 267 */ "trigger_cmd_list ::= trigger_cmd SEMI", |
| 165234 | | - /* 268 */ "trnm ::= nm DOT nm", |
| 165235 | | - /* 269 */ "tridxby ::= INDEXED BY nm", |
| 165236 | | - /* 270 */ "tridxby ::= NOT INDEXED", |
| 165237 | | - /* 271 */ "trigger_cmd ::= UPDATE orconf trnm tridxby SET setlist from where_opt scanpt", |
| 165238 | | - /* 272 */ "trigger_cmd ::= scanpt insert_cmd INTO trnm idlist_opt select upsert scanpt", |
| 165239 | | - /* 273 */ "trigger_cmd ::= DELETE FROM trnm tridxby where_opt scanpt", |
| 165240 | | - /* 274 */ "trigger_cmd ::= scanpt select scanpt", |
| 165241 | | - /* 275 */ "expr ::= RAISE LP IGNORE RP", |
| 165242 | | - /* 276 */ "expr ::= RAISE LP raisetype COMMA nm RP", |
| 165243 | | - /* 277 */ "raisetype ::= ROLLBACK", |
| 165244 | | - /* 278 */ "raisetype ::= ABORT", |
| 165245 | | - /* 279 */ "raisetype ::= FAIL", |
| 165246 | | - /* 280 */ "cmd ::= DROP TRIGGER ifexists fullname", |
| 165247 | | - /* 281 */ "cmd ::= ATTACH database_kw_opt expr AS expr key_opt", |
| 165248 | | - /* 282 */ "cmd ::= DETACH database_kw_opt expr", |
| 165249 | | - /* 283 */ "key_opt ::=", |
| 165250 | | - /* 284 */ "key_opt ::= KEY expr", |
| 165251 | | - /* 285 */ "cmd ::= REINDEX", |
| 165252 | | - /* 286 */ "cmd ::= REINDEX nm dbnm", |
| 165253 | | - /* 287 */ "cmd ::= ANALYZE", |
| 165254 | | - /* 288 */ "cmd ::= ANALYZE nm dbnm", |
| 165255 | | - /* 289 */ "cmd ::= ALTER TABLE fullname RENAME TO nm", |
| 165256 | | - /* 290 */ "cmd ::= ALTER TABLE add_column_fullname ADD kwcolumn_opt columnname carglist", |
| 165257 | | - /* 291 */ "cmd ::= ALTER TABLE fullname DROP kwcolumn_opt nm", |
| 165258 | | - /* 292 */ "add_column_fullname ::= fullname", |
| 165259 | | - /* 293 */ "cmd ::= ALTER TABLE fullname RENAME kwcolumn_opt nm TO nm", |
| 165260 | | - /* 294 */ "cmd ::= create_vtab", |
| 165261 | | - /* 295 */ "cmd ::= create_vtab LP vtabarglist RP", |
| 165262 | | - /* 296 */ "create_vtab ::= createkw VIRTUAL TABLE ifnotexists nm dbnm USING nm", |
| 165263 | | - /* 297 */ "vtabarg ::=", |
| 165264 | | - /* 298 */ "vtabargtoken ::= ANY", |
| 165265 | | - /* 299 */ "vtabargtoken ::= lp anylist RP", |
| 165266 | | - /* 300 */ "lp ::= LP", |
| 165267 | | - /* 301 */ "with ::= WITH wqlist", |
| 165268 | | - /* 302 */ "with ::= WITH RECURSIVE wqlist", |
| 165269 | | - /* 303 */ "wqas ::= AS", |
| 165270 | | - /* 304 */ "wqas ::= AS MATERIALIZED", |
| 165271 | | - /* 305 */ "wqas ::= AS NOT MATERIALIZED", |
| 165272 | | - /* 306 */ "wqitem ::= nm eidlist_opt wqas LP select RP", |
| 165273 | | - /* 307 */ "wqlist ::= wqitem", |
| 165274 | | - /* 308 */ "wqlist ::= wqlist COMMA wqitem", |
| 165275 | | - /* 309 */ "windowdefn_list ::= windowdefn", |
| 165276 | | - /* 310 */ "windowdefn_list ::= windowdefn_list COMMA windowdefn", |
| 165277 | | - /* 311 */ "windowdefn ::= nm AS LP window RP", |
| 165278 | | - /* 312 */ "window ::= PARTITION BY nexprlist orderby_opt frame_opt", |
| 165279 | | - /* 313 */ "window ::= nm PARTITION BY nexprlist orderby_opt frame_opt", |
| 165280 | | - /* 314 */ "window ::= ORDER BY sortlist frame_opt", |
| 165281 | | - /* 315 */ "window ::= nm ORDER BY sortlist frame_opt", |
| 165282 | | - /* 316 */ "window ::= frame_opt", |
| 165283 | | - /* 317 */ "window ::= nm frame_opt", |
| 165284 | | - /* 318 */ "frame_opt ::=", |
| 165285 | | - /* 319 */ "frame_opt ::= range_or_rows frame_bound_s frame_exclude_opt", |
| 165286 | | - /* 320 */ "frame_opt ::= range_or_rows BETWEEN frame_bound_s AND frame_bound_e frame_exclude_opt", |
| 165287 | | - /* 321 */ "range_or_rows ::= RANGE|ROWS|GROUPS", |
| 165288 | | - /* 322 */ "frame_bound_s ::= frame_bound", |
| 165289 | | - /* 323 */ "frame_bound_s ::= UNBOUNDED PRECEDING", |
| 165290 | | - /* 324 */ "frame_bound_e ::= frame_bound", |
| 165291 | | - /* 325 */ "frame_bound_e ::= UNBOUNDED FOLLOWING", |
| 165292 | | - /* 326 */ "frame_bound ::= expr PRECEDING|FOLLOWING", |
| 165293 | | - /* 327 */ "frame_bound ::= CURRENT ROW", |
| 165294 | | - /* 328 */ "frame_exclude_opt ::=", |
| 165295 | | - /* 329 */ "frame_exclude_opt ::= EXCLUDE frame_exclude", |
| 165296 | | - /* 330 */ "frame_exclude ::= NO OTHERS", |
| 165297 | | - /* 331 */ "frame_exclude ::= CURRENT ROW", |
| 165298 | | - /* 332 */ "frame_exclude ::= GROUP|TIES", |
| 165299 | | - /* 333 */ "window_clause ::= WINDOW windowdefn_list", |
| 165300 | | - /* 334 */ "filter_over ::= filter_clause over_clause", |
| 165301 | | - /* 335 */ "filter_over ::= over_clause", |
| 165302 | | - /* 336 */ "filter_over ::= filter_clause", |
| 165303 | | - /* 337 */ "over_clause ::= OVER LP window RP", |
| 165304 | | - /* 338 */ "over_clause ::= OVER nm", |
| 165305 | | - /* 339 */ "filter_clause ::= FILTER LP WHERE expr RP", |
| 165306 | | - /* 340 */ "input ::= cmdlist", |
| 165307 | | - /* 341 */ "cmdlist ::= cmdlist ecmd", |
| 165308 | | - /* 342 */ "cmdlist ::= ecmd", |
| 165309 | | - /* 343 */ "ecmd ::= SEMI", |
| 165310 | | - /* 344 */ "ecmd ::= cmdx SEMI", |
| 165311 | | - /* 345 */ "ecmd ::= explain cmdx SEMI", |
| 165312 | | - /* 346 */ "trans_opt ::=", |
| 165313 | | - /* 347 */ "trans_opt ::= TRANSACTION", |
| 165314 | | - /* 348 */ "trans_opt ::= TRANSACTION nm", |
| 165315 | | - /* 349 */ "savepoint_opt ::= SAVEPOINT", |
| 165316 | | - /* 350 */ "savepoint_opt ::=", |
| 165317 | | - /* 351 */ "cmd ::= create_table create_table_args", |
| 165318 | | - /* 352 */ "table_option_set ::= table_option", |
| 165319 | | - /* 353 */ "columnlist ::= columnlist COMMA columnname carglist", |
| 165320 | | - /* 354 */ "columnlist ::= columnname carglist", |
| 165321 | | - /* 355 */ "nm ::= ID|INDEXED", |
| 165322 | | - /* 356 */ "nm ::= STRING", |
| 165323 | | - /* 357 */ "nm ::= JOIN_KW", |
| 165324 | | - /* 358 */ "typetoken ::= typename", |
| 165325 | | - /* 359 */ "typename ::= ID|STRING", |
| 165326 | | - /* 360 */ "signed ::= plus_num", |
| 165327 | | - /* 361 */ "signed ::= minus_num", |
| 165328 | | - /* 362 */ "carglist ::= carglist ccons", |
| 165329 | | - /* 363 */ "carglist ::=", |
| 165330 | | - /* 364 */ "ccons ::= NULL onconf", |
| 165331 | | - /* 365 */ "ccons ::= GENERATED ALWAYS AS generated", |
| 165332 | | - /* 366 */ "ccons ::= AS generated", |
| 165333 | | - /* 367 */ "conslist_opt ::= COMMA conslist", |
| 165334 | | - /* 368 */ "conslist ::= conslist tconscomma tcons", |
| 165335 | | - /* 369 */ "conslist ::= tcons", |
| 165336 | | - /* 370 */ "tconscomma ::=", |
| 165337 | | - /* 371 */ "defer_subclause_opt ::= defer_subclause", |
| 165338 | | - /* 372 */ "resolvetype ::= raisetype", |
| 165339 | | - /* 373 */ "selectnowith ::= oneselect", |
| 165340 | | - /* 374 */ "oneselect ::= values", |
| 165341 | | - /* 375 */ "sclp ::= selcollist COMMA", |
| 165342 | | - /* 376 */ "as ::= ID|STRING", |
| 165343 | | - /* 377 */ "indexed_opt ::= indexed_by", |
| 165344 | | - /* 378 */ "returning ::=", |
| 165345 | | - /* 379 */ "expr ::= term", |
| 165346 | | - /* 380 */ "likeop ::= LIKE_KW|MATCH", |
| 165347 | | - /* 381 */ "exprlist ::= nexprlist", |
| 165348 | | - /* 382 */ "nmnum ::= plus_num", |
| 165349 | | - /* 383 */ "nmnum ::= nm", |
| 165350 | | - /* 384 */ "nmnum ::= ON", |
| 165351 | | - /* 385 */ "nmnum ::= DELETE", |
| 165352 | | - /* 386 */ "nmnum ::= DEFAULT", |
| 165353 | | - /* 387 */ "plus_num ::= INTEGER|FLOAT", |
| 165354 | | - /* 388 */ "foreach_clause ::=", |
| 165355 | | - /* 389 */ "foreach_clause ::= FOR EACH ROW", |
| 165356 | | - /* 390 */ "trnm ::= nm", |
| 165357 | | - /* 391 */ "tridxby ::=", |
| 165358 | | - /* 392 */ "database_kw_opt ::= DATABASE", |
| 165359 | | - /* 393 */ "database_kw_opt ::=", |
| 165360 | | - /* 394 */ "kwcolumn_opt ::=", |
| 165361 | | - /* 395 */ "kwcolumn_opt ::= COLUMNKW", |
| 165362 | | - /* 396 */ "vtabarglist ::= vtabarg", |
| 165363 | | - /* 397 */ "vtabarglist ::= vtabarglist COMMA vtabarg", |
| 165364 | | - /* 398 */ "vtabarg ::= vtabarg vtabargtoken", |
| 165365 | | - /* 399 */ "anylist ::=", |
| 165366 | | - /* 400 */ "anylist ::= anylist LP anylist RP", |
| 165367 | | - /* 401 */ "anylist ::= anylist ANY", |
| 165368 | | - /* 402 */ "with ::=", |
| 165165 | + /* 209 */ "expr ::= expr IS NOT DISTINCT FROM expr", |
| 165166 | + /* 210 */ "expr ::= expr IS DISTINCT FROM expr", |
| 165167 | + /* 211 */ "expr ::= NOT expr", |
| 165168 | + /* 212 */ "expr ::= BITNOT expr", |
| 165169 | + /* 213 */ "expr ::= PLUS|MINUS expr", |
| 165170 | + /* 214 */ "expr ::= expr PTR expr", |
| 165171 | + /* 215 */ "between_op ::= BETWEEN", |
| 165172 | + /* 216 */ "between_op ::= NOT BETWEEN", |
| 165173 | + /* 217 */ "expr ::= expr between_op expr AND expr", |
| 165174 | + /* 218 */ "in_op ::= IN", |
| 165175 | + /* 219 */ "in_op ::= NOT IN", |
| 165176 | + /* 220 */ "expr ::= expr in_op LP exprlist RP", |
| 165177 | + /* 221 */ "expr ::= LP select RP", |
| 165178 | + /* 222 */ "expr ::= expr in_op LP select RP", |
| 165179 | + /* 223 */ "expr ::= expr in_op nm dbnm paren_exprlist", |
| 165180 | + /* 224 */ "expr ::= EXISTS LP select RP", |
| 165181 | + /* 225 */ "expr ::= CASE case_operand case_exprlist case_else END", |
| 165182 | + /* 226 */ "case_exprlist ::= case_exprlist WHEN expr THEN expr", |
| 165183 | + /* 227 */ "case_exprlist ::= WHEN expr THEN expr", |
| 165184 | + /* 228 */ "case_else ::= ELSE expr", |
| 165185 | + /* 229 */ "case_else ::=", |
| 165186 | + /* 230 */ "case_operand ::= expr", |
| 165187 | + /* 231 */ "case_operand ::=", |
| 165188 | + /* 232 */ "exprlist ::=", |
| 165189 | + /* 233 */ "nexprlist ::= nexprlist COMMA expr", |
| 165190 | + /* 234 */ "nexprlist ::= expr", |
| 165191 | + /* 235 */ "paren_exprlist ::=", |
| 165192 | + /* 236 */ "paren_exprlist ::= LP exprlist RP", |
| 165193 | + /* 237 */ "cmd ::= createkw uniqueflag INDEX ifnotexists nm dbnm ON nm LP sortlist RP where_opt", |
| 165194 | + /* 238 */ "uniqueflag ::= UNIQUE", |
| 165195 | + /* 239 */ "uniqueflag ::=", |
| 165196 | + /* 240 */ "eidlist_opt ::=", |
| 165197 | + /* 241 */ "eidlist_opt ::= LP eidlist RP", |
| 165198 | + /* 242 */ "eidlist ::= eidlist COMMA nm collate sortorder", |
| 165199 | + /* 243 */ "eidlist ::= nm collate sortorder", |
| 165200 | + /* 244 */ "collate ::=", |
| 165201 | + /* 245 */ "collate ::= COLLATE ID|STRING", |
| 165202 | + /* 246 */ "cmd ::= DROP INDEX ifexists fullname", |
| 165203 | + /* 247 */ "cmd ::= VACUUM vinto", |
| 165204 | + /* 248 */ "cmd ::= VACUUM nm vinto", |
| 165205 | + /* 249 */ "vinto ::= INTO expr", |
| 165206 | + /* 250 */ "vinto ::=", |
| 165207 | + /* 251 */ "cmd ::= PRAGMA nm dbnm", |
| 165208 | + /* 252 */ "cmd ::= PRAGMA nm dbnm EQ nmnum", |
| 165209 | + /* 253 */ "cmd ::= PRAGMA nm dbnm LP nmnum RP", |
| 165210 | + /* 254 */ "cmd ::= PRAGMA nm dbnm EQ minus_num", |
| 165211 | + /* 255 */ "cmd ::= PRAGMA nm dbnm LP minus_num RP", |
| 165212 | + /* 256 */ "plus_num ::= PLUS INTEGER|FLOAT", |
| 165213 | + /* 257 */ "minus_num ::= MINUS INTEGER|FLOAT", |
| 165214 | + /* 258 */ "cmd ::= createkw trigger_decl BEGIN trigger_cmd_list END", |
| 165215 | + /* 259 */ "trigger_decl ::= temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON fullname foreach_clause when_clause", |
| 165216 | + /* 260 */ "trigger_time ::= BEFORE|AFTER", |
| 165217 | + /* 261 */ "trigger_time ::= INSTEAD OF", |
| 165218 | + /* 262 */ "trigger_time ::=", |
| 165219 | + /* 263 */ "trigger_event ::= DELETE|INSERT", |
| 165220 | + /* 264 */ "trigger_event ::= UPDATE", |
| 165221 | + /* 265 */ "trigger_event ::= UPDATE OF idlist", |
| 165222 | + /* 266 */ "when_clause ::=", |
| 165223 | + /* 267 */ "when_clause ::= WHEN expr", |
| 165224 | + /* 268 */ "trigger_cmd_list ::= trigger_cmd_list trigger_cmd SEMI", |
| 165225 | + /* 269 */ "trigger_cmd_list ::= trigger_cmd SEMI", |
| 165226 | + /* 270 */ "trnm ::= nm DOT nm", |
| 165227 | + /* 271 */ "tridxby ::= INDEXED BY nm", |
| 165228 | + /* 272 */ "tridxby ::= NOT INDEXED", |
| 165229 | + /* 273 */ "trigger_cmd ::= UPDATE orconf trnm tridxby SET setlist from where_opt scanpt", |
| 165230 | + /* 274 */ "trigger_cmd ::= scanpt insert_cmd INTO trnm idlist_opt select upsert scanpt", |
| 165231 | + /* 275 */ "trigger_cmd ::= DELETE FROM trnm tridxby where_opt scanpt", |
| 165232 | + /* 276 */ "trigger_cmd ::= scanpt select scanpt", |
| 165233 | + /* 277 */ "expr ::= RAISE LP IGNORE RP", |
| 165234 | + /* 278 */ "expr ::= RAISE LP raisetype COMMA nm RP", |
| 165235 | + /* 279 */ "raisetype ::= ROLLBACK", |
| 165236 | + /* 280 */ "raisetype ::= ABORT", |
| 165237 | + /* 281 */ "raisetype ::= FAIL", |
| 165238 | + /* 282 */ "cmd ::= DROP TRIGGER ifexists fullname", |
| 165239 | + /* 283 */ "cmd ::= ATTACH database_kw_opt expr AS expr key_opt", |
| 165240 | + /* 284 */ "cmd ::= DETACH database_kw_opt expr", |
| 165241 | + /* 285 */ "key_opt ::=", |
| 165242 | + /* 286 */ "key_opt ::= KEY expr", |
| 165243 | + /* 287 */ "cmd ::= REINDEX", |
| 165244 | + /* 288 */ "cmd ::= REINDEX nm dbnm", |
| 165245 | + /* 289 */ "cmd ::= ANALYZE", |
| 165246 | + /* 290 */ "cmd ::= ANALYZE nm dbnm", |
| 165247 | + /* 291 */ "cmd ::= ALTER TABLE fullname RENAME TO nm", |
| 165248 | + /* 292 */ "cmd ::= ALTER TABLE add_column_fullname ADD kwcolumn_opt columnname carglist", |
| 165249 | + /* 293 */ "cmd ::= ALTER TABLE fullname DROP kwcolumn_opt nm", |
| 165250 | + /* 294 */ "add_column_fullname ::= fullname", |
| 165251 | + /* 295 */ "cmd ::= ALTER TABLE fullname RENAME kwcolumn_opt nm TO nm", |
| 165252 | + /* 296 */ "cmd ::= create_vtab", |
| 165253 | + /* 297 */ "cmd ::= create_vtab LP vtabarglist RP", |
| 165254 | + /* 298 */ "create_vtab ::= createkw VIRTUAL TABLE ifnotexists nm dbnm USING nm", |
| 165255 | + /* 299 */ "vtabarg ::=", |
| 165256 | + /* 300 */ "vtabargtoken ::= ANY", |
| 165257 | + /* 301 */ "vtabargtoken ::= lp anylist RP", |
| 165258 | + /* 302 */ "lp ::= LP", |
| 165259 | + /* 303 */ "with ::= WITH wqlist", |
| 165260 | + /* 304 */ "with ::= WITH RECURSIVE wqlist", |
| 165261 | + /* 305 */ "wqas ::= AS", |
| 165262 | + /* 306 */ "wqas ::= AS MATERIALIZED", |
| 165263 | + /* 307 */ "wqas ::= AS NOT MATERIALIZED", |
| 165264 | + /* 308 */ "wqitem ::= nm eidlist_opt wqas LP select RP", |
| 165265 | + /* 309 */ "wqlist ::= wqitem", |
| 165266 | + /* 310 */ "wqlist ::= wqlist COMMA wqitem", |
| 165267 | + /* 311 */ "windowdefn_list ::= windowdefn", |
| 165268 | + /* 312 */ "windowdefn_list ::= windowdefn_list COMMA windowdefn", |
| 165269 | + /* 313 */ "windowdefn ::= nm AS LP window RP", |
| 165270 | + /* 314 */ "window ::= PARTITION BY nexprlist orderby_opt frame_opt", |
| 165271 | + /* 315 */ "window ::= nm PARTITION BY nexprlist orderby_opt frame_opt", |
| 165272 | + /* 316 */ "window ::= ORDER BY sortlist frame_opt", |
| 165273 | + /* 317 */ "window ::= nm ORDER BY sortlist frame_opt", |
| 165274 | + /* 318 */ "window ::= frame_opt", |
| 165275 | + /* 319 */ "window ::= nm frame_opt", |
| 165276 | + /* 320 */ "frame_opt ::=", |
| 165277 | + /* 321 */ "frame_opt ::= range_or_rows frame_bound_s frame_exclude_opt", |
| 165278 | + /* 322 */ "frame_opt ::= range_or_rows BETWEEN frame_bound_s AND frame_bound_e frame_exclude_opt", |
| 165279 | + /* 323 */ "range_or_rows ::= RANGE|ROWS|GROUPS", |
| 165280 | + /* 324 */ "frame_bound_s ::= frame_bound", |
| 165281 | + /* 325 */ "frame_bound_s ::= UNBOUNDED PRECEDING", |
| 165282 | + /* 326 */ "frame_bound_e ::= frame_bound", |
| 165283 | + /* 327 */ "frame_bound_e ::= UNBOUNDED FOLLOWING", |
| 165284 | + /* 328 */ "frame_bound ::= expr PRECEDING|FOLLOWING", |
| 165285 | + /* 329 */ "frame_bound ::= CURRENT ROW", |
| 165286 | + /* 330 */ "frame_exclude_opt ::=", |
| 165287 | + /* 331 */ "frame_exclude_opt ::= EXCLUDE frame_exclude", |
| 165288 | + /* 332 */ "frame_exclude ::= NO OTHERS", |
| 165289 | + /* 333 */ "frame_exclude ::= CURRENT ROW", |
| 165290 | + /* 334 */ "frame_exclude ::= GROUP|TIES", |
| 165291 | + /* 335 */ "window_clause ::= WINDOW windowdefn_list", |
| 165292 | + /* 336 */ "filter_over ::= filter_clause over_clause", |
| 165293 | + /* 337 */ "filter_over ::= over_clause", |
| 165294 | + /* 338 */ "filter_over ::= filter_clause", |
| 165295 | + /* 339 */ "over_clause ::= OVER LP window RP", |
| 165296 | + /* 340 */ "over_clause ::= OVER nm", |
| 165297 | + /* 341 */ "filter_clause ::= FILTER LP WHERE expr RP", |
| 165298 | + /* 342 */ "input ::= cmdlist", |
| 165299 | + /* 343 */ "cmdlist ::= cmdlist ecmd", |
| 165300 | + /* 344 */ "cmdlist ::= ecmd", |
| 165301 | + /* 345 */ "ecmd ::= SEMI", |
| 165302 | + /* 346 */ "ecmd ::= cmdx SEMI", |
| 165303 | + /* 347 */ "ecmd ::= explain cmdx SEMI", |
| 165304 | + /* 348 */ "trans_opt ::=", |
| 165305 | + /* 349 */ "trans_opt ::= TRANSACTION", |
| 165306 | + /* 350 */ "trans_opt ::= TRANSACTION nm", |
| 165307 | + /* 351 */ "savepoint_opt ::= SAVEPOINT", |
| 165308 | + /* 352 */ "savepoint_opt ::=", |
| 165309 | + /* 353 */ "cmd ::= create_table create_table_args", |
| 165310 | + /* 354 */ "table_option_set ::= table_option", |
| 165311 | + /* 355 */ "columnlist ::= columnlist COMMA columnname carglist", |
| 165312 | + /* 356 */ "columnlist ::= columnname carglist", |
| 165313 | + /* 357 */ "nm ::= ID|INDEXED", |
| 165314 | + /* 358 */ "nm ::= STRING", |
| 165315 | + /* 359 */ "nm ::= JOIN_KW", |
| 165316 | + /* 360 */ "typetoken ::= typename", |
| 165317 | + /* 361 */ "typename ::= ID|STRING", |
| 165318 | + /* 362 */ "signed ::= plus_num", |
| 165319 | + /* 363 */ "signed ::= minus_num", |
| 165320 | + /* 364 */ "carglist ::= carglist ccons", |
| 165321 | + /* 365 */ "carglist ::=", |
| 165322 | + /* 366 */ "ccons ::= NULL onconf", |
| 165323 | + /* 367 */ "ccons ::= GENERATED ALWAYS AS generated", |
| 165324 | + /* 368 */ "ccons ::= AS generated", |
| 165325 | + /* 369 */ "conslist_opt ::= COMMA conslist", |
| 165326 | + /* 370 */ "conslist ::= conslist tconscomma tcons", |
| 165327 | + /* 371 */ "conslist ::= tcons", |
| 165328 | + /* 372 */ "tconscomma ::=", |
| 165329 | + /* 373 */ "defer_subclause_opt ::= defer_subclause", |
| 165330 | + /* 374 */ "resolvetype ::= raisetype", |
| 165331 | + /* 375 */ "selectnowith ::= oneselect", |
| 165332 | + /* 376 */ "oneselect ::= values", |
| 165333 | + /* 377 */ "sclp ::= selcollist COMMA", |
| 165334 | + /* 378 */ "as ::= ID|STRING", |
| 165335 | + /* 379 */ "indexed_opt ::= indexed_by", |
| 165336 | + /* 380 */ "returning ::=", |
| 165337 | + /* 381 */ "expr ::= term", |
| 165338 | + /* 382 */ "likeop ::= LIKE_KW|MATCH", |
| 165339 | + /* 383 */ "exprlist ::= nexprlist", |
| 165340 | + /* 384 */ "nmnum ::= plus_num", |
| 165341 | + /* 385 */ "nmnum ::= nm", |
| 165342 | + /* 386 */ "nmnum ::= ON", |
| 165343 | + /* 387 */ "nmnum ::= DELETE", |
| 165344 | + /* 388 */ "nmnum ::= DEFAULT", |
| 165345 | + /* 389 */ "plus_num ::= INTEGER|FLOAT", |
| 165346 | + /* 390 */ "foreach_clause ::=", |
| 165347 | + /* 391 */ "foreach_clause ::= FOR EACH ROW", |
| 165348 | + /* 392 */ "trnm ::= nm", |
| 165349 | + /* 393 */ "tridxby ::=", |
| 165350 | + /* 394 */ "database_kw_opt ::= DATABASE", |
| 165351 | + /* 395 */ "database_kw_opt ::=", |
| 165352 | + /* 396 */ "kwcolumn_opt ::=", |
| 165353 | + /* 397 */ "kwcolumn_opt ::= COLUMNKW", |
| 165354 | + /* 398 */ "vtabarglist ::= vtabarg", |
| 165355 | + /* 399 */ "vtabarglist ::= vtabarglist COMMA vtabarg", |
| 165356 | + /* 400 */ "vtabarg ::= vtabarg vtabargtoken", |
| 165357 | + /* 401 */ "anylist ::=", |
| 165358 | + /* 402 */ "anylist ::= anylist LP anylist RP", |
| 165359 | + /* 403 */ "anylist ::= anylist ANY", |
| 165360 | + /* 404 */ "with ::=", |
| 165369 | 165361 | }; |
| 165370 | 165362 | #endif /* NDEBUG */ |
| 165371 | 165363 | |
| 165372 | 165364 | |
| 165373 | 165365 | #if YYSTACKDEPTH<=0 |
| | @@ -166079,204 +166071,206 @@ |
| 166079 | 166071 | 217, /* (204) expr ::= expr likeop expr ESCAPE expr */ |
| 166080 | 166072 | 217, /* (205) expr ::= expr ISNULL|NOTNULL */ |
| 166081 | 166073 | 217, /* (206) expr ::= expr NOT NULL */ |
| 166082 | 166074 | 217, /* (207) expr ::= expr IS expr */ |
| 166083 | 166075 | 217, /* (208) expr ::= expr IS NOT expr */ |
| 166084 | | - 217, /* (209) expr ::= NOT expr */ |
| 166085 | | - 217, /* (210) expr ::= BITNOT expr */ |
| 166086 | | - 217, /* (211) expr ::= PLUS|MINUS expr */ |
| 166087 | | - 217, /* (212) expr ::= expr PTR expr */ |
| 166088 | | - 275, /* (213) between_op ::= BETWEEN */ |
| 166089 | | - 275, /* (214) between_op ::= NOT BETWEEN */ |
| 166090 | | - 217, /* (215) expr ::= expr between_op expr AND expr */ |
| 166091 | | - 276, /* (216) in_op ::= IN */ |
| 166092 | | - 276, /* (217) in_op ::= NOT IN */ |
| 166093 | | - 217, /* (218) expr ::= expr in_op LP exprlist RP */ |
| 166094 | | - 217, /* (219) expr ::= LP select RP */ |
| 166095 | | - 217, /* (220) expr ::= expr in_op LP select RP */ |
| 166096 | | - 217, /* (221) expr ::= expr in_op nm dbnm paren_exprlist */ |
| 166097 | | - 217, /* (222) expr ::= EXISTS LP select RP */ |
| 166098 | | - 217, /* (223) expr ::= CASE case_operand case_exprlist case_else END */ |
| 166099 | | - 279, /* (224) case_exprlist ::= case_exprlist WHEN expr THEN expr */ |
| 166100 | | - 279, /* (225) case_exprlist ::= WHEN expr THEN expr */ |
| 166101 | | - 280, /* (226) case_else ::= ELSE expr */ |
| 166102 | | - 280, /* (227) case_else ::= */ |
| 166103 | | - 278, /* (228) case_operand ::= expr */ |
| 166104 | | - 278, /* (229) case_operand ::= */ |
| 166105 | | - 261, /* (230) exprlist ::= */ |
| 166106 | | - 253, /* (231) nexprlist ::= nexprlist COMMA expr */ |
| 166107 | | - 253, /* (232) nexprlist ::= expr */ |
| 166108 | | - 277, /* (233) paren_exprlist ::= */ |
| 166109 | | - 277, /* (234) paren_exprlist ::= LP exprlist RP */ |
| 166110 | | - 190, /* (235) cmd ::= createkw uniqueflag INDEX ifnotexists nm dbnm ON nm LP sortlist RP where_opt */ |
| 166111 | | - 281, /* (236) uniqueflag ::= UNIQUE */ |
| 166112 | | - 281, /* (237) uniqueflag ::= */ |
| 166113 | | - 221, /* (238) eidlist_opt ::= */ |
| 166114 | | - 221, /* (239) eidlist_opt ::= LP eidlist RP */ |
| 166115 | | - 232, /* (240) eidlist ::= eidlist COMMA nm collate sortorder */ |
| 166116 | | - 232, /* (241) eidlist ::= nm collate sortorder */ |
| 166117 | | - 282, /* (242) collate ::= */ |
| 166118 | | - 282, /* (243) collate ::= COLLATE ID|STRING */ |
| 166119 | | - 190, /* (244) cmd ::= DROP INDEX ifexists fullname */ |
| 166120 | | - 190, /* (245) cmd ::= VACUUM vinto */ |
| 166121 | | - 190, /* (246) cmd ::= VACUUM nm vinto */ |
| 166122 | | - 283, /* (247) vinto ::= INTO expr */ |
| 166123 | | - 283, /* (248) vinto ::= */ |
| 166124 | | - 190, /* (249) cmd ::= PRAGMA nm dbnm */ |
| 166125 | | - 190, /* (250) cmd ::= PRAGMA nm dbnm EQ nmnum */ |
| 166126 | | - 190, /* (251) cmd ::= PRAGMA nm dbnm LP nmnum RP */ |
| 166127 | | - 190, /* (252) cmd ::= PRAGMA nm dbnm EQ minus_num */ |
| 166128 | | - 190, /* (253) cmd ::= PRAGMA nm dbnm LP minus_num RP */ |
| 166129 | | - 211, /* (254) plus_num ::= PLUS INTEGER|FLOAT */ |
| 166130 | | - 212, /* (255) minus_num ::= MINUS INTEGER|FLOAT */ |
| 166131 | | - 190, /* (256) cmd ::= createkw trigger_decl BEGIN trigger_cmd_list END */ |
| 166132 | | - 285, /* (257) trigger_decl ::= temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON fullname foreach_clause when_clause */ |
| 166133 | | - 287, /* (258) trigger_time ::= BEFORE|AFTER */ |
| 166134 | | - 287, /* (259) trigger_time ::= INSTEAD OF */ |
| 166135 | | - 287, /* (260) trigger_time ::= */ |
| 166136 | | - 288, /* (261) trigger_event ::= DELETE|INSERT */ |
| 166137 | | - 288, /* (262) trigger_event ::= UPDATE */ |
| 166138 | | - 288, /* (263) trigger_event ::= UPDATE OF idlist */ |
| 166139 | | - 290, /* (264) when_clause ::= */ |
| 166140 | | - 290, /* (265) when_clause ::= WHEN expr */ |
| 166141 | | - 286, /* (266) trigger_cmd_list ::= trigger_cmd_list trigger_cmd SEMI */ |
| 166142 | | - 286, /* (267) trigger_cmd_list ::= trigger_cmd SEMI */ |
| 166143 | | - 292, /* (268) trnm ::= nm DOT nm */ |
| 166144 | | - 293, /* (269) tridxby ::= INDEXED BY nm */ |
| 166145 | | - 293, /* (270) tridxby ::= NOT INDEXED */ |
| 166146 | | - 291, /* (271) trigger_cmd ::= UPDATE orconf trnm tridxby SET setlist from where_opt scanpt */ |
| 166147 | | - 291, /* (272) trigger_cmd ::= scanpt insert_cmd INTO trnm idlist_opt select upsert scanpt */ |
| 166148 | | - 291, /* (273) trigger_cmd ::= DELETE FROM trnm tridxby where_opt scanpt */ |
| 166149 | | - 291, /* (274) trigger_cmd ::= scanpt select scanpt */ |
| 166150 | | - 217, /* (275) expr ::= RAISE LP IGNORE RP */ |
| 166151 | | - 217, /* (276) expr ::= RAISE LP raisetype COMMA nm RP */ |
| 166152 | | - 236, /* (277) raisetype ::= ROLLBACK */ |
| 166153 | | - 236, /* (278) raisetype ::= ABORT */ |
| 166154 | | - 236, /* (279) raisetype ::= FAIL */ |
| 166155 | | - 190, /* (280) cmd ::= DROP TRIGGER ifexists fullname */ |
| 166156 | | - 190, /* (281) cmd ::= ATTACH database_kw_opt expr AS expr key_opt */ |
| 166157 | | - 190, /* (282) cmd ::= DETACH database_kw_opt expr */ |
| 166158 | | - 295, /* (283) key_opt ::= */ |
| 166159 | | - 295, /* (284) key_opt ::= KEY expr */ |
| 166160 | | - 190, /* (285) cmd ::= REINDEX */ |
| 166161 | | - 190, /* (286) cmd ::= REINDEX nm dbnm */ |
| 166162 | | - 190, /* (287) cmd ::= ANALYZE */ |
| 166163 | | - 190, /* (288) cmd ::= ANALYZE nm dbnm */ |
| 166164 | | - 190, /* (289) cmd ::= ALTER TABLE fullname RENAME TO nm */ |
| 166165 | | - 190, /* (290) cmd ::= ALTER TABLE add_column_fullname ADD kwcolumn_opt columnname carglist */ |
| 166166 | | - 190, /* (291) cmd ::= ALTER TABLE fullname DROP kwcolumn_opt nm */ |
| 166167 | | - 296, /* (292) add_column_fullname ::= fullname */ |
| 166168 | | - 190, /* (293) cmd ::= ALTER TABLE fullname RENAME kwcolumn_opt nm TO nm */ |
| 166169 | | - 190, /* (294) cmd ::= create_vtab */ |
| 166170 | | - 190, /* (295) cmd ::= create_vtab LP vtabarglist RP */ |
| 166171 | | - 298, /* (296) create_vtab ::= createkw VIRTUAL TABLE ifnotexists nm dbnm USING nm */ |
| 166172 | | - 300, /* (297) vtabarg ::= */ |
| 166173 | | - 301, /* (298) vtabargtoken ::= ANY */ |
| 166174 | | - 301, /* (299) vtabargtoken ::= lp anylist RP */ |
| 166175 | | - 302, /* (300) lp ::= LP */ |
| 166176 | | - 266, /* (301) with ::= WITH wqlist */ |
| 166177 | | - 266, /* (302) with ::= WITH RECURSIVE wqlist */ |
| 166178 | | - 305, /* (303) wqas ::= AS */ |
| 166179 | | - 305, /* (304) wqas ::= AS MATERIALIZED */ |
| 166180 | | - 305, /* (305) wqas ::= AS NOT MATERIALIZED */ |
| 166181 | | - 304, /* (306) wqitem ::= nm eidlist_opt wqas LP select RP */ |
| 166182 | | - 241, /* (307) wqlist ::= wqitem */ |
| 166183 | | - 241, /* (308) wqlist ::= wqlist COMMA wqitem */ |
| 166184 | | - 306, /* (309) windowdefn_list ::= windowdefn */ |
| 166185 | | - 306, /* (310) windowdefn_list ::= windowdefn_list COMMA windowdefn */ |
| 166186 | | - 307, /* (311) windowdefn ::= nm AS LP window RP */ |
| 166187 | | - 308, /* (312) window ::= PARTITION BY nexprlist orderby_opt frame_opt */ |
| 166188 | | - 308, /* (313) window ::= nm PARTITION BY nexprlist orderby_opt frame_opt */ |
| 166189 | | - 308, /* (314) window ::= ORDER BY sortlist frame_opt */ |
| 166190 | | - 308, /* (315) window ::= nm ORDER BY sortlist frame_opt */ |
| 166191 | | - 308, /* (316) window ::= frame_opt */ |
| 166192 | | - 308, /* (317) window ::= nm frame_opt */ |
| 166193 | | - 309, /* (318) frame_opt ::= */ |
| 166194 | | - 309, /* (319) frame_opt ::= range_or_rows frame_bound_s frame_exclude_opt */ |
| 166195 | | - 309, /* (320) frame_opt ::= range_or_rows BETWEEN frame_bound_s AND frame_bound_e frame_exclude_opt */ |
| 166196 | | - 313, /* (321) range_or_rows ::= RANGE|ROWS|GROUPS */ |
| 166197 | | - 315, /* (322) frame_bound_s ::= frame_bound */ |
| 166198 | | - 315, /* (323) frame_bound_s ::= UNBOUNDED PRECEDING */ |
| 166199 | | - 316, /* (324) frame_bound_e ::= frame_bound */ |
| 166200 | | - 316, /* (325) frame_bound_e ::= UNBOUNDED FOLLOWING */ |
| 166201 | | - 314, /* (326) frame_bound ::= expr PRECEDING|FOLLOWING */ |
| 166202 | | - 314, /* (327) frame_bound ::= CURRENT ROW */ |
| 166203 | | - 317, /* (328) frame_exclude_opt ::= */ |
| 166204 | | - 317, /* (329) frame_exclude_opt ::= EXCLUDE frame_exclude */ |
| 166205 | | - 318, /* (330) frame_exclude ::= NO OTHERS */ |
| 166206 | | - 318, /* (331) frame_exclude ::= CURRENT ROW */ |
| 166207 | | - 318, /* (332) frame_exclude ::= GROUP|TIES */ |
| 166208 | | - 251, /* (333) window_clause ::= WINDOW windowdefn_list */ |
| 166209 | | - 273, /* (334) filter_over ::= filter_clause over_clause */ |
| 166210 | | - 273, /* (335) filter_over ::= over_clause */ |
| 166211 | | - 273, /* (336) filter_over ::= filter_clause */ |
| 166212 | | - 312, /* (337) over_clause ::= OVER LP window RP */ |
| 166213 | | - 312, /* (338) over_clause ::= OVER nm */ |
| 166214 | | - 311, /* (339) filter_clause ::= FILTER LP WHERE expr RP */ |
| 166215 | | - 185, /* (340) input ::= cmdlist */ |
| 166216 | | - 186, /* (341) cmdlist ::= cmdlist ecmd */ |
| 166217 | | - 186, /* (342) cmdlist ::= ecmd */ |
| 166218 | | - 187, /* (343) ecmd ::= SEMI */ |
| 166219 | | - 187, /* (344) ecmd ::= cmdx SEMI */ |
| 166220 | | - 187, /* (345) ecmd ::= explain cmdx SEMI */ |
| 166221 | | - 192, /* (346) trans_opt ::= */ |
| 166222 | | - 192, /* (347) trans_opt ::= TRANSACTION */ |
| 166223 | | - 192, /* (348) trans_opt ::= TRANSACTION nm */ |
| 166224 | | - 194, /* (349) savepoint_opt ::= SAVEPOINT */ |
| 166225 | | - 194, /* (350) savepoint_opt ::= */ |
| 166226 | | - 190, /* (351) cmd ::= create_table create_table_args */ |
| 166227 | | - 203, /* (352) table_option_set ::= table_option */ |
| 166228 | | - 201, /* (353) columnlist ::= columnlist COMMA columnname carglist */ |
| 166229 | | - 201, /* (354) columnlist ::= columnname carglist */ |
| 166230 | | - 193, /* (355) nm ::= ID|INDEXED */ |
| 166231 | | - 193, /* (356) nm ::= STRING */ |
| 166232 | | - 193, /* (357) nm ::= JOIN_KW */ |
| 166233 | | - 208, /* (358) typetoken ::= typename */ |
| 166234 | | - 209, /* (359) typename ::= ID|STRING */ |
| 166235 | | - 210, /* (360) signed ::= plus_num */ |
| 166236 | | - 210, /* (361) signed ::= minus_num */ |
| 166237 | | - 207, /* (362) carglist ::= carglist ccons */ |
| 166238 | | - 207, /* (363) carglist ::= */ |
| 166239 | | - 215, /* (364) ccons ::= NULL onconf */ |
| 166240 | | - 215, /* (365) ccons ::= GENERATED ALWAYS AS generated */ |
| 166241 | | - 215, /* (366) ccons ::= AS generated */ |
| 166242 | | - 202, /* (367) conslist_opt ::= COMMA conslist */ |
| 166243 | | - 228, /* (368) conslist ::= conslist tconscomma tcons */ |
| 166244 | | - 228, /* (369) conslist ::= tcons */ |
| 166245 | | - 229, /* (370) tconscomma ::= */ |
| 166246 | | - 233, /* (371) defer_subclause_opt ::= defer_subclause */ |
| 166247 | | - 235, /* (372) resolvetype ::= raisetype */ |
| 166248 | | - 239, /* (373) selectnowith ::= oneselect */ |
| 166249 | | - 240, /* (374) oneselect ::= values */ |
| 166250 | | - 254, /* (375) sclp ::= selcollist COMMA */ |
| 166251 | | - 255, /* (376) as ::= ID|STRING */ |
| 166252 | | - 264, /* (377) indexed_opt ::= indexed_by */ |
| 166253 | | - 272, /* (378) returning ::= */ |
| 166254 | | - 217, /* (379) expr ::= term */ |
| 166255 | | - 274, /* (380) likeop ::= LIKE_KW|MATCH */ |
| 166256 | | - 261, /* (381) exprlist ::= nexprlist */ |
| 166257 | | - 284, /* (382) nmnum ::= plus_num */ |
| 166258 | | - 284, /* (383) nmnum ::= nm */ |
| 166259 | | - 284, /* (384) nmnum ::= ON */ |
| 166260 | | - 284, /* (385) nmnum ::= DELETE */ |
| 166261 | | - 284, /* (386) nmnum ::= DEFAULT */ |
| 166262 | | - 211, /* (387) plus_num ::= INTEGER|FLOAT */ |
| 166263 | | - 289, /* (388) foreach_clause ::= */ |
| 166264 | | - 289, /* (389) foreach_clause ::= FOR EACH ROW */ |
| 166265 | | - 292, /* (390) trnm ::= nm */ |
| 166266 | | - 293, /* (391) tridxby ::= */ |
| 166267 | | - 294, /* (392) database_kw_opt ::= DATABASE */ |
| 166268 | | - 294, /* (393) database_kw_opt ::= */ |
| 166269 | | - 297, /* (394) kwcolumn_opt ::= */ |
| 166270 | | - 297, /* (395) kwcolumn_opt ::= COLUMNKW */ |
| 166271 | | - 299, /* (396) vtabarglist ::= vtabarg */ |
| 166272 | | - 299, /* (397) vtabarglist ::= vtabarglist COMMA vtabarg */ |
| 166273 | | - 300, /* (398) vtabarg ::= vtabarg vtabargtoken */ |
| 166274 | | - 303, /* (399) anylist ::= */ |
| 166275 | | - 303, /* (400) anylist ::= anylist LP anylist RP */ |
| 166276 | | - 303, /* (401) anylist ::= anylist ANY */ |
| 166277 | | - 266, /* (402) with ::= */ |
| 166076 | + 217, /* (209) expr ::= expr IS NOT DISTINCT FROM expr */ |
| 166077 | + 217, /* (210) expr ::= expr IS DISTINCT FROM expr */ |
| 166078 | + 217, /* (211) expr ::= NOT expr */ |
| 166079 | + 217, /* (212) expr ::= BITNOT expr */ |
| 166080 | + 217, /* (213) expr ::= PLUS|MINUS expr */ |
| 166081 | + 217, /* (214) expr ::= expr PTR expr */ |
| 166082 | + 275, /* (215) between_op ::= BETWEEN */ |
| 166083 | + 275, /* (216) between_op ::= NOT BETWEEN */ |
| 166084 | + 217, /* (217) expr ::= expr between_op expr AND expr */ |
| 166085 | + 276, /* (218) in_op ::= IN */ |
| 166086 | + 276, /* (219) in_op ::= NOT IN */ |
| 166087 | + 217, /* (220) expr ::= expr in_op LP exprlist RP */ |
| 166088 | + 217, /* (221) expr ::= LP select RP */ |
| 166089 | + 217, /* (222) expr ::= expr in_op LP select RP */ |
| 166090 | + 217, /* (223) expr ::= expr in_op nm dbnm paren_exprlist */ |
| 166091 | + 217, /* (224) expr ::= EXISTS LP select RP */ |
| 166092 | + 217, /* (225) expr ::= CASE case_operand case_exprlist case_else END */ |
| 166093 | + 279, /* (226) case_exprlist ::= case_exprlist WHEN expr THEN expr */ |
| 166094 | + 279, /* (227) case_exprlist ::= WHEN expr THEN expr */ |
| 166095 | + 280, /* (228) case_else ::= ELSE expr */ |
| 166096 | + 280, /* (229) case_else ::= */ |
| 166097 | + 278, /* (230) case_operand ::= expr */ |
| 166098 | + 278, /* (231) case_operand ::= */ |
| 166099 | + 261, /* (232) exprlist ::= */ |
| 166100 | + 253, /* (233) nexprlist ::= nexprlist COMMA expr */ |
| 166101 | + 253, /* (234) nexprlist ::= expr */ |
| 166102 | + 277, /* (235) paren_exprlist ::= */ |
| 166103 | + 277, /* (236) paren_exprlist ::= LP exprlist RP */ |
| 166104 | + 190, /* (237) cmd ::= createkw uniqueflag INDEX ifnotexists nm dbnm ON nm LP sortlist RP where_opt */ |
| 166105 | + 281, /* (238) uniqueflag ::= UNIQUE */ |
| 166106 | + 281, /* (239) uniqueflag ::= */ |
| 166107 | + 221, /* (240) eidlist_opt ::= */ |
| 166108 | + 221, /* (241) eidlist_opt ::= LP eidlist RP */ |
| 166109 | + 232, /* (242) eidlist ::= eidlist COMMA nm collate sortorder */ |
| 166110 | + 232, /* (243) eidlist ::= nm collate sortorder */ |
| 166111 | + 282, /* (244) collate ::= */ |
| 166112 | + 282, /* (245) collate ::= COLLATE ID|STRING */ |
| 166113 | + 190, /* (246) cmd ::= DROP INDEX ifexists fullname */ |
| 166114 | + 190, /* (247) cmd ::= VACUUM vinto */ |
| 166115 | + 190, /* (248) cmd ::= VACUUM nm vinto */ |
| 166116 | + 283, /* (249) vinto ::= INTO expr */ |
| 166117 | + 283, /* (250) vinto ::= */ |
| 166118 | + 190, /* (251) cmd ::= PRAGMA nm dbnm */ |
| 166119 | + 190, /* (252) cmd ::= PRAGMA nm dbnm EQ nmnum */ |
| 166120 | + 190, /* (253) cmd ::= PRAGMA nm dbnm LP nmnum RP */ |
| 166121 | + 190, /* (254) cmd ::= PRAGMA nm dbnm EQ minus_num */ |
| 166122 | + 190, /* (255) cmd ::= PRAGMA nm dbnm LP minus_num RP */ |
| 166123 | + 211, /* (256) plus_num ::= PLUS INTEGER|FLOAT */ |
| 166124 | + 212, /* (257) minus_num ::= MINUS INTEGER|FLOAT */ |
| 166125 | + 190, /* (258) cmd ::= createkw trigger_decl BEGIN trigger_cmd_list END */ |
| 166126 | + 285, /* (259) trigger_decl ::= temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON fullname foreach_clause when_clause */ |
| 166127 | + 287, /* (260) trigger_time ::= BEFORE|AFTER */ |
| 166128 | + 287, /* (261) trigger_time ::= INSTEAD OF */ |
| 166129 | + 287, /* (262) trigger_time ::= */ |
| 166130 | + 288, /* (263) trigger_event ::= DELETE|INSERT */ |
| 166131 | + 288, /* (264) trigger_event ::= UPDATE */ |
| 166132 | + 288, /* (265) trigger_event ::= UPDATE OF idlist */ |
| 166133 | + 290, /* (266) when_clause ::= */ |
| 166134 | + 290, /* (267) when_clause ::= WHEN expr */ |
| 166135 | + 286, /* (268) trigger_cmd_list ::= trigger_cmd_list trigger_cmd SEMI */ |
| 166136 | + 286, /* (269) trigger_cmd_list ::= trigger_cmd SEMI */ |
| 166137 | + 292, /* (270) trnm ::= nm DOT nm */ |
| 166138 | + 293, /* (271) tridxby ::= INDEXED BY nm */ |
| 166139 | + 293, /* (272) tridxby ::= NOT INDEXED */ |
| 166140 | + 291, /* (273) trigger_cmd ::= UPDATE orconf trnm tridxby SET setlist from where_opt scanpt */ |
| 166141 | + 291, /* (274) trigger_cmd ::= scanpt insert_cmd INTO trnm idlist_opt select upsert scanpt */ |
| 166142 | + 291, /* (275) trigger_cmd ::= DELETE FROM trnm tridxby where_opt scanpt */ |
| 166143 | + 291, /* (276) trigger_cmd ::= scanpt select scanpt */ |
| 166144 | + 217, /* (277) expr ::= RAISE LP IGNORE RP */ |
| 166145 | + 217, /* (278) expr ::= RAISE LP raisetype COMMA nm RP */ |
| 166146 | + 236, /* (279) raisetype ::= ROLLBACK */ |
| 166147 | + 236, /* (280) raisetype ::= ABORT */ |
| 166148 | + 236, /* (281) raisetype ::= FAIL */ |
| 166149 | + 190, /* (282) cmd ::= DROP TRIGGER ifexists fullname */ |
| 166150 | + 190, /* (283) cmd ::= ATTACH database_kw_opt expr AS expr key_opt */ |
| 166151 | + 190, /* (284) cmd ::= DETACH database_kw_opt expr */ |
| 166152 | + 295, /* (285) key_opt ::= */ |
| 166153 | + 295, /* (286) key_opt ::= KEY expr */ |
| 166154 | + 190, /* (287) cmd ::= REINDEX */ |
| 166155 | + 190, /* (288) cmd ::= REINDEX nm dbnm */ |
| 166156 | + 190, /* (289) cmd ::= ANALYZE */ |
| 166157 | + 190, /* (290) cmd ::= ANALYZE nm dbnm */ |
| 166158 | + 190, /* (291) cmd ::= ALTER TABLE fullname RENAME TO nm */ |
| 166159 | + 190, /* (292) cmd ::= ALTER TABLE add_column_fullname ADD kwcolumn_opt columnname carglist */ |
| 166160 | + 190, /* (293) cmd ::= ALTER TABLE fullname DROP kwcolumn_opt nm */ |
| 166161 | + 296, /* (294) add_column_fullname ::= fullname */ |
| 166162 | + 190, /* (295) cmd ::= ALTER TABLE fullname RENAME kwcolumn_opt nm TO nm */ |
| 166163 | + 190, /* (296) cmd ::= create_vtab */ |
| 166164 | + 190, /* (297) cmd ::= create_vtab LP vtabarglist RP */ |
| 166165 | + 298, /* (298) create_vtab ::= createkw VIRTUAL TABLE ifnotexists nm dbnm USING nm */ |
| 166166 | + 300, /* (299) vtabarg ::= */ |
| 166167 | + 301, /* (300) vtabargtoken ::= ANY */ |
| 166168 | + 301, /* (301) vtabargtoken ::= lp anylist RP */ |
| 166169 | + 302, /* (302) lp ::= LP */ |
| 166170 | + 266, /* (303) with ::= WITH wqlist */ |
| 166171 | + 266, /* (304) with ::= WITH RECURSIVE wqlist */ |
| 166172 | + 305, /* (305) wqas ::= AS */ |
| 166173 | + 305, /* (306) wqas ::= AS MATERIALIZED */ |
| 166174 | + 305, /* (307) wqas ::= AS NOT MATERIALIZED */ |
| 166175 | + 304, /* (308) wqitem ::= nm eidlist_opt wqas LP select RP */ |
| 166176 | + 241, /* (309) wqlist ::= wqitem */ |
| 166177 | + 241, /* (310) wqlist ::= wqlist COMMA wqitem */ |
| 166178 | + 306, /* (311) windowdefn_list ::= windowdefn */ |
| 166179 | + 306, /* (312) windowdefn_list ::= windowdefn_list COMMA windowdefn */ |
| 166180 | + 307, /* (313) windowdefn ::= nm AS LP window RP */ |
| 166181 | + 308, /* (314) window ::= PARTITION BY nexprlist orderby_opt frame_opt */ |
| 166182 | + 308, /* (315) window ::= nm PARTITION BY nexprlist orderby_opt frame_opt */ |
| 166183 | + 308, /* (316) window ::= ORDER BY sortlist frame_opt */ |
| 166184 | + 308, /* (317) window ::= nm ORDER BY sortlist frame_opt */ |
| 166185 | + 308, /* (318) window ::= frame_opt */ |
| 166186 | + 308, /* (319) window ::= nm frame_opt */ |
| 166187 | + 309, /* (320) frame_opt ::= */ |
| 166188 | + 309, /* (321) frame_opt ::= range_or_rows frame_bound_s frame_exclude_opt */ |
| 166189 | + 309, /* (322) frame_opt ::= range_or_rows BETWEEN frame_bound_s AND frame_bound_e frame_exclude_opt */ |
| 166190 | + 313, /* (323) range_or_rows ::= RANGE|ROWS|GROUPS */ |
| 166191 | + 315, /* (324) frame_bound_s ::= frame_bound */ |
| 166192 | + 315, /* (325) frame_bound_s ::= UNBOUNDED PRECEDING */ |
| 166193 | + 316, /* (326) frame_bound_e ::= frame_bound */ |
| 166194 | + 316, /* (327) frame_bound_e ::= UNBOUNDED FOLLOWING */ |
| 166195 | + 314, /* (328) frame_bound ::= expr PRECEDING|FOLLOWING */ |
| 166196 | + 314, /* (329) frame_bound ::= CURRENT ROW */ |
| 166197 | + 317, /* (330) frame_exclude_opt ::= */ |
| 166198 | + 317, /* (331) frame_exclude_opt ::= EXCLUDE frame_exclude */ |
| 166199 | + 318, /* (332) frame_exclude ::= NO OTHERS */ |
| 166200 | + 318, /* (333) frame_exclude ::= CURRENT ROW */ |
| 166201 | + 318, /* (334) frame_exclude ::= GROUP|TIES */ |
| 166202 | + 251, /* (335) window_clause ::= WINDOW windowdefn_list */ |
| 166203 | + 273, /* (336) filter_over ::= filter_clause over_clause */ |
| 166204 | + 273, /* (337) filter_over ::= over_clause */ |
| 166205 | + 273, /* (338) filter_over ::= filter_clause */ |
| 166206 | + 312, /* (339) over_clause ::= OVER LP window RP */ |
| 166207 | + 312, /* (340) over_clause ::= OVER nm */ |
| 166208 | + 311, /* (341) filter_clause ::= FILTER LP WHERE expr RP */ |
| 166209 | + 185, /* (342) input ::= cmdlist */ |
| 166210 | + 186, /* (343) cmdlist ::= cmdlist ecmd */ |
| 166211 | + 186, /* (344) cmdlist ::= ecmd */ |
| 166212 | + 187, /* (345) ecmd ::= SEMI */ |
| 166213 | + 187, /* (346) ecmd ::= cmdx SEMI */ |
| 166214 | + 187, /* (347) ecmd ::= explain cmdx SEMI */ |
| 166215 | + 192, /* (348) trans_opt ::= */ |
| 166216 | + 192, /* (349) trans_opt ::= TRANSACTION */ |
| 166217 | + 192, /* (350) trans_opt ::= TRANSACTION nm */ |
| 166218 | + 194, /* (351) savepoint_opt ::= SAVEPOINT */ |
| 166219 | + 194, /* (352) savepoint_opt ::= */ |
| 166220 | + 190, /* (353) cmd ::= create_table create_table_args */ |
| 166221 | + 203, /* (354) table_option_set ::= table_option */ |
| 166222 | + 201, /* (355) columnlist ::= columnlist COMMA columnname carglist */ |
| 166223 | + 201, /* (356) columnlist ::= columnname carglist */ |
| 166224 | + 193, /* (357) nm ::= ID|INDEXED */ |
| 166225 | + 193, /* (358) nm ::= STRING */ |
| 166226 | + 193, /* (359) nm ::= JOIN_KW */ |
| 166227 | + 208, /* (360) typetoken ::= typename */ |
| 166228 | + 209, /* (361) typename ::= ID|STRING */ |
| 166229 | + 210, /* (362) signed ::= plus_num */ |
| 166230 | + 210, /* (363) signed ::= minus_num */ |
| 166231 | + 207, /* (364) carglist ::= carglist ccons */ |
| 166232 | + 207, /* (365) carglist ::= */ |
| 166233 | + 215, /* (366) ccons ::= NULL onconf */ |
| 166234 | + 215, /* (367) ccons ::= GENERATED ALWAYS AS generated */ |
| 166235 | + 215, /* (368) ccons ::= AS generated */ |
| 166236 | + 202, /* (369) conslist_opt ::= COMMA conslist */ |
| 166237 | + 228, /* (370) conslist ::= conslist tconscomma tcons */ |
| 166238 | + 228, /* (371) conslist ::= tcons */ |
| 166239 | + 229, /* (372) tconscomma ::= */ |
| 166240 | + 233, /* (373) defer_subclause_opt ::= defer_subclause */ |
| 166241 | + 235, /* (374) resolvetype ::= raisetype */ |
| 166242 | + 239, /* (375) selectnowith ::= oneselect */ |
| 166243 | + 240, /* (376) oneselect ::= values */ |
| 166244 | + 254, /* (377) sclp ::= selcollist COMMA */ |
| 166245 | + 255, /* (378) as ::= ID|STRING */ |
| 166246 | + 264, /* (379) indexed_opt ::= indexed_by */ |
| 166247 | + 272, /* (380) returning ::= */ |
| 166248 | + 217, /* (381) expr ::= term */ |
| 166249 | + 274, /* (382) likeop ::= LIKE_KW|MATCH */ |
| 166250 | + 261, /* (383) exprlist ::= nexprlist */ |
| 166251 | + 284, /* (384) nmnum ::= plus_num */ |
| 166252 | + 284, /* (385) nmnum ::= nm */ |
| 166253 | + 284, /* (386) nmnum ::= ON */ |
| 166254 | + 284, /* (387) nmnum ::= DELETE */ |
| 166255 | + 284, /* (388) nmnum ::= DEFAULT */ |
| 166256 | + 211, /* (389) plus_num ::= INTEGER|FLOAT */ |
| 166257 | + 289, /* (390) foreach_clause ::= */ |
| 166258 | + 289, /* (391) foreach_clause ::= FOR EACH ROW */ |
| 166259 | + 292, /* (392) trnm ::= nm */ |
| 166260 | + 293, /* (393) tridxby ::= */ |
| 166261 | + 294, /* (394) database_kw_opt ::= DATABASE */ |
| 166262 | + 294, /* (395) database_kw_opt ::= */ |
| 166263 | + 297, /* (396) kwcolumn_opt ::= */ |
| 166264 | + 297, /* (397) kwcolumn_opt ::= COLUMNKW */ |
| 166265 | + 299, /* (398) vtabarglist ::= vtabarg */ |
| 166266 | + 299, /* (399) vtabarglist ::= vtabarglist COMMA vtabarg */ |
| 166267 | + 300, /* (400) vtabarg ::= vtabarg vtabargtoken */ |
| 166268 | + 303, /* (401) anylist ::= */ |
| 166269 | + 303, /* (402) anylist ::= anylist LP anylist RP */ |
| 166270 | + 303, /* (403) anylist ::= anylist ANY */ |
| 166271 | + 266, /* (404) with ::= */ |
| 166278 | 166272 | }; |
| 166279 | 166273 | |
| 166280 | 166274 | /* For rule J, yyRuleInfoNRhs[J] contains the negative of the number |
| 166281 | 166275 | ** of symbols on the right-hand side of that rule. */ |
| 166282 | 166276 | static const signed char yyRuleInfoNRhs[] = { |
| | @@ -166487,204 +166481,206 @@ |
| 166487 | 166481 | -5, /* (204) expr ::= expr likeop expr ESCAPE expr */ |
| 166488 | 166482 | -2, /* (205) expr ::= expr ISNULL|NOTNULL */ |
| 166489 | 166483 | -3, /* (206) expr ::= expr NOT NULL */ |
| 166490 | 166484 | -3, /* (207) expr ::= expr IS expr */ |
| 166491 | 166485 | -4, /* (208) expr ::= expr IS NOT expr */ |
| 166492 | | - -2, /* (209) expr ::= NOT expr */ |
| 166493 | | - -2, /* (210) expr ::= BITNOT expr */ |
| 166494 | | - -2, /* (211) expr ::= PLUS|MINUS expr */ |
| 166495 | | - -3, /* (212) expr ::= expr PTR expr */ |
| 166496 | | - -1, /* (213) between_op ::= BETWEEN */ |
| 166497 | | - -2, /* (214) between_op ::= NOT BETWEEN */ |
| 166498 | | - -5, /* (215) expr ::= expr between_op expr AND expr */ |
| 166499 | | - -1, /* (216) in_op ::= IN */ |
| 166500 | | - -2, /* (217) in_op ::= NOT IN */ |
| 166501 | | - -5, /* (218) expr ::= expr in_op LP exprlist RP */ |
| 166502 | | - -3, /* (219) expr ::= LP select RP */ |
| 166503 | | - -5, /* (220) expr ::= expr in_op LP select RP */ |
| 166504 | | - -5, /* (221) expr ::= expr in_op nm dbnm paren_exprlist */ |
| 166505 | | - -4, /* (222) expr ::= EXISTS LP select RP */ |
| 166506 | | - -5, /* (223) expr ::= CASE case_operand case_exprlist case_else END */ |
| 166507 | | - -5, /* (224) case_exprlist ::= case_exprlist WHEN expr THEN expr */ |
| 166508 | | - -4, /* (225) case_exprlist ::= WHEN expr THEN expr */ |
| 166509 | | - -2, /* (226) case_else ::= ELSE expr */ |
| 166510 | | - 0, /* (227) case_else ::= */ |
| 166511 | | - -1, /* (228) case_operand ::= expr */ |
| 166512 | | - 0, /* (229) case_operand ::= */ |
| 166513 | | - 0, /* (230) exprlist ::= */ |
| 166514 | | - -3, /* (231) nexprlist ::= nexprlist COMMA expr */ |
| 166515 | | - -1, /* (232) nexprlist ::= expr */ |
| 166516 | | - 0, /* (233) paren_exprlist ::= */ |
| 166517 | | - -3, /* (234) paren_exprlist ::= LP exprlist RP */ |
| 166518 | | - -12, /* (235) cmd ::= createkw uniqueflag INDEX ifnotexists nm dbnm ON nm LP sortlist RP where_opt */ |
| 166519 | | - -1, /* (236) uniqueflag ::= UNIQUE */ |
| 166520 | | - 0, /* (237) uniqueflag ::= */ |
| 166521 | | - 0, /* (238) eidlist_opt ::= */ |
| 166522 | | - -3, /* (239) eidlist_opt ::= LP eidlist RP */ |
| 166523 | | - -5, /* (240) eidlist ::= eidlist COMMA nm collate sortorder */ |
| 166524 | | - -3, /* (241) eidlist ::= nm collate sortorder */ |
| 166525 | | - 0, /* (242) collate ::= */ |
| 166526 | | - -2, /* (243) collate ::= COLLATE ID|STRING */ |
| 166527 | | - -4, /* (244) cmd ::= DROP INDEX ifexists fullname */ |
| 166528 | | - -2, /* (245) cmd ::= VACUUM vinto */ |
| 166529 | | - -3, /* (246) cmd ::= VACUUM nm vinto */ |
| 166530 | | - -2, /* (247) vinto ::= INTO expr */ |
| 166531 | | - 0, /* (248) vinto ::= */ |
| 166532 | | - -3, /* (249) cmd ::= PRAGMA nm dbnm */ |
| 166533 | | - -5, /* (250) cmd ::= PRAGMA nm dbnm EQ nmnum */ |
| 166534 | | - -6, /* (251) cmd ::= PRAGMA nm dbnm LP nmnum RP */ |
| 166535 | | - -5, /* (252) cmd ::= PRAGMA nm dbnm EQ minus_num */ |
| 166536 | | - -6, /* (253) cmd ::= PRAGMA nm dbnm LP minus_num RP */ |
| 166537 | | - -2, /* (254) plus_num ::= PLUS INTEGER|FLOAT */ |
| 166538 | | - -2, /* (255) minus_num ::= MINUS INTEGER|FLOAT */ |
| 166539 | | - -5, /* (256) cmd ::= createkw trigger_decl BEGIN trigger_cmd_list END */ |
| 166540 | | - -11, /* (257) trigger_decl ::= temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON fullname foreach_clause when_clause */ |
| 166541 | | - -1, /* (258) trigger_time ::= BEFORE|AFTER */ |
| 166542 | | - -2, /* (259) trigger_time ::= INSTEAD OF */ |
| 166543 | | - 0, /* (260) trigger_time ::= */ |
| 166544 | | - -1, /* (261) trigger_event ::= DELETE|INSERT */ |
| 166545 | | - -1, /* (262) trigger_event ::= UPDATE */ |
| 166546 | | - -3, /* (263) trigger_event ::= UPDATE OF idlist */ |
| 166547 | | - 0, /* (264) when_clause ::= */ |
| 166548 | | - -2, /* (265) when_clause ::= WHEN expr */ |
| 166549 | | - -3, /* (266) trigger_cmd_list ::= trigger_cmd_list trigger_cmd SEMI */ |
| 166550 | | - -2, /* (267) trigger_cmd_list ::= trigger_cmd SEMI */ |
| 166551 | | - -3, /* (268) trnm ::= nm DOT nm */ |
| 166552 | | - -3, /* (269) tridxby ::= INDEXED BY nm */ |
| 166553 | | - -2, /* (270) tridxby ::= NOT INDEXED */ |
| 166554 | | - -9, /* (271) trigger_cmd ::= UPDATE orconf trnm tridxby SET setlist from where_opt scanpt */ |
| 166555 | | - -8, /* (272) trigger_cmd ::= scanpt insert_cmd INTO trnm idlist_opt select upsert scanpt */ |
| 166556 | | - -6, /* (273) trigger_cmd ::= DELETE FROM trnm tridxby where_opt scanpt */ |
| 166557 | | - -3, /* (274) trigger_cmd ::= scanpt select scanpt */ |
| 166558 | | - -4, /* (275) expr ::= RAISE LP IGNORE RP */ |
| 166559 | | - -6, /* (276) expr ::= RAISE LP raisetype COMMA nm RP */ |
| 166560 | | - -1, /* (277) raisetype ::= ROLLBACK */ |
| 166561 | | - -1, /* (278) raisetype ::= ABORT */ |
| 166562 | | - -1, /* (279) raisetype ::= FAIL */ |
| 166563 | | - -4, /* (280) cmd ::= DROP TRIGGER ifexists fullname */ |
| 166564 | | - -6, /* (281) cmd ::= ATTACH database_kw_opt expr AS expr key_opt */ |
| 166565 | | - -3, /* (282) cmd ::= DETACH database_kw_opt expr */ |
| 166566 | | - 0, /* (283) key_opt ::= */ |
| 166567 | | - -2, /* (284) key_opt ::= KEY expr */ |
| 166568 | | - -1, /* (285) cmd ::= REINDEX */ |
| 166569 | | - -3, /* (286) cmd ::= REINDEX nm dbnm */ |
| 166570 | | - -1, /* (287) cmd ::= ANALYZE */ |
| 166571 | | - -3, /* (288) cmd ::= ANALYZE nm dbnm */ |
| 166572 | | - -6, /* (289) cmd ::= ALTER TABLE fullname RENAME TO nm */ |
| 166573 | | - -7, /* (290) cmd ::= ALTER TABLE add_column_fullname ADD kwcolumn_opt columnname carglist */ |
| 166574 | | - -6, /* (291) cmd ::= ALTER TABLE fullname DROP kwcolumn_opt nm */ |
| 166575 | | - -1, /* (292) add_column_fullname ::= fullname */ |
| 166576 | | - -8, /* (293) cmd ::= ALTER TABLE fullname RENAME kwcolumn_opt nm TO nm */ |
| 166577 | | - -1, /* (294) cmd ::= create_vtab */ |
| 166578 | | - -4, /* (295) cmd ::= create_vtab LP vtabarglist RP */ |
| 166579 | | - -8, /* (296) create_vtab ::= createkw VIRTUAL TABLE ifnotexists nm dbnm USING nm */ |
| 166580 | | - 0, /* (297) vtabarg ::= */ |
| 166581 | | - -1, /* (298) vtabargtoken ::= ANY */ |
| 166582 | | - -3, /* (299) vtabargtoken ::= lp anylist RP */ |
| 166583 | | - -1, /* (300) lp ::= LP */ |
| 166584 | | - -2, /* (301) with ::= WITH wqlist */ |
| 166585 | | - -3, /* (302) with ::= WITH RECURSIVE wqlist */ |
| 166586 | | - -1, /* (303) wqas ::= AS */ |
| 166587 | | - -2, /* (304) wqas ::= AS MATERIALIZED */ |
| 166588 | | - -3, /* (305) wqas ::= AS NOT MATERIALIZED */ |
| 166589 | | - -6, /* (306) wqitem ::= nm eidlist_opt wqas LP select RP */ |
| 166590 | | - -1, /* (307) wqlist ::= wqitem */ |
| 166591 | | - -3, /* (308) wqlist ::= wqlist COMMA wqitem */ |
| 166592 | | - -1, /* (309) windowdefn_list ::= windowdefn */ |
| 166593 | | - -3, /* (310) windowdefn_list ::= windowdefn_list COMMA windowdefn */ |
| 166594 | | - -5, /* (311) windowdefn ::= nm AS LP window RP */ |
| 166595 | | - -5, /* (312) window ::= PARTITION BY nexprlist orderby_opt frame_opt */ |
| 166596 | | - -6, /* (313) window ::= nm PARTITION BY nexprlist orderby_opt frame_opt */ |
| 166597 | | - -4, /* (314) window ::= ORDER BY sortlist frame_opt */ |
| 166598 | | - -5, /* (315) window ::= nm ORDER BY sortlist frame_opt */ |
| 166599 | | - -1, /* (316) window ::= frame_opt */ |
| 166600 | | - -2, /* (317) window ::= nm frame_opt */ |
| 166601 | | - 0, /* (318) frame_opt ::= */ |
| 166602 | | - -3, /* (319) frame_opt ::= range_or_rows frame_bound_s frame_exclude_opt */ |
| 166603 | | - -6, /* (320) frame_opt ::= range_or_rows BETWEEN frame_bound_s AND frame_bound_e frame_exclude_opt */ |
| 166604 | | - -1, /* (321) range_or_rows ::= RANGE|ROWS|GROUPS */ |
| 166605 | | - -1, /* (322) frame_bound_s ::= frame_bound */ |
| 166606 | | - -2, /* (323) frame_bound_s ::= UNBOUNDED PRECEDING */ |
| 166607 | | - -1, /* (324) frame_bound_e ::= frame_bound */ |
| 166608 | | - -2, /* (325) frame_bound_e ::= UNBOUNDED FOLLOWING */ |
| 166609 | | - -2, /* (326) frame_bound ::= expr PRECEDING|FOLLOWING */ |
| 166610 | | - -2, /* (327) frame_bound ::= CURRENT ROW */ |
| 166611 | | - 0, /* (328) frame_exclude_opt ::= */ |
| 166612 | | - -2, /* (329) frame_exclude_opt ::= EXCLUDE frame_exclude */ |
| 166613 | | - -2, /* (330) frame_exclude ::= NO OTHERS */ |
| 166614 | | - -2, /* (331) frame_exclude ::= CURRENT ROW */ |
| 166615 | | - -1, /* (332) frame_exclude ::= GROUP|TIES */ |
| 166616 | | - -2, /* (333) window_clause ::= WINDOW windowdefn_list */ |
| 166617 | | - -2, /* (334) filter_over ::= filter_clause over_clause */ |
| 166618 | | - -1, /* (335) filter_over ::= over_clause */ |
| 166619 | | - -1, /* (336) filter_over ::= filter_clause */ |
| 166620 | | - -4, /* (337) over_clause ::= OVER LP window RP */ |
| 166621 | | - -2, /* (338) over_clause ::= OVER nm */ |
| 166622 | | - -5, /* (339) filter_clause ::= FILTER LP WHERE expr RP */ |
| 166623 | | - -1, /* (340) input ::= cmdlist */ |
| 166624 | | - -2, /* (341) cmdlist ::= cmdlist ecmd */ |
| 166625 | | - -1, /* (342) cmdlist ::= ecmd */ |
| 166626 | | - -1, /* (343) ecmd ::= SEMI */ |
| 166627 | | - -2, /* (344) ecmd ::= cmdx SEMI */ |
| 166628 | | - -3, /* (345) ecmd ::= explain cmdx SEMI */ |
| 166629 | | - 0, /* (346) trans_opt ::= */ |
| 166630 | | - -1, /* (347) trans_opt ::= TRANSACTION */ |
| 166631 | | - -2, /* (348) trans_opt ::= TRANSACTION nm */ |
| 166632 | | - -1, /* (349) savepoint_opt ::= SAVEPOINT */ |
| 166633 | | - 0, /* (350) savepoint_opt ::= */ |
| 166634 | | - -2, /* (351) cmd ::= create_table create_table_args */ |
| 166635 | | - -1, /* (352) table_option_set ::= table_option */ |
| 166636 | | - -4, /* (353) columnlist ::= columnlist COMMA columnname carglist */ |
| 166637 | | - -2, /* (354) columnlist ::= columnname carglist */ |
| 166638 | | - -1, /* (355) nm ::= ID|INDEXED */ |
| 166639 | | - -1, /* (356) nm ::= STRING */ |
| 166640 | | - -1, /* (357) nm ::= JOIN_KW */ |
| 166641 | | - -1, /* (358) typetoken ::= typename */ |
| 166642 | | - -1, /* (359) typename ::= ID|STRING */ |
| 166643 | | - -1, /* (360) signed ::= plus_num */ |
| 166644 | | - -1, /* (361) signed ::= minus_num */ |
| 166645 | | - -2, /* (362) carglist ::= carglist ccons */ |
| 166646 | | - 0, /* (363) carglist ::= */ |
| 166647 | | - -2, /* (364) ccons ::= NULL onconf */ |
| 166648 | | - -4, /* (365) ccons ::= GENERATED ALWAYS AS generated */ |
| 166649 | | - -2, /* (366) ccons ::= AS generated */ |
| 166650 | | - -2, /* (367) conslist_opt ::= COMMA conslist */ |
| 166651 | | - -3, /* (368) conslist ::= conslist tconscomma tcons */ |
| 166652 | | - -1, /* (369) conslist ::= tcons */ |
| 166653 | | - 0, /* (370) tconscomma ::= */ |
| 166654 | | - -1, /* (371) defer_subclause_opt ::= defer_subclause */ |
| 166655 | | - -1, /* (372) resolvetype ::= raisetype */ |
| 166656 | | - -1, /* (373) selectnowith ::= oneselect */ |
| 166657 | | - -1, /* (374) oneselect ::= values */ |
| 166658 | | - -2, /* (375) sclp ::= selcollist COMMA */ |
| 166659 | | - -1, /* (376) as ::= ID|STRING */ |
| 166660 | | - -1, /* (377) indexed_opt ::= indexed_by */ |
| 166661 | | - 0, /* (378) returning ::= */ |
| 166662 | | - -1, /* (379) expr ::= term */ |
| 166663 | | - -1, /* (380) likeop ::= LIKE_KW|MATCH */ |
| 166664 | | - -1, /* (381) exprlist ::= nexprlist */ |
| 166665 | | - -1, /* (382) nmnum ::= plus_num */ |
| 166666 | | - -1, /* (383) nmnum ::= nm */ |
| 166667 | | - -1, /* (384) nmnum ::= ON */ |
| 166668 | | - -1, /* (385) nmnum ::= DELETE */ |
| 166669 | | - -1, /* (386) nmnum ::= DEFAULT */ |
| 166670 | | - -1, /* (387) plus_num ::= INTEGER|FLOAT */ |
| 166671 | | - 0, /* (388) foreach_clause ::= */ |
| 166672 | | - -3, /* (389) foreach_clause ::= FOR EACH ROW */ |
| 166673 | | - -1, /* (390) trnm ::= nm */ |
| 166674 | | - 0, /* (391) tridxby ::= */ |
| 166675 | | - -1, /* (392) database_kw_opt ::= DATABASE */ |
| 166676 | | - 0, /* (393) database_kw_opt ::= */ |
| 166677 | | - 0, /* (394) kwcolumn_opt ::= */ |
| 166678 | | - -1, /* (395) kwcolumn_opt ::= COLUMNKW */ |
| 166679 | | - -1, /* (396) vtabarglist ::= vtabarg */ |
| 166680 | | - -3, /* (397) vtabarglist ::= vtabarglist COMMA vtabarg */ |
| 166681 | | - -2, /* (398) vtabarg ::= vtabarg vtabargtoken */ |
| 166682 | | - 0, /* (399) anylist ::= */ |
| 166683 | | - -4, /* (400) anylist ::= anylist LP anylist RP */ |
| 166684 | | - -2, /* (401) anylist ::= anylist ANY */ |
| 166685 | | - 0, /* (402) with ::= */ |
| 166486 | + -6, /* (209) expr ::= expr IS NOT DISTINCT FROM expr */ |
| 166487 | + -5, /* (210) expr ::= expr IS DISTINCT FROM expr */ |
| 166488 | + -2, /* (211) expr ::= NOT expr */ |
| 166489 | + -2, /* (212) expr ::= BITNOT expr */ |
| 166490 | + -2, /* (213) expr ::= PLUS|MINUS expr */ |
| 166491 | + -3, /* (214) expr ::= expr PTR expr */ |
| 166492 | + -1, /* (215) between_op ::= BETWEEN */ |
| 166493 | + -2, /* (216) between_op ::= NOT BETWEEN */ |
| 166494 | + -5, /* (217) expr ::= expr between_op expr AND expr */ |
| 166495 | + -1, /* (218) in_op ::= IN */ |
| 166496 | + -2, /* (219) in_op ::= NOT IN */ |
| 166497 | + -5, /* (220) expr ::= expr in_op LP exprlist RP */ |
| 166498 | + -3, /* (221) expr ::= LP select RP */ |
| 166499 | + -5, /* (222) expr ::= expr in_op LP select RP */ |
| 166500 | + -5, /* (223) expr ::= expr in_op nm dbnm paren_exprlist */ |
| 166501 | + -4, /* (224) expr ::= EXISTS LP select RP */ |
| 166502 | + -5, /* (225) expr ::= CASE case_operand case_exprlist case_else END */ |
| 166503 | + -5, /* (226) case_exprlist ::= case_exprlist WHEN expr THEN expr */ |
| 166504 | + -4, /* (227) case_exprlist ::= WHEN expr THEN expr */ |
| 166505 | + -2, /* (228) case_else ::= ELSE expr */ |
| 166506 | + 0, /* (229) case_else ::= */ |
| 166507 | + -1, /* (230) case_operand ::= expr */ |
| 166508 | + 0, /* (231) case_operand ::= */ |
| 166509 | + 0, /* (232) exprlist ::= */ |
| 166510 | + -3, /* (233) nexprlist ::= nexprlist COMMA expr */ |
| 166511 | + -1, /* (234) nexprlist ::= expr */ |
| 166512 | + 0, /* (235) paren_exprlist ::= */ |
| 166513 | + -3, /* (236) paren_exprlist ::= LP exprlist RP */ |
| 166514 | + -12, /* (237) cmd ::= createkw uniqueflag INDEX ifnotexists nm dbnm ON nm LP sortlist RP where_opt */ |
| 166515 | + -1, /* (238) uniqueflag ::= UNIQUE */ |
| 166516 | + 0, /* (239) uniqueflag ::= */ |
| 166517 | + 0, /* (240) eidlist_opt ::= */ |
| 166518 | + -3, /* (241) eidlist_opt ::= LP eidlist RP */ |
| 166519 | + -5, /* (242) eidlist ::= eidlist COMMA nm collate sortorder */ |
| 166520 | + -3, /* (243) eidlist ::= nm collate sortorder */ |
| 166521 | + 0, /* (244) collate ::= */ |
| 166522 | + -2, /* (245) collate ::= COLLATE ID|STRING */ |
| 166523 | + -4, /* (246) cmd ::= DROP INDEX ifexists fullname */ |
| 166524 | + -2, /* (247) cmd ::= VACUUM vinto */ |
| 166525 | + -3, /* (248) cmd ::= VACUUM nm vinto */ |
| 166526 | + -2, /* (249) vinto ::= INTO expr */ |
| 166527 | + 0, /* (250) vinto ::= */ |
| 166528 | + -3, /* (251) cmd ::= PRAGMA nm dbnm */ |
| 166529 | + -5, /* (252) cmd ::= PRAGMA nm dbnm EQ nmnum */ |
| 166530 | + -6, /* (253) cmd ::= PRAGMA nm dbnm LP nmnum RP */ |
| 166531 | + -5, /* (254) cmd ::= PRAGMA nm dbnm EQ minus_num */ |
| 166532 | + -6, /* (255) cmd ::= PRAGMA nm dbnm LP minus_num RP */ |
| 166533 | + -2, /* (256) plus_num ::= PLUS INTEGER|FLOAT */ |
| 166534 | + -2, /* (257) minus_num ::= MINUS INTEGER|FLOAT */ |
| 166535 | + -5, /* (258) cmd ::= createkw trigger_decl BEGIN trigger_cmd_list END */ |
| 166536 | + -11, /* (259) trigger_decl ::= temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON fullname foreach_clause when_clause */ |
| 166537 | + -1, /* (260) trigger_time ::= BEFORE|AFTER */ |
| 166538 | + -2, /* (261) trigger_time ::= INSTEAD OF */ |
| 166539 | + 0, /* (262) trigger_time ::= */ |
| 166540 | + -1, /* (263) trigger_event ::= DELETE|INSERT */ |
| 166541 | + -1, /* (264) trigger_event ::= UPDATE */ |
| 166542 | + -3, /* (265) trigger_event ::= UPDATE OF idlist */ |
| 166543 | + 0, /* (266) when_clause ::= */ |
| 166544 | + -2, /* (267) when_clause ::= WHEN expr */ |
| 166545 | + -3, /* (268) trigger_cmd_list ::= trigger_cmd_list trigger_cmd SEMI */ |
| 166546 | + -2, /* (269) trigger_cmd_list ::= trigger_cmd SEMI */ |
| 166547 | + -3, /* (270) trnm ::= nm DOT nm */ |
| 166548 | + -3, /* (271) tridxby ::= INDEXED BY nm */ |
| 166549 | + -2, /* (272) tridxby ::= NOT INDEXED */ |
| 166550 | + -9, /* (273) trigger_cmd ::= UPDATE orconf trnm tridxby SET setlist from where_opt scanpt */ |
| 166551 | + -8, /* (274) trigger_cmd ::= scanpt insert_cmd INTO trnm idlist_opt select upsert scanpt */ |
| 166552 | + -6, /* (275) trigger_cmd ::= DELETE FROM trnm tridxby where_opt scanpt */ |
| 166553 | + -3, /* (276) trigger_cmd ::= scanpt select scanpt */ |
| 166554 | + -4, /* (277) expr ::= RAISE LP IGNORE RP */ |
| 166555 | + -6, /* (278) expr ::= RAISE LP raisetype COMMA nm RP */ |
| 166556 | + -1, /* (279) raisetype ::= ROLLBACK */ |
| 166557 | + -1, /* (280) raisetype ::= ABORT */ |
| 166558 | + -1, /* (281) raisetype ::= FAIL */ |
| 166559 | + -4, /* (282) cmd ::= DROP TRIGGER ifexists fullname */ |
| 166560 | + -6, /* (283) cmd ::= ATTACH database_kw_opt expr AS expr key_opt */ |
| 166561 | + -3, /* (284) cmd ::= DETACH database_kw_opt expr */ |
| 166562 | + 0, /* (285) key_opt ::= */ |
| 166563 | + -2, /* (286) key_opt ::= KEY expr */ |
| 166564 | + -1, /* (287) cmd ::= REINDEX */ |
| 166565 | + -3, /* (288) cmd ::= REINDEX nm dbnm */ |
| 166566 | + -1, /* (289) cmd ::= ANALYZE */ |
| 166567 | + -3, /* (290) cmd ::= ANALYZE nm dbnm */ |
| 166568 | + -6, /* (291) cmd ::= ALTER TABLE fullname RENAME TO nm */ |
| 166569 | + -7, /* (292) cmd ::= ALTER TABLE add_column_fullname ADD kwcolumn_opt columnname carglist */ |
| 166570 | + -6, /* (293) cmd ::= ALTER TABLE fullname DROP kwcolumn_opt nm */ |
| 166571 | + -1, /* (294) add_column_fullname ::= fullname */ |
| 166572 | + -8, /* (295) cmd ::= ALTER TABLE fullname RENAME kwcolumn_opt nm TO nm */ |
| 166573 | + -1, /* (296) cmd ::= create_vtab */ |
| 166574 | + -4, /* (297) cmd ::= create_vtab LP vtabarglist RP */ |
| 166575 | + -8, /* (298) create_vtab ::= createkw VIRTUAL TABLE ifnotexists nm dbnm USING nm */ |
| 166576 | + 0, /* (299) vtabarg ::= */ |
| 166577 | + -1, /* (300) vtabargtoken ::= ANY */ |
| 166578 | + -3, /* (301) vtabargtoken ::= lp anylist RP */ |
| 166579 | + -1, /* (302) lp ::= LP */ |
| 166580 | + -2, /* (303) with ::= WITH wqlist */ |
| 166581 | + -3, /* (304) with ::= WITH RECURSIVE wqlist */ |
| 166582 | + -1, /* (305) wqas ::= AS */ |
| 166583 | + -2, /* (306) wqas ::= AS MATERIALIZED */ |
| 166584 | + -3, /* (307) wqas ::= AS NOT MATERIALIZED */ |
| 166585 | + -6, /* (308) wqitem ::= nm eidlist_opt wqas LP select RP */ |
| 166586 | + -1, /* (309) wqlist ::= wqitem */ |
| 166587 | + -3, /* (310) wqlist ::= wqlist COMMA wqitem */ |
| 166588 | + -1, /* (311) windowdefn_list ::= windowdefn */ |
| 166589 | + -3, /* (312) windowdefn_list ::= windowdefn_list COMMA windowdefn */ |
| 166590 | + -5, /* (313) windowdefn ::= nm AS LP window RP */ |
| 166591 | + -5, /* (314) window ::= PARTITION BY nexprlist orderby_opt frame_opt */ |
| 166592 | + -6, /* (315) window ::= nm PARTITION BY nexprlist orderby_opt frame_opt */ |
| 166593 | + -4, /* (316) window ::= ORDER BY sortlist frame_opt */ |
| 166594 | + -5, /* (317) window ::= nm ORDER BY sortlist frame_opt */ |
| 166595 | + -1, /* (318) window ::= frame_opt */ |
| 166596 | + -2, /* (319) window ::= nm frame_opt */ |
| 166597 | + 0, /* (320) frame_opt ::= */ |
| 166598 | + -3, /* (321) frame_opt ::= range_or_rows frame_bound_s frame_exclude_opt */ |
| 166599 | + -6, /* (322) frame_opt ::= range_or_rows BETWEEN frame_bound_s AND frame_bound_e frame_exclude_opt */ |
| 166600 | + -1, /* (323) range_or_rows ::= RANGE|ROWS|GROUPS */ |
| 166601 | + -1, /* (324) frame_bound_s ::= frame_bound */ |
| 166602 | + -2, /* (325) frame_bound_s ::= UNBOUNDED PRECEDING */ |
| 166603 | + -1, /* (326) frame_bound_e ::= frame_bound */ |
| 166604 | + -2, /* (327) frame_bound_e ::= UNBOUNDED FOLLOWING */ |
| 166605 | + -2, /* (328) frame_bound ::= expr PRECEDING|FOLLOWING */ |
| 166606 | + -2, /* (329) frame_bound ::= CURRENT ROW */ |
| 166607 | + 0, /* (330) frame_exclude_opt ::= */ |
| 166608 | + -2, /* (331) frame_exclude_opt ::= EXCLUDE frame_exclude */ |
| 166609 | + -2, /* (332) frame_exclude ::= NO OTHERS */ |
| 166610 | + -2, /* (333) frame_exclude ::= CURRENT ROW */ |
| 166611 | + -1, /* (334) frame_exclude ::= GROUP|TIES */ |
| 166612 | + -2, /* (335) window_clause ::= WINDOW windowdefn_list */ |
| 166613 | + -2, /* (336) filter_over ::= filter_clause over_clause */ |
| 166614 | + -1, /* (337) filter_over ::= over_clause */ |
| 166615 | + -1, /* (338) filter_over ::= filter_clause */ |
| 166616 | + -4, /* (339) over_clause ::= OVER LP window RP */ |
| 166617 | + -2, /* (340) over_clause ::= OVER nm */ |
| 166618 | + -5, /* (341) filter_clause ::= FILTER LP WHERE expr RP */ |
| 166619 | + -1, /* (342) input ::= cmdlist */ |
| 166620 | + -2, /* (343) cmdlist ::= cmdlist ecmd */ |
| 166621 | + -1, /* (344) cmdlist ::= ecmd */ |
| 166622 | + -1, /* (345) ecmd ::= SEMI */ |
| 166623 | + -2, /* (346) ecmd ::= cmdx SEMI */ |
| 166624 | + -3, /* (347) ecmd ::= explain cmdx SEMI */ |
| 166625 | + 0, /* (348) trans_opt ::= */ |
| 166626 | + -1, /* (349) trans_opt ::= TRANSACTION */ |
| 166627 | + -2, /* (350) trans_opt ::= TRANSACTION nm */ |
| 166628 | + -1, /* (351) savepoint_opt ::= SAVEPOINT */ |
| 166629 | + 0, /* (352) savepoint_opt ::= */ |
| 166630 | + -2, /* (353) cmd ::= create_table create_table_args */ |
| 166631 | + -1, /* (354) table_option_set ::= table_option */ |
| 166632 | + -4, /* (355) columnlist ::= columnlist COMMA columnname carglist */ |
| 166633 | + -2, /* (356) columnlist ::= columnname carglist */ |
| 166634 | + -1, /* (357) nm ::= ID|INDEXED */ |
| 166635 | + -1, /* (358) nm ::= STRING */ |
| 166636 | + -1, /* (359) nm ::= JOIN_KW */ |
| 166637 | + -1, /* (360) typetoken ::= typename */ |
| 166638 | + -1, /* (361) typename ::= ID|STRING */ |
| 166639 | + -1, /* (362) signed ::= plus_num */ |
| 166640 | + -1, /* (363) signed ::= minus_num */ |
| 166641 | + -2, /* (364) carglist ::= carglist ccons */ |
| 166642 | + 0, /* (365) carglist ::= */ |
| 166643 | + -2, /* (366) ccons ::= NULL onconf */ |
| 166644 | + -4, /* (367) ccons ::= GENERATED ALWAYS AS generated */ |
| 166645 | + -2, /* (368) ccons ::= AS generated */ |
| 166646 | + -2, /* (369) conslist_opt ::= COMMA conslist */ |
| 166647 | + -3, /* (370) conslist ::= conslist tconscomma tcons */ |
| 166648 | + -1, /* (371) conslist ::= tcons */ |
| 166649 | + 0, /* (372) tconscomma ::= */ |
| 166650 | + -1, /* (373) defer_subclause_opt ::= defer_subclause */ |
| 166651 | + -1, /* (374) resolvetype ::= raisetype */ |
| 166652 | + -1, /* (375) selectnowith ::= oneselect */ |
| 166653 | + -1, /* (376) oneselect ::= values */ |
| 166654 | + -2, /* (377) sclp ::= selcollist COMMA */ |
| 166655 | + -1, /* (378) as ::= ID|STRING */ |
| 166656 | + -1, /* (379) indexed_opt ::= indexed_by */ |
| 166657 | + 0, /* (380) returning ::= */ |
| 166658 | + -1, /* (381) expr ::= term */ |
| 166659 | + -1, /* (382) likeop ::= LIKE_KW|MATCH */ |
| 166660 | + -1, /* (383) exprlist ::= nexprlist */ |
| 166661 | + -1, /* (384) nmnum ::= plus_num */ |
| 166662 | + -1, /* (385) nmnum ::= nm */ |
| 166663 | + -1, /* (386) nmnum ::= ON */ |
| 166664 | + -1, /* (387) nmnum ::= DELETE */ |
| 166665 | + -1, /* (388) nmnum ::= DEFAULT */ |
| 166666 | + -1, /* (389) plus_num ::= INTEGER|FLOAT */ |
| 166667 | + 0, /* (390) foreach_clause ::= */ |
| 166668 | + -3, /* (391) foreach_clause ::= FOR EACH ROW */ |
| 166669 | + -1, /* (392) trnm ::= nm */ |
| 166670 | + 0, /* (393) tridxby ::= */ |
| 166671 | + -1, /* (394) database_kw_opt ::= DATABASE */ |
| 166672 | + 0, /* (395) database_kw_opt ::= */ |
| 166673 | + 0, /* (396) kwcolumn_opt ::= */ |
| 166674 | + -1, /* (397) kwcolumn_opt ::= COLUMNKW */ |
| 166675 | + -1, /* (398) vtabarglist ::= vtabarg */ |
| 166676 | + -3, /* (399) vtabarglist ::= vtabarglist COMMA vtabarg */ |
| 166677 | + -2, /* (400) vtabarg ::= vtabarg vtabargtoken */ |
| 166678 | + 0, /* (401) anylist ::= */ |
| 166679 | + -4, /* (402) anylist ::= anylist LP anylist RP */ |
| 166680 | + -2, /* (403) anylist ::= anylist ANY */ |
| 166681 | + 0, /* (404) with ::= */ |
| 166686 | 166682 | }; |
| 166687 | 166683 | |
| 166688 | 166684 | static void yy_accept(yyParser*); /* Forward Declaration */ |
| 166689 | 166685 | |
| 166690 | 166686 | /* |
| | @@ -166740,11 +166736,11 @@ |
| 166740 | 166736 | {yymsp[1].minor.yy394 = TK_DEFERRED;} |
| 166741 | 166737 | break; |
| 166742 | 166738 | case 5: /* transtype ::= DEFERRED */ |
| 166743 | 166739 | case 6: /* transtype ::= IMMEDIATE */ yytestcase(yyruleno==6); |
| 166744 | 166740 | case 7: /* transtype ::= EXCLUSIVE */ yytestcase(yyruleno==7); |
| 166745 | | - case 321: /* range_or_rows ::= RANGE|ROWS|GROUPS */ yytestcase(yyruleno==321); |
| 166741 | + case 323: /* range_or_rows ::= RANGE|ROWS|GROUPS */ yytestcase(yyruleno==323); |
| 166746 | 166742 | {yymsp[0].minor.yy394 = yymsp[0].major; /*A-overwrites-X*/} |
| 166747 | 166743 | break; |
| 166748 | 166744 | case 8: /* cmd ::= COMMIT|END trans_opt */ |
| 166749 | 166745 | case 9: /* cmd ::= ROLLBACK trans_opt */ yytestcase(yyruleno==9); |
| 166750 | 166746 | {sqlite3EndTransaction(pParse,yymsp[-1].major);} |
| | @@ -166777,11 +166773,11 @@ |
| 166777 | 166773 | case 47: /* autoinc ::= */ yytestcase(yyruleno==47); |
| 166778 | 166774 | case 62: /* init_deferred_pred_opt ::= */ yytestcase(yyruleno==62); |
| 166779 | 166775 | case 72: /* defer_subclause_opt ::= */ yytestcase(yyruleno==72); |
| 166780 | 166776 | case 81: /* ifexists ::= */ yytestcase(yyruleno==81); |
| 166781 | 166777 | case 98: /* distinct ::= */ yytestcase(yyruleno==98); |
| 166782 | | - case 242: /* collate ::= */ yytestcase(yyruleno==242); |
| 166778 | + case 244: /* collate ::= */ yytestcase(yyruleno==244); |
| 166783 | 166779 | {yymsp[1].minor.yy394 = 0;} |
| 166784 | 166780 | break; |
| 166785 | 166781 | case 16: /* ifnotexists ::= IF NOT EXISTS */ |
| 166786 | 166782 | {yymsp[-2].minor.yy394 = 1;} |
| 166787 | 166783 | break; |
| | @@ -166961,13 +166957,13 @@ |
| 166961 | 166957 | case 171: /* insert_cmd ::= INSERT orconf */ yytestcase(yyruleno==171); |
| 166962 | 166958 | {yymsp[-1].minor.yy394 = yymsp[0].minor.yy394;} |
| 166963 | 166959 | break; |
| 166964 | 166960 | case 63: /* init_deferred_pred_opt ::= INITIALLY DEFERRED */ |
| 166965 | 166961 | case 80: /* ifexists ::= IF EXISTS */ yytestcase(yyruleno==80); |
| 166966 | | - case 214: /* between_op ::= NOT BETWEEN */ yytestcase(yyruleno==214); |
| 166967 | | - case 217: /* in_op ::= NOT IN */ yytestcase(yyruleno==217); |
| 166968 | | - case 243: /* collate ::= COLLATE ID|STRING */ yytestcase(yyruleno==243); |
| 166962 | + case 216: /* between_op ::= NOT BETWEEN */ yytestcase(yyruleno==216); |
| 166963 | + case 219: /* in_op ::= NOT IN */ yytestcase(yyruleno==219); |
| 166964 | + case 245: /* collate ::= COLLATE ID|STRING */ yytestcase(yyruleno==245); |
| 166969 | 166965 | {yymsp[-1].minor.yy394 = 1;} |
| 166970 | 166966 | break; |
| 166971 | 166967 | case 64: /* init_deferred_pred_opt ::= INITIALLY IMMEDIATE */ |
| 166972 | 166968 | {yymsp[-1].minor.yy394 = 0;} |
| 166973 | 166969 | break; |
| | @@ -167113,13 +167109,13 @@ |
| 167113 | 167109 | {yymsp[0].minor.yy394 = SF_All;} |
| 167114 | 167110 | break; |
| 167115 | 167111 | case 99: /* sclp ::= */ |
| 167116 | 167112 | case 132: /* orderby_opt ::= */ yytestcase(yyruleno==132); |
| 167117 | 167113 | case 142: /* groupby_opt ::= */ yytestcase(yyruleno==142); |
| 167118 | | - case 230: /* exprlist ::= */ yytestcase(yyruleno==230); |
| 167119 | | - case 233: /* paren_exprlist ::= */ yytestcase(yyruleno==233); |
| 167120 | | - case 238: /* eidlist_opt ::= */ yytestcase(yyruleno==238); |
| 167114 | + case 232: /* exprlist ::= */ yytestcase(yyruleno==232); |
| 167115 | + case 235: /* paren_exprlist ::= */ yytestcase(yyruleno==235); |
| 167116 | + case 240: /* eidlist_opt ::= */ yytestcase(yyruleno==240); |
| 167121 | 167117 | {yymsp[1].minor.yy322 = 0;} |
| 167122 | 167118 | break; |
| 167123 | 167119 | case 100: /* selcollist ::= sclp scanpt expr scanpt as */ |
| 167124 | 167120 | { |
| 167125 | 167121 | yymsp[-4].minor.yy322 = sqlite3ExprListAppend(pParse, yymsp[-4].minor.yy322, yymsp[-2].minor.yy528); |
| | @@ -167141,12 +167137,12 @@ |
| 167141 | 167137 | yymsp[-4].minor.yy322 = sqlite3ExprListAppend(pParse,yymsp[-4].minor.yy322, pDot); |
| 167142 | 167138 | } |
| 167143 | 167139 | break; |
| 167144 | 167140 | case 103: /* as ::= AS nm */ |
| 167145 | 167141 | case 115: /* dbnm ::= DOT nm */ yytestcase(yyruleno==115); |
| 167146 | | - case 254: /* plus_num ::= PLUS INTEGER|FLOAT */ yytestcase(yyruleno==254); |
| 167147 | | - case 255: /* minus_num ::= MINUS INTEGER|FLOAT */ yytestcase(yyruleno==255); |
| 167142 | + case 256: /* plus_num ::= PLUS INTEGER|FLOAT */ yytestcase(yyruleno==256); |
| 167143 | + case 257: /* minus_num ::= MINUS INTEGER|FLOAT */ yytestcase(yyruleno==257); |
| 167148 | 167144 | {yymsp[-1].minor.yy0 = yymsp[0].minor.yy0;} |
| 167149 | 167145 | break; |
| 167150 | 167146 | case 105: /* from ::= */ |
| 167151 | 167147 | case 108: /* stl_prefix ::= */ yytestcase(yyruleno==108); |
| 167152 | 167148 | {yymsp[1].minor.yy131 = 0;} |
| | @@ -167314,20 +167310,20 @@ |
| 167314 | 167310 | break; |
| 167315 | 167311 | case 144: /* having_opt ::= */ |
| 167316 | 167312 | case 146: /* limit_opt ::= */ yytestcase(yyruleno==146); |
| 167317 | 167313 | case 151: /* where_opt ::= */ yytestcase(yyruleno==151); |
| 167318 | 167314 | case 153: /* where_opt_ret ::= */ yytestcase(yyruleno==153); |
| 167319 | | - case 227: /* case_else ::= */ yytestcase(yyruleno==227); |
| 167320 | | - case 229: /* case_operand ::= */ yytestcase(yyruleno==229); |
| 167321 | | - case 248: /* vinto ::= */ yytestcase(yyruleno==248); |
| 167315 | + case 229: /* case_else ::= */ yytestcase(yyruleno==229); |
| 167316 | + case 231: /* case_operand ::= */ yytestcase(yyruleno==231); |
| 167317 | + case 250: /* vinto ::= */ yytestcase(yyruleno==250); |
| 167322 | 167318 | {yymsp[1].minor.yy528 = 0;} |
| 167323 | 167319 | break; |
| 167324 | 167320 | case 145: /* having_opt ::= HAVING expr */ |
| 167325 | 167321 | case 152: /* where_opt ::= WHERE expr */ yytestcase(yyruleno==152); |
| 167326 | 167322 | case 154: /* where_opt_ret ::= WHERE expr */ yytestcase(yyruleno==154); |
| 167327 | | - case 226: /* case_else ::= ELSE expr */ yytestcase(yyruleno==226); |
| 167328 | | - case 247: /* vinto ::= INTO expr */ yytestcase(yyruleno==247); |
| 167323 | + case 228: /* case_else ::= ELSE expr */ yytestcase(yyruleno==228); |
| 167324 | + case 249: /* vinto ::= INTO expr */ yytestcase(yyruleno==249); |
| 167329 | 167325 | {yymsp[-1].minor.yy528 = yymsp[0].minor.yy528;} |
| 167330 | 167326 | break; |
| 167331 | 167327 | case 147: /* limit_opt ::= LIMIT expr */ |
| 167332 | 167328 | {yymsp[-1].minor.yy528 = sqlite3PExpr(pParse,TK_LIMIT,yymsp[0].minor.yy528,0);} |
| 167333 | 167329 | break; |
| | @@ -167597,33 +167593,45 @@ |
| 167597 | 167593 | { |
| 167598 | 167594 | yymsp[-3].minor.yy528 = sqlite3PExpr(pParse,TK_ISNOT,yymsp[-3].minor.yy528,yymsp[0].minor.yy528); |
| 167599 | 167595 | binaryToUnaryIfNull(pParse, yymsp[0].minor.yy528, yymsp[-3].minor.yy528, TK_NOTNULL); |
| 167600 | 167596 | } |
| 167601 | 167597 | break; |
| 167602 | | - case 209: /* expr ::= NOT expr */ |
| 167603 | | - case 210: /* expr ::= BITNOT expr */ yytestcase(yyruleno==210); |
| 167598 | + case 209: /* expr ::= expr IS NOT DISTINCT FROM expr */ |
| 167599 | +{ |
| 167600 | + yymsp[-5].minor.yy528 = sqlite3PExpr(pParse,TK_IS,yymsp[-5].minor.yy528,yymsp[0].minor.yy528); |
| 167601 | + binaryToUnaryIfNull(pParse, yymsp[0].minor.yy528, yymsp[-5].minor.yy528, TK_ISNULL); |
| 167602 | +} |
| 167603 | + break; |
| 167604 | + case 210: /* expr ::= expr IS DISTINCT FROM expr */ |
| 167605 | +{ |
| 167606 | + yymsp[-4].minor.yy528 = sqlite3PExpr(pParse,TK_ISNOT,yymsp[-4].minor.yy528,yymsp[0].minor.yy528); |
| 167607 | + binaryToUnaryIfNull(pParse, yymsp[0].minor.yy528, yymsp[-4].minor.yy528, TK_NOTNULL); |
| 167608 | +} |
| 167609 | + break; |
| 167610 | + case 211: /* expr ::= NOT expr */ |
| 167611 | + case 212: /* expr ::= BITNOT expr */ yytestcase(yyruleno==212); |
| 167604 | 167612 | {yymsp[-1].minor.yy528 = sqlite3PExpr(pParse, yymsp[-1].major, yymsp[0].minor.yy528, 0);/*A-overwrites-B*/} |
| 167605 | 167613 | break; |
| 167606 | | - case 211: /* expr ::= PLUS|MINUS expr */ |
| 167614 | + case 213: /* expr ::= PLUS|MINUS expr */ |
| 167607 | 167615 | { |
| 167608 | 167616 | yymsp[-1].minor.yy528 = sqlite3PExpr(pParse, yymsp[-1].major==TK_PLUS ? TK_UPLUS : TK_UMINUS, yymsp[0].minor.yy528, 0); |
| 167609 | 167617 | /*A-overwrites-B*/ |
| 167610 | 167618 | } |
| 167611 | 167619 | break; |
| 167612 | | - case 212: /* expr ::= expr PTR expr */ |
| 167620 | + case 214: /* expr ::= expr PTR expr */ |
| 167613 | 167621 | { |
| 167614 | 167622 | ExprList *pList = sqlite3ExprListAppend(pParse, 0, yymsp[-2].minor.yy528); |
| 167615 | 167623 | pList = sqlite3ExprListAppend(pParse, pList, yymsp[0].minor.yy528); |
| 167616 | 167624 | yylhsminor.yy528 = sqlite3ExprFunction(pParse, pList, &yymsp[-1].minor.yy0, 0); |
| 167617 | 167625 | } |
| 167618 | 167626 | yymsp[-2].minor.yy528 = yylhsminor.yy528; |
| 167619 | 167627 | break; |
| 167620 | | - case 213: /* between_op ::= BETWEEN */ |
| 167621 | | - case 216: /* in_op ::= IN */ yytestcase(yyruleno==216); |
| 167628 | + case 215: /* between_op ::= BETWEEN */ |
| 167629 | + case 218: /* in_op ::= IN */ yytestcase(yyruleno==218); |
| 167622 | 167630 | {yymsp[0].minor.yy394 = 0;} |
| 167623 | 167631 | break; |
| 167624 | | - case 215: /* expr ::= expr between_op expr AND expr */ |
| 167632 | + case 217: /* expr ::= expr between_op expr AND expr */ |
| 167625 | 167633 | { |
| 167626 | 167634 | ExprList *pList = sqlite3ExprListAppend(pParse,0, yymsp[-2].minor.yy528); |
| 167627 | 167635 | pList = sqlite3ExprListAppend(pParse,pList, yymsp[0].minor.yy528); |
| 167628 | 167636 | yymsp[-4].minor.yy528 = sqlite3PExpr(pParse, TK_BETWEEN, yymsp[-4].minor.yy528, 0); |
| 167629 | 167637 | if( yymsp[-4].minor.yy528 ){ |
| | @@ -167632,11 +167640,11 @@ |
| 167632 | 167640 | sqlite3ExprListDelete(pParse->db, pList); |
| 167633 | 167641 | } |
| 167634 | 167642 | if( yymsp[-3].minor.yy394 ) yymsp[-4].minor.yy528 = sqlite3PExpr(pParse, TK_NOT, yymsp[-4].minor.yy528, 0); |
| 167635 | 167643 | } |
| 167636 | 167644 | break; |
| 167637 | | - case 218: /* expr ::= expr in_op LP exprlist RP */ |
| 167645 | + case 220: /* expr ::= expr in_op LP exprlist RP */ |
| 167638 | 167646 | { |
| 167639 | 167647 | if( yymsp[-1].minor.yy322==0 ){ |
| 167640 | 167648 | /* Expressions of the form |
| 167641 | 167649 | ** |
| 167642 | 167650 | ** expr1 IN () |
| | @@ -167672,41 +167680,41 @@ |
| 167672 | 167680 | } |
| 167673 | 167681 | if( yymsp[-3].minor.yy394 ) yymsp[-4].minor.yy528 = sqlite3PExpr(pParse, TK_NOT, yymsp[-4].minor.yy528, 0); |
| 167674 | 167682 | } |
| 167675 | 167683 | } |
| 167676 | 167684 | break; |
| 167677 | | - case 219: /* expr ::= LP select RP */ |
| 167685 | + case 221: /* expr ::= LP select RP */ |
| 167678 | 167686 | { |
| 167679 | 167687 | yymsp[-2].minor.yy528 = sqlite3PExpr(pParse, TK_SELECT, 0, 0); |
| 167680 | 167688 | sqlite3PExprAddSelect(pParse, yymsp[-2].minor.yy528, yymsp[-1].minor.yy47); |
| 167681 | 167689 | } |
| 167682 | 167690 | break; |
| 167683 | | - case 220: /* expr ::= expr in_op LP select RP */ |
| 167691 | + case 222: /* expr ::= expr in_op LP select RP */ |
| 167684 | 167692 | { |
| 167685 | 167693 | yymsp[-4].minor.yy528 = sqlite3PExpr(pParse, TK_IN, yymsp[-4].minor.yy528, 0); |
| 167686 | 167694 | sqlite3PExprAddSelect(pParse, yymsp[-4].minor.yy528, yymsp[-1].minor.yy47); |
| 167687 | 167695 | if( yymsp[-3].minor.yy394 ) yymsp[-4].minor.yy528 = sqlite3PExpr(pParse, TK_NOT, yymsp[-4].minor.yy528, 0); |
| 167688 | 167696 | } |
| 167689 | 167697 | break; |
| 167690 | | - case 221: /* expr ::= expr in_op nm dbnm paren_exprlist */ |
| 167698 | + case 223: /* expr ::= expr in_op nm dbnm paren_exprlist */ |
| 167691 | 167699 | { |
| 167692 | 167700 | SrcList *pSrc = sqlite3SrcListAppend(pParse, 0,&yymsp[-2].minor.yy0,&yymsp[-1].minor.yy0); |
| 167693 | 167701 | Select *pSelect = sqlite3SelectNew(pParse, 0,pSrc,0,0,0,0,0,0); |
| 167694 | 167702 | if( yymsp[0].minor.yy322 ) sqlite3SrcListFuncArgs(pParse, pSelect ? pSrc : 0, yymsp[0].minor.yy322); |
| 167695 | 167703 | yymsp[-4].minor.yy528 = sqlite3PExpr(pParse, TK_IN, yymsp[-4].minor.yy528, 0); |
| 167696 | 167704 | sqlite3PExprAddSelect(pParse, yymsp[-4].minor.yy528, pSelect); |
| 167697 | 167705 | if( yymsp[-3].minor.yy394 ) yymsp[-4].minor.yy528 = sqlite3PExpr(pParse, TK_NOT, yymsp[-4].minor.yy528, 0); |
| 167698 | 167706 | } |
| 167699 | 167707 | break; |
| 167700 | | - case 222: /* expr ::= EXISTS LP select RP */ |
| 167708 | + case 224: /* expr ::= EXISTS LP select RP */ |
| 167701 | 167709 | { |
| 167702 | 167710 | Expr *p; |
| 167703 | 167711 | p = yymsp[-3].minor.yy528 = sqlite3PExpr(pParse, TK_EXISTS, 0, 0); |
| 167704 | 167712 | sqlite3PExprAddSelect(pParse, p, yymsp[-1].minor.yy47); |
| 167705 | 167713 | } |
| 167706 | 167714 | break; |
| 167707 | | - case 223: /* expr ::= CASE case_operand case_exprlist case_else END */ |
| 167715 | + case 225: /* expr ::= CASE case_operand case_exprlist case_else END */ |
| 167708 | 167716 | { |
| 167709 | 167717 | yymsp[-4].minor.yy528 = sqlite3PExpr(pParse, TK_CASE, yymsp[-3].minor.yy528, 0); |
| 167710 | 167718 | if( yymsp[-4].minor.yy528 ){ |
| 167711 | 167719 | yymsp[-4].minor.yy528->x.pList = yymsp[-1].minor.yy528 ? sqlite3ExprListAppend(pParse,yymsp[-2].minor.yy322,yymsp[-1].minor.yy528) : yymsp[-2].minor.yy322; |
| 167712 | 167720 | sqlite3ExprSetHeightAndFlags(pParse, yymsp[-4].minor.yy528); |
| | @@ -167714,406 +167722,406 @@ |
| 167714 | 167722 | sqlite3ExprListDelete(pParse->db, yymsp[-2].minor.yy322); |
| 167715 | 167723 | sqlite3ExprDelete(pParse->db, yymsp[-1].minor.yy528); |
| 167716 | 167724 | } |
| 167717 | 167725 | } |
| 167718 | 167726 | break; |
| 167719 | | - case 224: /* case_exprlist ::= case_exprlist WHEN expr THEN expr */ |
| 167727 | + case 226: /* case_exprlist ::= case_exprlist WHEN expr THEN expr */ |
| 167720 | 167728 | { |
| 167721 | 167729 | yymsp[-4].minor.yy322 = sqlite3ExprListAppend(pParse,yymsp[-4].minor.yy322, yymsp[-2].minor.yy528); |
| 167722 | 167730 | yymsp[-4].minor.yy322 = sqlite3ExprListAppend(pParse,yymsp[-4].minor.yy322, yymsp[0].minor.yy528); |
| 167723 | 167731 | } |
| 167724 | 167732 | break; |
| 167725 | | - case 225: /* case_exprlist ::= WHEN expr THEN expr */ |
| 167733 | + case 227: /* case_exprlist ::= WHEN expr THEN expr */ |
| 167726 | 167734 | { |
| 167727 | 167735 | yymsp[-3].minor.yy322 = sqlite3ExprListAppend(pParse,0, yymsp[-2].minor.yy528); |
| 167728 | 167736 | yymsp[-3].minor.yy322 = sqlite3ExprListAppend(pParse,yymsp[-3].minor.yy322, yymsp[0].minor.yy528); |
| 167729 | 167737 | } |
| 167730 | 167738 | break; |
| 167731 | | - case 228: /* case_operand ::= expr */ |
| 167739 | + case 230: /* case_operand ::= expr */ |
| 167732 | 167740 | {yymsp[0].minor.yy528 = yymsp[0].minor.yy528; /*A-overwrites-X*/} |
| 167733 | 167741 | break; |
| 167734 | | - case 231: /* nexprlist ::= nexprlist COMMA expr */ |
| 167742 | + case 233: /* nexprlist ::= nexprlist COMMA expr */ |
| 167735 | 167743 | {yymsp[-2].minor.yy322 = sqlite3ExprListAppend(pParse,yymsp[-2].minor.yy322,yymsp[0].minor.yy528);} |
| 167736 | 167744 | break; |
| 167737 | | - case 232: /* nexprlist ::= expr */ |
| 167745 | + case 234: /* nexprlist ::= expr */ |
| 167738 | 167746 | {yymsp[0].minor.yy322 = sqlite3ExprListAppend(pParse,0,yymsp[0].minor.yy528); /*A-overwrites-Y*/} |
| 167739 | 167747 | break; |
| 167740 | | - case 234: /* paren_exprlist ::= LP exprlist RP */ |
| 167741 | | - case 239: /* eidlist_opt ::= LP eidlist RP */ yytestcase(yyruleno==239); |
| 167748 | + case 236: /* paren_exprlist ::= LP exprlist RP */ |
| 167749 | + case 241: /* eidlist_opt ::= LP eidlist RP */ yytestcase(yyruleno==241); |
| 167742 | 167750 | {yymsp[-2].minor.yy322 = yymsp[-1].minor.yy322;} |
| 167743 | 167751 | break; |
| 167744 | | - case 235: /* cmd ::= createkw uniqueflag INDEX ifnotexists nm dbnm ON nm LP sortlist RP where_opt */ |
| 167752 | + case 237: /* cmd ::= createkw uniqueflag INDEX ifnotexists nm dbnm ON nm LP sortlist RP where_opt */ |
| 167745 | 167753 | { |
| 167746 | 167754 | sqlite3CreateIndex(pParse, &yymsp[-7].minor.yy0, &yymsp[-6].minor.yy0, |
| 167747 | 167755 | sqlite3SrcListAppend(pParse,0,&yymsp[-4].minor.yy0,0), yymsp[-2].minor.yy322, yymsp[-10].minor.yy394, |
| 167748 | 167756 | &yymsp[-11].minor.yy0, yymsp[0].minor.yy528, SQLITE_SO_ASC, yymsp[-8].minor.yy394, SQLITE_IDXTYPE_APPDEF); |
| 167749 | 167757 | if( IN_RENAME_OBJECT && pParse->pNewIndex ){ |
| 167750 | 167758 | sqlite3RenameTokenMap(pParse, pParse->pNewIndex->zName, &yymsp[-4].minor.yy0); |
| 167751 | 167759 | } |
| 167752 | 167760 | } |
| 167753 | 167761 | break; |
| 167754 | | - case 236: /* uniqueflag ::= UNIQUE */ |
| 167755 | | - case 278: /* raisetype ::= ABORT */ yytestcase(yyruleno==278); |
| 167762 | + case 238: /* uniqueflag ::= UNIQUE */ |
| 167763 | + case 280: /* raisetype ::= ABORT */ yytestcase(yyruleno==280); |
| 167756 | 167764 | {yymsp[0].minor.yy394 = OE_Abort;} |
| 167757 | 167765 | break; |
| 167758 | | - case 237: /* uniqueflag ::= */ |
| 167766 | + case 239: /* uniqueflag ::= */ |
| 167759 | 167767 | {yymsp[1].minor.yy394 = OE_None;} |
| 167760 | 167768 | break; |
| 167761 | | - case 240: /* eidlist ::= eidlist COMMA nm collate sortorder */ |
| 167769 | + case 242: /* eidlist ::= eidlist COMMA nm collate sortorder */ |
| 167762 | 167770 | { |
| 167763 | 167771 | yymsp[-4].minor.yy322 = parserAddExprIdListTerm(pParse, yymsp[-4].minor.yy322, &yymsp[-2].minor.yy0, yymsp[-1].minor.yy394, yymsp[0].minor.yy394); |
| 167764 | 167772 | } |
| 167765 | 167773 | break; |
| 167766 | | - case 241: /* eidlist ::= nm collate sortorder */ |
| 167774 | + case 243: /* eidlist ::= nm collate sortorder */ |
| 167767 | 167775 | { |
| 167768 | 167776 | yymsp[-2].minor.yy322 = parserAddExprIdListTerm(pParse, 0, &yymsp[-2].minor.yy0, yymsp[-1].minor.yy394, yymsp[0].minor.yy394); /*A-overwrites-Y*/ |
| 167769 | 167777 | } |
| 167770 | 167778 | break; |
| 167771 | | - case 244: /* cmd ::= DROP INDEX ifexists fullname */ |
| 167779 | + case 246: /* cmd ::= DROP INDEX ifexists fullname */ |
| 167772 | 167780 | {sqlite3DropIndex(pParse, yymsp[0].minor.yy131, yymsp[-1].minor.yy394);} |
| 167773 | 167781 | break; |
| 167774 | | - case 245: /* cmd ::= VACUUM vinto */ |
| 167782 | + case 247: /* cmd ::= VACUUM vinto */ |
| 167775 | 167783 | {sqlite3Vacuum(pParse,0,yymsp[0].minor.yy528);} |
| 167776 | 167784 | break; |
| 167777 | | - case 246: /* cmd ::= VACUUM nm vinto */ |
| 167785 | + case 248: /* cmd ::= VACUUM nm vinto */ |
| 167778 | 167786 | {sqlite3Vacuum(pParse,&yymsp[-1].minor.yy0,yymsp[0].minor.yy528);} |
| 167779 | 167787 | break; |
| 167780 | | - case 249: /* cmd ::= PRAGMA nm dbnm */ |
| 167788 | + case 251: /* cmd ::= PRAGMA nm dbnm */ |
| 167781 | 167789 | {sqlite3Pragma(pParse,&yymsp[-1].minor.yy0,&yymsp[0].minor.yy0,0,0);} |
| 167782 | 167790 | break; |
| 167783 | | - case 250: /* cmd ::= PRAGMA nm dbnm EQ nmnum */ |
| 167791 | + case 252: /* cmd ::= PRAGMA nm dbnm EQ nmnum */ |
| 167784 | 167792 | {sqlite3Pragma(pParse,&yymsp[-3].minor.yy0,&yymsp[-2].minor.yy0,&yymsp[0].minor.yy0,0);} |
| 167785 | 167793 | break; |
| 167786 | | - case 251: /* cmd ::= PRAGMA nm dbnm LP nmnum RP */ |
| 167794 | + case 253: /* cmd ::= PRAGMA nm dbnm LP nmnum RP */ |
| 167787 | 167795 | {sqlite3Pragma(pParse,&yymsp[-4].minor.yy0,&yymsp[-3].minor.yy0,&yymsp[-1].minor.yy0,0);} |
| 167788 | 167796 | break; |
| 167789 | | - case 252: /* cmd ::= PRAGMA nm dbnm EQ minus_num */ |
| 167797 | + case 254: /* cmd ::= PRAGMA nm dbnm EQ minus_num */ |
| 167790 | 167798 | {sqlite3Pragma(pParse,&yymsp[-3].minor.yy0,&yymsp[-2].minor.yy0,&yymsp[0].minor.yy0,1);} |
| 167791 | 167799 | break; |
| 167792 | | - case 253: /* cmd ::= PRAGMA nm dbnm LP minus_num RP */ |
| 167800 | + case 255: /* cmd ::= PRAGMA nm dbnm LP minus_num RP */ |
| 167793 | 167801 | {sqlite3Pragma(pParse,&yymsp[-4].minor.yy0,&yymsp[-3].minor.yy0,&yymsp[-1].minor.yy0,1);} |
| 167794 | 167802 | break; |
| 167795 | | - case 256: /* cmd ::= createkw trigger_decl BEGIN trigger_cmd_list END */ |
| 167803 | + case 258: /* cmd ::= createkw trigger_decl BEGIN trigger_cmd_list END */ |
| 167796 | 167804 | { |
| 167797 | 167805 | Token all; |
| 167798 | 167806 | all.z = yymsp[-3].minor.yy0.z; |
| 167799 | 167807 | all.n = (int)(yymsp[0].minor.yy0.z - yymsp[-3].minor.yy0.z) + yymsp[0].minor.yy0.n; |
| 167800 | 167808 | sqlite3FinishTrigger(pParse, yymsp[-1].minor.yy33, &all); |
| 167801 | 167809 | } |
| 167802 | 167810 | break; |
| 167803 | | - case 257: /* trigger_decl ::= temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON fullname foreach_clause when_clause */ |
| 167811 | + case 259: /* trigger_decl ::= temp TRIGGER ifnotexists nm dbnm trigger_time trigger_event ON fullname foreach_clause when_clause */ |
| 167804 | 167812 | { |
| 167805 | 167813 | sqlite3BeginTrigger(pParse, &yymsp[-7].minor.yy0, &yymsp[-6].minor.yy0, yymsp[-5].minor.yy394, yymsp[-4].minor.yy180.a, yymsp[-4].minor.yy180.b, yymsp[-2].minor.yy131, yymsp[0].minor.yy528, yymsp[-10].minor.yy394, yymsp[-8].minor.yy394); |
| 167806 | 167814 | yymsp[-10].minor.yy0 = (yymsp[-6].minor.yy0.n==0?yymsp[-7].minor.yy0:yymsp[-6].minor.yy0); /*A-overwrites-T*/ |
| 167807 | 167815 | } |
| 167808 | 167816 | break; |
| 167809 | | - case 258: /* trigger_time ::= BEFORE|AFTER */ |
| 167817 | + case 260: /* trigger_time ::= BEFORE|AFTER */ |
| 167810 | 167818 | { yymsp[0].minor.yy394 = yymsp[0].major; /*A-overwrites-X*/ } |
| 167811 | 167819 | break; |
| 167812 | | - case 259: /* trigger_time ::= INSTEAD OF */ |
| 167820 | + case 261: /* trigger_time ::= INSTEAD OF */ |
| 167813 | 167821 | { yymsp[-1].minor.yy394 = TK_INSTEAD;} |
| 167814 | 167822 | break; |
| 167815 | | - case 260: /* trigger_time ::= */ |
| 167823 | + case 262: /* trigger_time ::= */ |
| 167816 | 167824 | { yymsp[1].minor.yy394 = TK_BEFORE; } |
| 167817 | 167825 | break; |
| 167818 | | - case 261: /* trigger_event ::= DELETE|INSERT */ |
| 167819 | | - case 262: /* trigger_event ::= UPDATE */ yytestcase(yyruleno==262); |
| 167826 | + case 263: /* trigger_event ::= DELETE|INSERT */ |
| 167827 | + case 264: /* trigger_event ::= UPDATE */ yytestcase(yyruleno==264); |
| 167820 | 167828 | {yymsp[0].minor.yy180.a = yymsp[0].major; /*A-overwrites-X*/ yymsp[0].minor.yy180.b = 0;} |
| 167821 | 167829 | break; |
| 167822 | | - case 263: /* trigger_event ::= UPDATE OF idlist */ |
| 167830 | + case 265: /* trigger_event ::= UPDATE OF idlist */ |
| 167823 | 167831 | {yymsp[-2].minor.yy180.a = TK_UPDATE; yymsp[-2].minor.yy180.b = yymsp[0].minor.yy254;} |
| 167824 | 167832 | break; |
| 167825 | | - case 264: /* when_clause ::= */ |
| 167826 | | - case 283: /* key_opt ::= */ yytestcase(yyruleno==283); |
| 167833 | + case 266: /* when_clause ::= */ |
| 167834 | + case 285: /* key_opt ::= */ yytestcase(yyruleno==285); |
| 167827 | 167835 | { yymsp[1].minor.yy528 = 0; } |
| 167828 | 167836 | break; |
| 167829 | | - case 265: /* when_clause ::= WHEN expr */ |
| 167830 | | - case 284: /* key_opt ::= KEY expr */ yytestcase(yyruleno==284); |
| 167837 | + case 267: /* when_clause ::= WHEN expr */ |
| 167838 | + case 286: /* key_opt ::= KEY expr */ yytestcase(yyruleno==286); |
| 167831 | 167839 | { yymsp[-1].minor.yy528 = yymsp[0].minor.yy528; } |
| 167832 | 167840 | break; |
| 167833 | | - case 266: /* trigger_cmd_list ::= trigger_cmd_list trigger_cmd SEMI */ |
| 167841 | + case 268: /* trigger_cmd_list ::= trigger_cmd_list trigger_cmd SEMI */ |
| 167834 | 167842 | { |
| 167835 | 167843 | assert( yymsp[-2].minor.yy33!=0 ); |
| 167836 | 167844 | yymsp[-2].minor.yy33->pLast->pNext = yymsp[-1].minor.yy33; |
| 167837 | 167845 | yymsp[-2].minor.yy33->pLast = yymsp[-1].minor.yy33; |
| 167838 | 167846 | } |
| 167839 | 167847 | break; |
| 167840 | | - case 267: /* trigger_cmd_list ::= trigger_cmd SEMI */ |
| 167848 | + case 269: /* trigger_cmd_list ::= trigger_cmd SEMI */ |
| 167841 | 167849 | { |
| 167842 | 167850 | assert( yymsp[-1].minor.yy33!=0 ); |
| 167843 | 167851 | yymsp[-1].minor.yy33->pLast = yymsp[-1].minor.yy33; |
| 167844 | 167852 | } |
| 167845 | 167853 | break; |
| 167846 | | - case 268: /* trnm ::= nm DOT nm */ |
| 167854 | + case 270: /* trnm ::= nm DOT nm */ |
| 167847 | 167855 | { |
| 167848 | 167856 | yymsp[-2].minor.yy0 = yymsp[0].minor.yy0; |
| 167849 | 167857 | sqlite3ErrorMsg(pParse, |
| 167850 | 167858 | "qualified table names are not allowed on INSERT, UPDATE, and DELETE " |
| 167851 | 167859 | "statements within triggers"); |
| 167852 | 167860 | } |
| 167853 | 167861 | break; |
| 167854 | | - case 269: /* tridxby ::= INDEXED BY nm */ |
| 167862 | + case 271: /* tridxby ::= INDEXED BY nm */ |
| 167855 | 167863 | { |
| 167856 | 167864 | sqlite3ErrorMsg(pParse, |
| 167857 | 167865 | "the INDEXED BY clause is not allowed on UPDATE or DELETE statements " |
| 167858 | 167866 | "within triggers"); |
| 167859 | 167867 | } |
| 167860 | 167868 | break; |
| 167861 | | - case 270: /* tridxby ::= NOT INDEXED */ |
| 167869 | + case 272: /* tridxby ::= NOT INDEXED */ |
| 167862 | 167870 | { |
| 167863 | 167871 | sqlite3ErrorMsg(pParse, |
| 167864 | 167872 | "the NOT INDEXED clause is not allowed on UPDATE or DELETE statements " |
| 167865 | 167873 | "within triggers"); |
| 167866 | 167874 | } |
| 167867 | 167875 | break; |
| 167868 | | - case 271: /* trigger_cmd ::= UPDATE orconf trnm tridxby SET setlist from where_opt scanpt */ |
| 167876 | + case 273: /* trigger_cmd ::= UPDATE orconf trnm tridxby SET setlist from where_opt scanpt */ |
| 167869 | 167877 | {yylhsminor.yy33 = sqlite3TriggerUpdateStep(pParse, &yymsp[-6].minor.yy0, yymsp[-2].minor.yy131, yymsp[-3].minor.yy322, yymsp[-1].minor.yy528, yymsp[-7].minor.yy394, yymsp[-8].minor.yy0.z, yymsp[0].minor.yy522);} |
| 167870 | 167878 | yymsp[-8].minor.yy33 = yylhsminor.yy33; |
| 167871 | 167879 | break; |
| 167872 | | - case 272: /* trigger_cmd ::= scanpt insert_cmd INTO trnm idlist_opt select upsert scanpt */ |
| 167880 | + case 274: /* trigger_cmd ::= scanpt insert_cmd INTO trnm idlist_opt select upsert scanpt */ |
| 167873 | 167881 | { |
| 167874 | 167882 | yylhsminor.yy33 = sqlite3TriggerInsertStep(pParse,&yymsp[-4].minor.yy0,yymsp[-3].minor.yy254,yymsp[-2].minor.yy47,yymsp[-6].minor.yy394,yymsp[-1].minor.yy444,yymsp[-7].minor.yy522,yymsp[0].minor.yy522);/*yylhsminor.yy33-overwrites-yymsp[-6].minor.yy394*/ |
| 167875 | 167883 | } |
| 167876 | 167884 | yymsp[-7].minor.yy33 = yylhsminor.yy33; |
| 167877 | 167885 | break; |
| 167878 | | - case 273: /* trigger_cmd ::= DELETE FROM trnm tridxby where_opt scanpt */ |
| 167886 | + case 275: /* trigger_cmd ::= DELETE FROM trnm tridxby where_opt scanpt */ |
| 167879 | 167887 | {yylhsminor.yy33 = sqlite3TriggerDeleteStep(pParse, &yymsp[-3].minor.yy0, yymsp[-1].minor.yy528, yymsp[-5].minor.yy0.z, yymsp[0].minor.yy522);} |
| 167880 | 167888 | yymsp[-5].minor.yy33 = yylhsminor.yy33; |
| 167881 | 167889 | break; |
| 167882 | | - case 274: /* trigger_cmd ::= scanpt select scanpt */ |
| 167890 | + case 276: /* trigger_cmd ::= scanpt select scanpt */ |
| 167883 | 167891 | {yylhsminor.yy33 = sqlite3TriggerSelectStep(pParse->db, yymsp[-1].minor.yy47, yymsp[-2].minor.yy522, yymsp[0].minor.yy522); /*yylhsminor.yy33-overwrites-yymsp[-1].minor.yy47*/} |
| 167884 | 167892 | yymsp[-2].minor.yy33 = yylhsminor.yy33; |
| 167885 | 167893 | break; |
| 167886 | | - case 275: /* expr ::= RAISE LP IGNORE RP */ |
| 167894 | + case 277: /* expr ::= RAISE LP IGNORE RP */ |
| 167887 | 167895 | { |
| 167888 | 167896 | yymsp[-3].minor.yy528 = sqlite3PExpr(pParse, TK_RAISE, 0, 0); |
| 167889 | 167897 | if( yymsp[-3].minor.yy528 ){ |
| 167890 | 167898 | yymsp[-3].minor.yy528->affExpr = OE_Ignore; |
| 167891 | 167899 | } |
| 167892 | 167900 | } |
| 167893 | 167901 | break; |
| 167894 | | - case 276: /* expr ::= RAISE LP raisetype COMMA nm RP */ |
| 167902 | + case 278: /* expr ::= RAISE LP raisetype COMMA nm RP */ |
| 167895 | 167903 | { |
| 167896 | 167904 | yymsp[-5].minor.yy528 = sqlite3ExprAlloc(pParse->db, TK_RAISE, &yymsp[-1].minor.yy0, 1); |
| 167897 | 167905 | if( yymsp[-5].minor.yy528 ) { |
| 167898 | 167906 | yymsp[-5].minor.yy528->affExpr = (char)yymsp[-3].minor.yy394; |
| 167899 | 167907 | } |
| 167900 | 167908 | } |
| 167901 | 167909 | break; |
| 167902 | | - case 277: /* raisetype ::= ROLLBACK */ |
| 167910 | + case 279: /* raisetype ::= ROLLBACK */ |
| 167903 | 167911 | {yymsp[0].minor.yy394 = OE_Rollback;} |
| 167904 | 167912 | break; |
| 167905 | | - case 279: /* raisetype ::= FAIL */ |
| 167913 | + case 281: /* raisetype ::= FAIL */ |
| 167906 | 167914 | {yymsp[0].minor.yy394 = OE_Fail;} |
| 167907 | 167915 | break; |
| 167908 | | - case 280: /* cmd ::= DROP TRIGGER ifexists fullname */ |
| 167916 | + case 282: /* cmd ::= DROP TRIGGER ifexists fullname */ |
| 167909 | 167917 | { |
| 167910 | 167918 | sqlite3DropTrigger(pParse,yymsp[0].minor.yy131,yymsp[-1].minor.yy394); |
| 167911 | 167919 | } |
| 167912 | 167920 | break; |
| 167913 | | - case 281: /* cmd ::= ATTACH database_kw_opt expr AS expr key_opt */ |
| 167921 | + case 283: /* cmd ::= ATTACH database_kw_opt expr AS expr key_opt */ |
| 167914 | 167922 | { |
| 167915 | 167923 | sqlite3Attach(pParse, yymsp[-3].minor.yy528, yymsp[-1].minor.yy528, yymsp[0].minor.yy528); |
| 167916 | 167924 | } |
| 167917 | 167925 | break; |
| 167918 | | - case 282: /* cmd ::= DETACH database_kw_opt expr */ |
| 167926 | + case 284: /* cmd ::= DETACH database_kw_opt expr */ |
| 167919 | 167927 | { |
| 167920 | 167928 | sqlite3Detach(pParse, yymsp[0].minor.yy528); |
| 167921 | 167929 | } |
| 167922 | 167930 | break; |
| 167923 | | - case 285: /* cmd ::= REINDEX */ |
| 167931 | + case 287: /* cmd ::= REINDEX */ |
| 167924 | 167932 | {sqlite3Reindex(pParse, 0, 0);} |
| 167925 | 167933 | break; |
| 167926 | | - case 286: /* cmd ::= REINDEX nm dbnm */ |
| 167934 | + case 288: /* cmd ::= REINDEX nm dbnm */ |
| 167927 | 167935 | {sqlite3Reindex(pParse, &yymsp[-1].minor.yy0, &yymsp[0].minor.yy0);} |
| 167928 | 167936 | break; |
| 167929 | | - case 287: /* cmd ::= ANALYZE */ |
| 167937 | + case 289: /* cmd ::= ANALYZE */ |
| 167930 | 167938 | {sqlite3Analyze(pParse, 0, 0);} |
| 167931 | 167939 | break; |
| 167932 | | - case 288: /* cmd ::= ANALYZE nm dbnm */ |
| 167940 | + case 290: /* cmd ::= ANALYZE nm dbnm */ |
| 167933 | 167941 | {sqlite3Analyze(pParse, &yymsp[-1].minor.yy0, &yymsp[0].minor.yy0);} |
| 167934 | 167942 | break; |
| 167935 | | - case 289: /* cmd ::= ALTER TABLE fullname RENAME TO nm */ |
| 167943 | + case 291: /* cmd ::= ALTER TABLE fullname RENAME TO nm */ |
| 167936 | 167944 | { |
| 167937 | 167945 | sqlite3AlterRenameTable(pParse,yymsp[-3].minor.yy131,&yymsp[0].minor.yy0); |
| 167938 | 167946 | } |
| 167939 | 167947 | break; |
| 167940 | | - case 290: /* cmd ::= ALTER TABLE add_column_fullname ADD kwcolumn_opt columnname carglist */ |
| 167948 | + case 292: /* cmd ::= ALTER TABLE add_column_fullname ADD kwcolumn_opt columnname carglist */ |
| 167941 | 167949 | { |
| 167942 | 167950 | yymsp[-1].minor.yy0.n = (int)(pParse->sLastToken.z-yymsp[-1].minor.yy0.z) + pParse->sLastToken.n; |
| 167943 | 167951 | sqlite3AlterFinishAddColumn(pParse, &yymsp[-1].minor.yy0); |
| 167944 | 167952 | } |
| 167945 | 167953 | break; |
| 167946 | | - case 291: /* cmd ::= ALTER TABLE fullname DROP kwcolumn_opt nm */ |
| 167954 | + case 293: /* cmd ::= ALTER TABLE fullname DROP kwcolumn_opt nm */ |
| 167947 | 167955 | { |
| 167948 | 167956 | sqlite3AlterDropColumn(pParse, yymsp[-3].minor.yy131, &yymsp[0].minor.yy0); |
| 167949 | 167957 | } |
| 167950 | 167958 | break; |
| 167951 | | - case 292: /* add_column_fullname ::= fullname */ |
| 167959 | + case 294: /* add_column_fullname ::= fullname */ |
| 167952 | 167960 | { |
| 167953 | 167961 | disableLookaside(pParse); |
| 167954 | 167962 | sqlite3AlterBeginAddColumn(pParse, yymsp[0].minor.yy131); |
| 167955 | 167963 | } |
| 167956 | 167964 | break; |
| 167957 | | - case 293: /* cmd ::= ALTER TABLE fullname RENAME kwcolumn_opt nm TO nm */ |
| 167965 | + case 295: /* cmd ::= ALTER TABLE fullname RENAME kwcolumn_opt nm TO nm */ |
| 167958 | 167966 | { |
| 167959 | 167967 | sqlite3AlterRenameColumn(pParse, yymsp[-5].minor.yy131, &yymsp[-2].minor.yy0, &yymsp[0].minor.yy0); |
| 167960 | 167968 | } |
| 167961 | 167969 | break; |
| 167962 | | - case 294: /* cmd ::= create_vtab */ |
| 167970 | + case 296: /* cmd ::= create_vtab */ |
| 167963 | 167971 | {sqlite3VtabFinishParse(pParse,0);} |
| 167964 | 167972 | break; |
| 167965 | | - case 295: /* cmd ::= create_vtab LP vtabarglist RP */ |
| 167973 | + case 297: /* cmd ::= create_vtab LP vtabarglist RP */ |
| 167966 | 167974 | {sqlite3VtabFinishParse(pParse,&yymsp[0].minor.yy0);} |
| 167967 | 167975 | break; |
| 167968 | | - case 296: /* create_vtab ::= createkw VIRTUAL TABLE ifnotexists nm dbnm USING nm */ |
| 167976 | + case 298: /* create_vtab ::= createkw VIRTUAL TABLE ifnotexists nm dbnm USING nm */ |
| 167969 | 167977 | { |
| 167970 | 167978 | sqlite3VtabBeginParse(pParse, &yymsp[-3].minor.yy0, &yymsp[-2].minor.yy0, &yymsp[0].minor.yy0, yymsp[-4].minor.yy394); |
| 167971 | 167979 | } |
| 167972 | 167980 | break; |
| 167973 | | - case 297: /* vtabarg ::= */ |
| 167981 | + case 299: /* vtabarg ::= */ |
| 167974 | 167982 | {sqlite3VtabArgInit(pParse);} |
| 167975 | 167983 | break; |
| 167976 | | - case 298: /* vtabargtoken ::= ANY */ |
| 167977 | | - case 299: /* vtabargtoken ::= lp anylist RP */ yytestcase(yyruleno==299); |
| 167978 | | - case 300: /* lp ::= LP */ yytestcase(yyruleno==300); |
| 167984 | + case 300: /* vtabargtoken ::= ANY */ |
| 167985 | + case 301: /* vtabargtoken ::= lp anylist RP */ yytestcase(yyruleno==301); |
| 167986 | + case 302: /* lp ::= LP */ yytestcase(yyruleno==302); |
| 167979 | 167987 | {sqlite3VtabArgExtend(pParse,&yymsp[0].minor.yy0);} |
| 167980 | 167988 | break; |
| 167981 | | - case 301: /* with ::= WITH wqlist */ |
| 167982 | | - case 302: /* with ::= WITH RECURSIVE wqlist */ yytestcase(yyruleno==302); |
| 167989 | + case 303: /* with ::= WITH wqlist */ |
| 167990 | + case 304: /* with ::= WITH RECURSIVE wqlist */ yytestcase(yyruleno==304); |
| 167983 | 167991 | { sqlite3WithPush(pParse, yymsp[0].minor.yy521, 1); } |
| 167984 | 167992 | break; |
| 167985 | | - case 303: /* wqas ::= AS */ |
| 167993 | + case 305: /* wqas ::= AS */ |
| 167986 | 167994 | {yymsp[0].minor.yy516 = M10d_Any;} |
| 167987 | 167995 | break; |
| 167988 | | - case 304: /* wqas ::= AS MATERIALIZED */ |
| 167996 | + case 306: /* wqas ::= AS MATERIALIZED */ |
| 167989 | 167997 | {yymsp[-1].minor.yy516 = M10d_Yes;} |
| 167990 | 167998 | break; |
| 167991 | | - case 305: /* wqas ::= AS NOT MATERIALIZED */ |
| 167999 | + case 307: /* wqas ::= AS NOT MATERIALIZED */ |
| 167992 | 168000 | {yymsp[-2].minor.yy516 = M10d_No;} |
| 167993 | 168001 | break; |
| 167994 | | - case 306: /* wqitem ::= nm eidlist_opt wqas LP select RP */ |
| 168002 | + case 308: /* wqitem ::= nm eidlist_opt wqas LP select RP */ |
| 167995 | 168003 | { |
| 167996 | 168004 | yymsp[-5].minor.yy385 = sqlite3CteNew(pParse, &yymsp[-5].minor.yy0, yymsp[-4].minor.yy322, yymsp[-1].minor.yy47, yymsp[-3].minor.yy516); /*A-overwrites-X*/ |
| 167997 | 168005 | } |
| 167998 | 168006 | break; |
| 167999 | | - case 307: /* wqlist ::= wqitem */ |
| 168007 | + case 309: /* wqlist ::= wqitem */ |
| 168000 | 168008 | { |
| 168001 | 168009 | yymsp[0].minor.yy521 = sqlite3WithAdd(pParse, 0, yymsp[0].minor.yy385); /*A-overwrites-X*/ |
| 168002 | 168010 | } |
| 168003 | 168011 | break; |
| 168004 | | - case 308: /* wqlist ::= wqlist COMMA wqitem */ |
| 168012 | + case 310: /* wqlist ::= wqlist COMMA wqitem */ |
| 168005 | 168013 | { |
| 168006 | 168014 | yymsp[-2].minor.yy521 = sqlite3WithAdd(pParse, yymsp[-2].minor.yy521, yymsp[0].minor.yy385); |
| 168007 | 168015 | } |
| 168008 | 168016 | break; |
| 168009 | | - case 309: /* windowdefn_list ::= windowdefn */ |
| 168017 | + case 311: /* windowdefn_list ::= windowdefn */ |
| 168010 | 168018 | { yylhsminor.yy41 = yymsp[0].minor.yy41; } |
| 168011 | 168019 | yymsp[0].minor.yy41 = yylhsminor.yy41; |
| 168012 | 168020 | break; |
| 168013 | | - case 310: /* windowdefn_list ::= windowdefn_list COMMA windowdefn */ |
| 168021 | + case 312: /* windowdefn_list ::= windowdefn_list COMMA windowdefn */ |
| 168014 | 168022 | { |
| 168015 | 168023 | assert( yymsp[0].minor.yy41!=0 ); |
| 168016 | 168024 | sqlite3WindowChain(pParse, yymsp[0].minor.yy41, yymsp[-2].minor.yy41); |
| 168017 | 168025 | yymsp[0].minor.yy41->pNextWin = yymsp[-2].minor.yy41; |
| 168018 | 168026 | yylhsminor.yy41 = yymsp[0].minor.yy41; |
| 168019 | 168027 | } |
| 168020 | 168028 | yymsp[-2].minor.yy41 = yylhsminor.yy41; |
| 168021 | 168029 | break; |
| 168022 | | - case 311: /* windowdefn ::= nm AS LP window RP */ |
| 168030 | + case 313: /* windowdefn ::= nm AS LP window RP */ |
| 168023 | 168031 | { |
| 168024 | 168032 | if( ALWAYS(yymsp[-1].minor.yy41) ){ |
| 168025 | 168033 | yymsp[-1].minor.yy41->zName = sqlite3DbStrNDup(pParse->db, yymsp[-4].minor.yy0.z, yymsp[-4].minor.yy0.n); |
| 168026 | 168034 | } |
| 168027 | 168035 | yylhsminor.yy41 = yymsp[-1].minor.yy41; |
| 168028 | 168036 | } |
| 168029 | 168037 | yymsp[-4].minor.yy41 = yylhsminor.yy41; |
| 168030 | 168038 | break; |
| 168031 | | - case 312: /* window ::= PARTITION BY nexprlist orderby_opt frame_opt */ |
| 168039 | + case 314: /* window ::= PARTITION BY nexprlist orderby_opt frame_opt */ |
| 168032 | 168040 | { |
| 168033 | 168041 | yymsp[-4].minor.yy41 = sqlite3WindowAssemble(pParse, yymsp[0].minor.yy41, yymsp[-2].minor.yy322, yymsp[-1].minor.yy322, 0); |
| 168034 | 168042 | } |
| 168035 | 168043 | break; |
| 168036 | | - case 313: /* window ::= nm PARTITION BY nexprlist orderby_opt frame_opt */ |
| 168044 | + case 315: /* window ::= nm PARTITION BY nexprlist orderby_opt frame_opt */ |
| 168037 | 168045 | { |
| 168038 | 168046 | yylhsminor.yy41 = sqlite3WindowAssemble(pParse, yymsp[0].minor.yy41, yymsp[-2].minor.yy322, yymsp[-1].minor.yy322, &yymsp[-5].minor.yy0); |
| 168039 | 168047 | } |
| 168040 | 168048 | yymsp[-5].minor.yy41 = yylhsminor.yy41; |
| 168041 | 168049 | break; |
| 168042 | | - case 314: /* window ::= ORDER BY sortlist frame_opt */ |
| 168050 | + case 316: /* window ::= ORDER BY sortlist frame_opt */ |
| 168043 | 168051 | { |
| 168044 | 168052 | yymsp[-3].minor.yy41 = sqlite3WindowAssemble(pParse, yymsp[0].minor.yy41, 0, yymsp[-1].minor.yy322, 0); |
| 168045 | 168053 | } |
| 168046 | 168054 | break; |
| 168047 | | - case 315: /* window ::= nm ORDER BY sortlist frame_opt */ |
| 168055 | + case 317: /* window ::= nm ORDER BY sortlist frame_opt */ |
| 168048 | 168056 | { |
| 168049 | 168057 | yylhsminor.yy41 = sqlite3WindowAssemble(pParse, yymsp[0].minor.yy41, 0, yymsp[-1].minor.yy322, &yymsp[-4].minor.yy0); |
| 168050 | 168058 | } |
| 168051 | 168059 | yymsp[-4].minor.yy41 = yylhsminor.yy41; |
| 168052 | 168060 | break; |
| 168053 | | - case 316: /* window ::= frame_opt */ |
| 168054 | | - case 335: /* filter_over ::= over_clause */ yytestcase(yyruleno==335); |
| 168061 | + case 318: /* window ::= frame_opt */ |
| 168062 | + case 337: /* filter_over ::= over_clause */ yytestcase(yyruleno==337); |
| 168055 | 168063 | { |
| 168056 | 168064 | yylhsminor.yy41 = yymsp[0].minor.yy41; |
| 168057 | 168065 | } |
| 168058 | 168066 | yymsp[0].minor.yy41 = yylhsminor.yy41; |
| 168059 | 168067 | break; |
| 168060 | | - case 317: /* window ::= nm frame_opt */ |
| 168068 | + case 319: /* window ::= nm frame_opt */ |
| 168061 | 168069 | { |
| 168062 | 168070 | yylhsminor.yy41 = sqlite3WindowAssemble(pParse, yymsp[0].minor.yy41, 0, 0, &yymsp[-1].minor.yy0); |
| 168063 | 168071 | } |
| 168064 | 168072 | yymsp[-1].minor.yy41 = yylhsminor.yy41; |
| 168065 | 168073 | break; |
| 168066 | | - case 318: /* frame_opt ::= */ |
| 168074 | + case 320: /* frame_opt ::= */ |
| 168067 | 168075 | { |
| 168068 | 168076 | yymsp[1].minor.yy41 = sqlite3WindowAlloc(pParse, 0, TK_UNBOUNDED, 0, TK_CURRENT, 0, 0); |
| 168069 | 168077 | } |
| 168070 | 168078 | break; |
| 168071 | | - case 319: /* frame_opt ::= range_or_rows frame_bound_s frame_exclude_opt */ |
| 168079 | + case 321: /* frame_opt ::= range_or_rows frame_bound_s frame_exclude_opt */ |
| 168072 | 168080 | { |
| 168073 | 168081 | yylhsminor.yy41 = sqlite3WindowAlloc(pParse, yymsp[-2].minor.yy394, yymsp[-1].minor.yy595.eType, yymsp[-1].minor.yy595.pExpr, TK_CURRENT, 0, yymsp[0].minor.yy516); |
| 168074 | 168082 | } |
| 168075 | 168083 | yymsp[-2].minor.yy41 = yylhsminor.yy41; |
| 168076 | 168084 | break; |
| 168077 | | - case 320: /* frame_opt ::= range_or_rows BETWEEN frame_bound_s AND frame_bound_e frame_exclude_opt */ |
| 168085 | + case 322: /* frame_opt ::= range_or_rows BETWEEN frame_bound_s AND frame_bound_e frame_exclude_opt */ |
| 168078 | 168086 | { |
| 168079 | 168087 | yylhsminor.yy41 = sqlite3WindowAlloc(pParse, yymsp[-5].minor.yy394, yymsp[-3].minor.yy595.eType, yymsp[-3].minor.yy595.pExpr, yymsp[-1].minor.yy595.eType, yymsp[-1].minor.yy595.pExpr, yymsp[0].minor.yy516); |
| 168080 | 168088 | } |
| 168081 | 168089 | yymsp[-5].minor.yy41 = yylhsminor.yy41; |
| 168082 | 168090 | break; |
| 168083 | | - case 322: /* frame_bound_s ::= frame_bound */ |
| 168084 | | - case 324: /* frame_bound_e ::= frame_bound */ yytestcase(yyruleno==324); |
| 168091 | + case 324: /* frame_bound_s ::= frame_bound */ |
| 168092 | + case 326: /* frame_bound_e ::= frame_bound */ yytestcase(yyruleno==326); |
| 168085 | 168093 | {yylhsminor.yy595 = yymsp[0].minor.yy595;} |
| 168086 | 168094 | yymsp[0].minor.yy595 = yylhsminor.yy595; |
| 168087 | 168095 | break; |
| 168088 | | - case 323: /* frame_bound_s ::= UNBOUNDED PRECEDING */ |
| 168089 | | - case 325: /* frame_bound_e ::= UNBOUNDED FOLLOWING */ yytestcase(yyruleno==325); |
| 168090 | | - case 327: /* frame_bound ::= CURRENT ROW */ yytestcase(yyruleno==327); |
| 168096 | + case 325: /* frame_bound_s ::= UNBOUNDED PRECEDING */ |
| 168097 | + case 327: /* frame_bound_e ::= UNBOUNDED FOLLOWING */ yytestcase(yyruleno==327); |
| 168098 | + case 329: /* frame_bound ::= CURRENT ROW */ yytestcase(yyruleno==329); |
| 168091 | 168099 | {yylhsminor.yy595.eType = yymsp[-1].major; yylhsminor.yy595.pExpr = 0;} |
| 168092 | 168100 | yymsp[-1].minor.yy595 = yylhsminor.yy595; |
| 168093 | 168101 | break; |
| 168094 | | - case 326: /* frame_bound ::= expr PRECEDING|FOLLOWING */ |
| 168102 | + case 328: /* frame_bound ::= expr PRECEDING|FOLLOWING */ |
| 168095 | 168103 | {yylhsminor.yy595.eType = yymsp[0].major; yylhsminor.yy595.pExpr = yymsp[-1].minor.yy528;} |
| 168096 | 168104 | yymsp[-1].minor.yy595 = yylhsminor.yy595; |
| 168097 | 168105 | break; |
| 168098 | | - case 328: /* frame_exclude_opt ::= */ |
| 168106 | + case 330: /* frame_exclude_opt ::= */ |
| 168099 | 168107 | {yymsp[1].minor.yy516 = 0;} |
| 168100 | 168108 | break; |
| 168101 | | - case 329: /* frame_exclude_opt ::= EXCLUDE frame_exclude */ |
| 168109 | + case 331: /* frame_exclude_opt ::= EXCLUDE frame_exclude */ |
| 168102 | 168110 | {yymsp[-1].minor.yy516 = yymsp[0].minor.yy516;} |
| 168103 | 168111 | break; |
| 168104 | | - case 330: /* frame_exclude ::= NO OTHERS */ |
| 168105 | | - case 331: /* frame_exclude ::= CURRENT ROW */ yytestcase(yyruleno==331); |
| 168112 | + case 332: /* frame_exclude ::= NO OTHERS */ |
| 168113 | + case 333: /* frame_exclude ::= CURRENT ROW */ yytestcase(yyruleno==333); |
| 168106 | 168114 | {yymsp[-1].minor.yy516 = yymsp[-1].major; /*A-overwrites-X*/} |
| 168107 | 168115 | break; |
| 168108 | | - case 332: /* frame_exclude ::= GROUP|TIES */ |
| 168116 | + case 334: /* frame_exclude ::= GROUP|TIES */ |
| 168109 | 168117 | {yymsp[0].minor.yy516 = yymsp[0].major; /*A-overwrites-X*/} |
| 168110 | 168118 | break; |
| 168111 | | - case 333: /* window_clause ::= WINDOW windowdefn_list */ |
| 168119 | + case 335: /* window_clause ::= WINDOW windowdefn_list */ |
| 168112 | 168120 | { yymsp[-1].minor.yy41 = yymsp[0].minor.yy41; } |
| 168113 | 168121 | break; |
| 168114 | | - case 334: /* filter_over ::= filter_clause over_clause */ |
| 168122 | + case 336: /* filter_over ::= filter_clause over_clause */ |
| 168115 | 168123 | { |
| 168116 | 168124 | if( yymsp[0].minor.yy41 ){ |
| 168117 | 168125 | yymsp[0].minor.yy41->pFilter = yymsp[-1].minor.yy528; |
| 168118 | 168126 | }else{ |
| 168119 | 168127 | sqlite3ExprDelete(pParse->db, yymsp[-1].minor.yy528); |
| | @@ -168120,11 +168128,11 @@ |
| 168120 | 168128 | } |
| 168121 | 168129 | yylhsminor.yy41 = yymsp[0].minor.yy41; |
| 168122 | 168130 | } |
| 168123 | 168131 | yymsp[-1].minor.yy41 = yylhsminor.yy41; |
| 168124 | 168132 | break; |
| 168125 | | - case 336: /* filter_over ::= filter_clause */ |
| 168133 | + case 338: /* filter_over ::= filter_clause */ |
| 168126 | 168134 | { |
| 168127 | 168135 | yylhsminor.yy41 = (Window*)sqlite3DbMallocZero(pParse->db, sizeof(Window)); |
| 168128 | 168136 | if( yylhsminor.yy41 ){ |
| 168129 | 168137 | yylhsminor.yy41->eFrmType = TK_FILTER; |
| 168130 | 168138 | yylhsminor.yy41->pFilter = yymsp[0].minor.yy528; |
| | @@ -168132,91 +168140,91 @@ |
| 168132 | 168140 | sqlite3ExprDelete(pParse->db, yymsp[0].minor.yy528); |
| 168133 | 168141 | } |
| 168134 | 168142 | } |
| 168135 | 168143 | yymsp[0].minor.yy41 = yylhsminor.yy41; |
| 168136 | 168144 | break; |
| 168137 | | - case 337: /* over_clause ::= OVER LP window RP */ |
| 168145 | + case 339: /* over_clause ::= OVER LP window RP */ |
| 168138 | 168146 | { |
| 168139 | 168147 | yymsp[-3].minor.yy41 = yymsp[-1].minor.yy41; |
| 168140 | 168148 | assert( yymsp[-3].minor.yy41!=0 ); |
| 168141 | 168149 | } |
| 168142 | 168150 | break; |
| 168143 | | - case 338: /* over_clause ::= OVER nm */ |
| 168151 | + case 340: /* over_clause ::= OVER nm */ |
| 168144 | 168152 | { |
| 168145 | 168153 | yymsp[-1].minor.yy41 = (Window*)sqlite3DbMallocZero(pParse->db, sizeof(Window)); |
| 168146 | 168154 | if( yymsp[-1].minor.yy41 ){ |
| 168147 | 168155 | yymsp[-1].minor.yy41->zName = sqlite3DbStrNDup(pParse->db, yymsp[0].minor.yy0.z, yymsp[0].minor.yy0.n); |
| 168148 | 168156 | } |
| 168149 | 168157 | } |
| 168150 | 168158 | break; |
| 168151 | | - case 339: /* filter_clause ::= FILTER LP WHERE expr RP */ |
| 168159 | + case 341: /* filter_clause ::= FILTER LP WHERE expr RP */ |
| 168152 | 168160 | { yymsp[-4].minor.yy528 = yymsp[-1].minor.yy528; } |
| 168153 | 168161 | break; |
| 168154 | 168162 | default: |
| 168155 | | - /* (340) input ::= cmdlist */ yytestcase(yyruleno==340); |
| 168156 | | - /* (341) cmdlist ::= cmdlist ecmd */ yytestcase(yyruleno==341); |
| 168157 | | - /* (342) cmdlist ::= ecmd (OPTIMIZED OUT) */ assert(yyruleno!=342); |
| 168158 | | - /* (343) ecmd ::= SEMI */ yytestcase(yyruleno==343); |
| 168159 | | - /* (344) ecmd ::= cmdx SEMI */ yytestcase(yyruleno==344); |
| 168160 | | - /* (345) ecmd ::= explain cmdx SEMI (NEVER REDUCES) */ assert(yyruleno!=345); |
| 168161 | | - /* (346) trans_opt ::= */ yytestcase(yyruleno==346); |
| 168162 | | - /* (347) trans_opt ::= TRANSACTION */ yytestcase(yyruleno==347); |
| 168163 | | - /* (348) trans_opt ::= TRANSACTION nm */ yytestcase(yyruleno==348); |
| 168164 | | - /* (349) savepoint_opt ::= SAVEPOINT */ yytestcase(yyruleno==349); |
| 168165 | | - /* (350) savepoint_opt ::= */ yytestcase(yyruleno==350); |
| 168166 | | - /* (351) cmd ::= create_table create_table_args */ yytestcase(yyruleno==351); |
| 168167 | | - /* (352) table_option_set ::= table_option (OPTIMIZED OUT) */ assert(yyruleno!=352); |
| 168168 | | - /* (353) columnlist ::= columnlist COMMA columnname carglist */ yytestcase(yyruleno==353); |
| 168169 | | - /* (354) columnlist ::= columnname carglist */ yytestcase(yyruleno==354); |
| 168170 | | - /* (355) nm ::= ID|INDEXED */ yytestcase(yyruleno==355); |
| 168171 | | - /* (356) nm ::= STRING */ yytestcase(yyruleno==356); |
| 168172 | | - /* (357) nm ::= JOIN_KW */ yytestcase(yyruleno==357); |
| 168173 | | - /* (358) typetoken ::= typename */ yytestcase(yyruleno==358); |
| 168174 | | - /* (359) typename ::= ID|STRING */ yytestcase(yyruleno==359); |
| 168175 | | - /* (360) signed ::= plus_num (OPTIMIZED OUT) */ assert(yyruleno!=360); |
| 168176 | | - /* (361) signed ::= minus_num (OPTIMIZED OUT) */ assert(yyruleno!=361); |
| 168177 | | - /* (362) carglist ::= carglist ccons */ yytestcase(yyruleno==362); |
| 168178 | | - /* (363) carglist ::= */ yytestcase(yyruleno==363); |
| 168179 | | - /* (364) ccons ::= NULL onconf */ yytestcase(yyruleno==364); |
| 168180 | | - /* (365) ccons ::= GENERATED ALWAYS AS generated */ yytestcase(yyruleno==365); |
| 168181 | | - /* (366) ccons ::= AS generated */ yytestcase(yyruleno==366); |
| 168182 | | - /* (367) conslist_opt ::= COMMA conslist */ yytestcase(yyruleno==367); |
| 168183 | | - /* (368) conslist ::= conslist tconscomma tcons */ yytestcase(yyruleno==368); |
| 168184 | | - /* (369) conslist ::= tcons (OPTIMIZED OUT) */ assert(yyruleno!=369); |
| 168185 | | - /* (370) tconscomma ::= */ yytestcase(yyruleno==370); |
| 168186 | | - /* (371) defer_subclause_opt ::= defer_subclause (OPTIMIZED OUT) */ assert(yyruleno!=371); |
| 168187 | | - /* (372) resolvetype ::= raisetype (OPTIMIZED OUT) */ assert(yyruleno!=372); |
| 168188 | | - /* (373) selectnowith ::= oneselect (OPTIMIZED OUT) */ assert(yyruleno!=373); |
| 168189 | | - /* (374) oneselect ::= values */ yytestcase(yyruleno==374); |
| 168190 | | - /* (375) sclp ::= selcollist COMMA */ yytestcase(yyruleno==375); |
| 168191 | | - /* (376) as ::= ID|STRING */ yytestcase(yyruleno==376); |
| 168192 | | - /* (377) indexed_opt ::= indexed_by (OPTIMIZED OUT) */ assert(yyruleno!=377); |
| 168193 | | - /* (378) returning ::= */ yytestcase(yyruleno==378); |
| 168194 | | - /* (379) expr ::= term (OPTIMIZED OUT) */ assert(yyruleno!=379); |
| 168195 | | - /* (380) likeop ::= LIKE_KW|MATCH */ yytestcase(yyruleno==380); |
| 168196 | | - /* (381) exprlist ::= nexprlist */ yytestcase(yyruleno==381); |
| 168197 | | - /* (382) nmnum ::= plus_num (OPTIMIZED OUT) */ assert(yyruleno!=382); |
| 168198 | | - /* (383) nmnum ::= nm (OPTIMIZED OUT) */ assert(yyruleno!=383); |
| 168199 | | - /* (384) nmnum ::= ON */ yytestcase(yyruleno==384); |
| 168200 | | - /* (385) nmnum ::= DELETE */ yytestcase(yyruleno==385); |
| 168201 | | - /* (386) nmnum ::= DEFAULT */ yytestcase(yyruleno==386); |
| 168202 | | - /* (387) plus_num ::= INTEGER|FLOAT */ yytestcase(yyruleno==387); |
| 168203 | | - /* (388) foreach_clause ::= */ yytestcase(yyruleno==388); |
| 168204 | | - /* (389) foreach_clause ::= FOR EACH ROW */ yytestcase(yyruleno==389); |
| 168205 | | - /* (390) trnm ::= nm */ yytestcase(yyruleno==390); |
| 168206 | | - /* (391) tridxby ::= */ yytestcase(yyruleno==391); |
| 168207 | | - /* (392) database_kw_opt ::= DATABASE */ yytestcase(yyruleno==392); |
| 168208 | | - /* (393) database_kw_opt ::= */ yytestcase(yyruleno==393); |
| 168209 | | - /* (394) kwcolumn_opt ::= */ yytestcase(yyruleno==394); |
| 168210 | | - /* (395) kwcolumn_opt ::= COLUMNKW */ yytestcase(yyruleno==395); |
| 168211 | | - /* (396) vtabarglist ::= vtabarg */ yytestcase(yyruleno==396); |
| 168212 | | - /* (397) vtabarglist ::= vtabarglist COMMA vtabarg */ yytestcase(yyruleno==397); |
| 168213 | | - /* (398) vtabarg ::= vtabarg vtabargtoken */ yytestcase(yyruleno==398); |
| 168214 | | - /* (399) anylist ::= */ yytestcase(yyruleno==399); |
| 168215 | | - /* (400) anylist ::= anylist LP anylist RP */ yytestcase(yyruleno==400); |
| 168216 | | - /* (401) anylist ::= anylist ANY */ yytestcase(yyruleno==401); |
| 168217 | | - /* (402) with ::= */ yytestcase(yyruleno==402); |
| 168163 | + /* (342) input ::= cmdlist */ yytestcase(yyruleno==342); |
| 168164 | + /* (343) cmdlist ::= cmdlist ecmd */ yytestcase(yyruleno==343); |
| 168165 | + /* (344) cmdlist ::= ecmd (OPTIMIZED OUT) */ assert(yyruleno!=344); |
| 168166 | + /* (345) ecmd ::= SEMI */ yytestcase(yyruleno==345); |
| 168167 | + /* (346) ecmd ::= cmdx SEMI */ yytestcase(yyruleno==346); |
| 168168 | + /* (347) ecmd ::= explain cmdx SEMI (NEVER REDUCES) */ assert(yyruleno!=347); |
| 168169 | + /* (348) trans_opt ::= */ yytestcase(yyruleno==348); |
| 168170 | + /* (349) trans_opt ::= TRANSACTION */ yytestcase(yyruleno==349); |
| 168171 | + /* (350) trans_opt ::= TRANSACTION nm */ yytestcase(yyruleno==350); |
| 168172 | + /* (351) savepoint_opt ::= SAVEPOINT */ yytestcase(yyruleno==351); |
| 168173 | + /* (352) savepoint_opt ::= */ yytestcase(yyruleno==352); |
| 168174 | + /* (353) cmd ::= create_table create_table_args */ yytestcase(yyruleno==353); |
| 168175 | + /* (354) table_option_set ::= table_option (OPTIMIZED OUT) */ assert(yyruleno!=354); |
| 168176 | + /* (355) columnlist ::= columnlist COMMA columnname carglist */ yytestcase(yyruleno==355); |
| 168177 | + /* (356) columnlist ::= columnname carglist */ yytestcase(yyruleno==356); |
| 168178 | + /* (357) nm ::= ID|INDEXED */ yytestcase(yyruleno==357); |
| 168179 | + /* (358) nm ::= STRING */ yytestcase(yyruleno==358); |
| 168180 | + /* (359) nm ::= JOIN_KW */ yytestcase(yyruleno==359); |
| 168181 | + /* (360) typetoken ::= typename */ yytestcase(yyruleno==360); |
| 168182 | + /* (361) typename ::= ID|STRING */ yytestcase(yyruleno==361); |
| 168183 | + /* (362) signed ::= plus_num (OPTIMIZED OUT) */ assert(yyruleno!=362); |
| 168184 | + /* (363) signed ::= minus_num (OPTIMIZED OUT) */ assert(yyruleno!=363); |
| 168185 | + /* (364) carglist ::= carglist ccons */ yytestcase(yyruleno==364); |
| 168186 | + /* (365) carglist ::= */ yytestcase(yyruleno==365); |
| 168187 | + /* (366) ccons ::= NULL onconf */ yytestcase(yyruleno==366); |
| 168188 | + /* (367) ccons ::= GENERATED ALWAYS AS generated */ yytestcase(yyruleno==367); |
| 168189 | + /* (368) ccons ::= AS generated */ yytestcase(yyruleno==368); |
| 168190 | + /* (369) conslist_opt ::= COMMA conslist */ yytestcase(yyruleno==369); |
| 168191 | + /* (370) conslist ::= conslist tconscomma tcons */ yytestcase(yyruleno==370); |
| 168192 | + /* (371) conslist ::= tcons (OPTIMIZED OUT) */ assert(yyruleno!=371); |
| 168193 | + /* (372) tconscomma ::= */ yytestcase(yyruleno==372); |
| 168194 | + /* (373) defer_subclause_opt ::= defer_subclause (OPTIMIZED OUT) */ assert(yyruleno!=373); |
| 168195 | + /* (374) resolvetype ::= raisetype (OPTIMIZED OUT) */ assert(yyruleno!=374); |
| 168196 | + /* (375) selectnowith ::= oneselect (OPTIMIZED OUT) */ assert(yyruleno!=375); |
| 168197 | + /* (376) oneselect ::= values */ yytestcase(yyruleno==376); |
| 168198 | + /* (377) sclp ::= selcollist COMMA */ yytestcase(yyruleno==377); |
| 168199 | + /* (378) as ::= ID|STRING */ yytestcase(yyruleno==378); |
| 168200 | + /* (379) indexed_opt ::= indexed_by (OPTIMIZED OUT) */ assert(yyruleno!=379); |
| 168201 | + /* (380) returning ::= */ yytestcase(yyruleno==380); |
| 168202 | + /* (381) expr ::= term (OPTIMIZED OUT) */ assert(yyruleno!=381); |
| 168203 | + /* (382) likeop ::= LIKE_KW|MATCH */ yytestcase(yyruleno==382); |
| 168204 | + /* (383) exprlist ::= nexprlist */ yytestcase(yyruleno==383); |
| 168205 | + /* (384) nmnum ::= plus_num (OPTIMIZED OUT) */ assert(yyruleno!=384); |
| 168206 | + /* (385) nmnum ::= nm (OPTIMIZED OUT) */ assert(yyruleno!=385); |
| 168207 | + /* (386) nmnum ::= ON */ yytestcase(yyruleno==386); |
| 168208 | + /* (387) nmnum ::= DELETE */ yytestcase(yyruleno==387); |
| 168209 | + /* (388) nmnum ::= DEFAULT */ yytestcase(yyruleno==388); |
| 168210 | + /* (389) plus_num ::= INTEGER|FLOAT */ yytestcase(yyruleno==389); |
| 168211 | + /* (390) foreach_clause ::= */ yytestcase(yyruleno==390); |
| 168212 | + /* (391) foreach_clause ::= FOR EACH ROW */ yytestcase(yyruleno==391); |
| 168213 | + /* (392) trnm ::= nm */ yytestcase(yyruleno==392); |
| 168214 | + /* (393) tridxby ::= */ yytestcase(yyruleno==393); |
| 168215 | + /* (394) database_kw_opt ::= DATABASE */ yytestcase(yyruleno==394); |
| 168216 | + /* (395) database_kw_opt ::= */ yytestcase(yyruleno==395); |
| 168217 | + /* (396) kwcolumn_opt ::= */ yytestcase(yyruleno==396); |
| 168218 | + /* (397) kwcolumn_opt ::= COLUMNKW */ yytestcase(yyruleno==397); |
| 168219 | + /* (398) vtabarglist ::= vtabarg */ yytestcase(yyruleno==398); |
| 168220 | + /* (399) vtabarglist ::= vtabarglist COMMA vtabarg */ yytestcase(yyruleno==399); |
| 168221 | + /* (400) vtabarg ::= vtabarg vtabargtoken */ yytestcase(yyruleno==400); |
| 168222 | + /* (401) anylist ::= */ yytestcase(yyruleno==401); |
| 168223 | + /* (402) anylist ::= anylist LP anylist RP */ yytestcase(yyruleno==402); |
| 168224 | + /* (403) anylist ::= anylist ANY */ yytestcase(yyruleno==403); |
| 168225 | + /* (404) with ::= */ yytestcase(yyruleno==404); |
| 168218 | 168226 | break; |
| 168219 | 168227 | /********** End reduce actions ************************************************/ |
| 168220 | 168228 | }; |
| 168221 | 168229 | assert( yyruleno<sizeof(yyRuleInfoLhs)/sizeof(yyRuleInfoLhs[0]) ); |
| 168222 | 168230 | yygoto = yyRuleInfoLhs[yyruleno]; |
| | @@ -236295,11 +236303,11 @@ |
| 236295 | 236303 | int nArg, /* Number of args */ |
| 236296 | 236304 | sqlite3_value **apUnused /* Function arguments */ |
| 236297 | 236305 | ){ |
| 236298 | 236306 | assert( nArg==0 ); |
| 236299 | 236307 | UNUSED_PARAM2(nArg, apUnused); |
| 236300 | | - sqlite3_result_text(pCtx, "fts5: 2022-05-10 00:24:01 c6c3115f3a008cf9b0d7c5c812f17e38c8a75a904032c5f05f0bea03a7340527", -1, SQLITE_TRANSIENT); |
| 236308 | + sqlite3_result_text(pCtx, "fts5: 2022-05-14 19:05:13 2277f9ba7087dd993ac0f4007c523aa9cf74dba187f53af03d8c164886726fee", -1, SQLITE_TRANSIENT); |
| 236301 | 236309 | } |
| 236302 | 236310 | |
| 236303 | 236311 | /* |
| 236304 | 236312 | ** Return true if zName is the extension on one of the shadow tables used |
| 236305 | 236313 | ** by this module. |
| 236306 | 236314 | |