Many hyperlinks are disabled.
Use anonymous login
to enable hyperlinks.
Changes In Branch select-wildcard Excluding Merge-Ins
This is equivalent to a diff from 97b0e88c to 41335d88
2016-03-17
| ||
21:06 | Add an API to indicate the percentage progress of an rbu update. (check-in: ffc58d2c user: dan tags: rbu-percent-progress) | |
19:07 | A more compact implementation of the code generator for the IS and IS NOT operators. (check-in: 8607e3ac user: drh tags: trunk) | |
18:41 | An alternative method of encoding the wildcard in "SELECT *". This is an experiment. (Closed-Leaf check-in: 41335d88 user: drh tags: select-wildcard) | |
16:01 | Experimental implementation of the sqlite3_system_errno() interface. (check-in: 6782c87b user: drh tags: sqlite_system_errno) | |
2016-03-16
| ||
21:29 | The prepared statements for some pragmas can now be reused without invoking an automatic reprepare. (check-in: 97b0e88c user: drh tags: trunk) | |
20:44 | Some pragmas can be reused without an automatic reprepare. (Closed-Leaf check-in: db1ce7e1 user: drh tags: reusable-pragma) | |
20:05 | Fix a comment on the freelist_count and data_version pragmas. (check-in: 10a3e2a0 user: drh tags: trunk) | |
Changes to src/expr.c.
︙ | |||
1279 1280 1281 1282 1283 1284 1285 | 1279 1280 1281 1282 1283 1284 1285 1286 1287 1288 1289 1290 1291 1292 1293 1294 | + - + | */ u32 sqlite3ExprListFlags(const ExprList *pList){ int i; u32 m = 0; if( pList ){ for(i=0; i<pList->nExpr; i++){ Expr *pExpr = pList->a[i].pExpr; assert( pExpr!=0 ); |
︙ |
Changes to src/parse.y.
︙ | |||
546 547 548 549 550 551 552 | 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 | - - + + | sclp(A) ::= . {A = 0;} selcollist(A) ::= sclp(A) expr(X) as(Y). { A = sqlite3ExprListAppend(pParse, A, X.pExpr); if( Y.n>0 ) sqlite3ExprListSetName(pParse, A, &Y, 1); sqlite3ExprListSetSpan(pParse,A,&X); } selcollist(A) ::= sclp(A) STAR. { |
︙ |
Changes to src/select.c.
︙ | |||
88 89 90 91 92 93 94 95 96 97 98 99 100 101 | 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 | + + + + + + + + + + | pDest->eDest = (u8)eDest; pDest->iSDParm = iParm; pDest->affSdst = 0; pDest->iSdst = 0; pDest->nSdst = 0; } /* ** Return an expression list that represents the wildcard result set ** of a SELECT. */ ExprList *sqlite3WildcardResultSet(Parse *pParse, ExprList *pPrior){ Expr *p = sqlite3Expr(pParse->db, TK_ASTERISK, 0); if( p ) ExprSetProperty(p, EP_Wildcard); return sqlite3ExprListAppend(pParse, pPrior, p); } /* ** Allocate a new Select structure and return a pointer to that ** structure. */ Select *sqlite3SelectNew( Parse *pParse, /* Parsing context */ |
︙ | |||
113 114 115 116 117 118 119 | 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 | - + - - | Select standin; sqlite3 *db = pParse->db; pNew = sqlite3DbMallocRawNN(db, sizeof(*pNew) ); if( pNew==0 ){ assert( db->mallocFailed ); pNew = &standin; } |
︙ | |||
3948 3949 3950 3951 3952 3953 3954 | 3956 3957 3958 3959 3960 3961 3962 3963 3964 3965 3966 3967 3968 3969 3970 | - + | pNew = sqlite3DbMallocZero(db, sizeof(*pNew) ); if( pNew==0 ) return WRC_Abort; memset(&dummy, 0, sizeof(dummy)); pNewSrc = sqlite3SrcListAppendFromTerm(pParse,0,0,0,&dummy,pNew,0,0); if( pNewSrc==0 ) return WRC_Abort; *pNew = *p; p->pSrc = pNewSrc; |
︙ | |||
4306 4307 4308 4309 4310 4311 4312 | 4314 4315 4316 4317 4318 4319 4320 4321 4322 4323 4324 4325 4326 4327 4328 4329 4330 4331 4332 4333 4334 4335 4336 4337 4338 4339 4340 4341 4342 4343 4344 4345 | - - - - + - - - - - - - - + - - | /* For every "*" that occurs in the column list, insert the names of ** all columns in all tables. And for every TABLE.* insert the names ** of all columns in TABLE. The parser inserted a special expression ** with the TK_ASTERISK operator for each "*" that it found in the column ** list. The following code just has to locate the TK_ASTERISK ** expressions and expand each one to the list of all columns in ** all tables. |
︙ |
Changes to src/sqliteInt.h.
︙ | |||
2253 2254 2255 2256 2257 2258 2259 2260 2261 2262 2263 2264 2265 2266 | 2253 2254 2255 2256 2257 2258 2259 2260 2261 2262 2263 2264 2265 2266 2267 | + | #define EP_MemToken 0x010000 /* Need to sqlite3DbFree() Expr.zToken */ #define EP_NoReduce 0x020000 /* Cannot EXPRDUP_REDUCE this Expr */ #define EP_Unlikely 0x040000 /* unlikely() or likelihood() function */ #define EP_ConstFunc 0x080000 /* A SQLITE_FUNC_CONSTANT or _SLOCHNG function */ #define EP_CanBeNull 0x100000 /* Can be null despite NOT NULL constraint */ #define EP_Subquery 0x200000 /* Tree contains a TK_SELECT operator */ #define EP_Alias 0x400000 /* Is an alias for a result set column */ #define EP_Wildcard 0x800000 /* The "*" or "TABLE.*" of a SELECT result */ /* ** Combinations of two or more EP_* flags */ #define EP_Propagate (EP_Collate|EP_Subquery) /* Propagate these bits up tree */ /* |
︙ | |||
3523 3524 3525 3526 3527 3528 3529 3530 3531 3532 3533 3534 3535 3536 | 3524 3525 3526 3527 3528 3529 3530 3531 3532 3533 3534 3535 3536 3537 3538 | + | void sqlite3SrcListAssignCursors(Parse*, SrcList*); void sqlite3IdListDelete(sqlite3*, IdList*); void sqlite3SrcListDelete(sqlite3*, SrcList*); Index *sqlite3AllocateIndexObject(sqlite3*,i16,int,char**); Index *sqlite3CreateIndex(Parse*,Token*,Token*,SrcList*,ExprList*,int,Token*, Expr*, int, int); void sqlite3DropIndex(Parse*, SrcList*, int); ExprList *sqlite3WildcardResultSet(Parse*,ExprList*); int sqlite3Select(Parse*, Select*, SelectDest*); Select *sqlite3SelectNew(Parse*,ExprList*,SrcList*,Expr*,ExprList*, Expr*,ExprList*,u32,Expr*,Expr*); void sqlite3SelectDelete(sqlite3*, Select*); Table *sqlite3SrcListLookup(Parse*, SrcList*); int sqlite3IsReadOnly(Parse*, Table*, int); void sqlite3OpenTable(Parse*, int iCur, int iDb, Table*, int); |
︙ |