Lines Matching defs:pParse

32 ** be parsed.  Initialize the pParse structure as needed.
34 void sqlite3BeginParse(Parse *pParse, int explainFlag){
35 pParse->explain = (u8)explainFlag;
36 pParse->nVar = 0;
62 Parse *pParse, /* Parsing context */
68 Parse *pToplevel = sqlite3ParseToplevel(pParse);
101 static void codeTableLocks(Parse *pParse){
105 pVdbe = sqlite3GetVdbe(pParse);
108 for(i=0; i<pParse->nTableLock; i++){
109 TableLock *p = &pParse->aTableLock[i];
123 ** VDBE program and resets the pParse structure for the next
129 void sqlite3FinishCoding(Parse *pParse){
133 db = pParse->db;
135 if( pParse->nested ) return;
136 if( pParse->nErr ) return;
141 v = sqlite3GetVdbe(pParse);
142 assert( !pParse->isMultiWrite
143 || sqlite3VdbeAssertMayAbort(v, pParse->mayAbort));
153 if( pParse->cookieGoto>0 ){
156 sqlite3VdbeJumpHere(v, pParse->cookieGoto-1);
158 if( (mask & pParse->cookieMask)==0 ) continue;
160 sqlite3VdbeAddOp2(v,OP_Transaction, iDb, (mask & pParse->writeMask)!=0);
164 iDb, pParse->cookieValue[iDb],
171 for(i=0; i<pParse->nVtabLock; i++){
172 char *vtab = (char *)sqlite3GetVTable(db, pParse->apVtabLock[i]);
175 pParse->nVtabLock = 0;
183 codeTableLocks(pParse);
187 sqlite3AutoincrementBegin(pParse);
190 sqlite3VdbeAddOp2(v, OP_Goto, 0, pParse->cookieGoto);
197 if( v && ALWAYS(pParse->nErr==0) && !db->mallocFailed ){
202 assert( pParse->iCacheLevel==0 ); /* Disables and re-enables match */
205 if( pParse->pAinc!=0 && pParse->nTab==0 ) pParse->nTab = 1;
206 sqlite3VdbeMakeReady(v, pParse->nVar, pParse->nMem,
207 pParse->nTab, pParse->nMaxArg, pParse->explain,
208 pParse->isMultiWrite && pParse->mayAbort);
209 pParse->rc = SQLITE_DONE;
210 pParse->colNamesSet = 0;
212 pParse->rc = SQLITE_ERROR;
214 pParse->nTab = 0;
215 pParse->nMem = 0;
216 pParse->nSet = 0;
217 pParse->nVar = 0;
218 pParse->cookieMask = 0;
219 pParse->cookieGoto = 0;
224 ** code for the SQL statement given onto the end of the pParse context
234 void sqlite3NestedParse(Parse *pParse, const char *zFormat, ...){
238 sqlite3 *db = pParse->db;
242 if( pParse->nErr ) return;
243 assert( pParse->nested<10 ); /* Nesting should only be of limited depth */
250 pParse->nested++;
251 memcpy(saveBuf, &pParse->nVar, SAVE_SZ);
252 memset(&pParse->nVar, 0, SAVE_SZ);
253 sqlite3RunParser(pParse, zSql, &zErrMsg);
256 memcpy(&pParse->nVar, saveBuf, SAVE_SZ);
257 pParse->nested--;
294 ** error message in pParse->zErrMsg.
297 ** routine leaves an error message in pParse->zErrMsg where
301 Parse *pParse, /* context in which to report errors */
309 ** and code in pParse and return NULL. */
310 if( SQLITE_OK!=sqlite3ReadSchema(pParse) ){
314 p = sqlite3FindTable(pParse->db, zName, zDbase);
318 sqlite3ErrorMsg(pParse, "%s: %s.%s", zMsg, zDbase, zName);
320 sqlite3ErrorMsg(pParse, "%s: %s", zMsg, zName);
322 pParse->checkSchema = 1;
664 Parse *pParse, /* Parsing and code generating context */
670 sqlite3 *db = pParse->db;
674 sqlite3ErrorMsg(pParse, "corrupt database");
675 pParse->nErr++;
681 sqlite3ErrorMsg(pParse, "unknown database %T", pName1);
682 pParse->nErr++;
700 int sqlite3CheckObjectName(Parse *pParse, const char *zName){
701 if( !pParse->db->init.busy && pParse->nested==0
702 && (pParse->db->flags & SQLITE_WriteSchema)==0
704 sqlite3ErrorMsg(pParse, "object name reserved for internal use: %s", zName);
720 ** The new table record is initialized and put in pParse->pNewTable.
727 Parse *pParse, /* Parser context */
737 sqlite3 *db = pParse->db;
759 iDb = sqlite3TwoPartName(pParse, pName1, pName2, &pName);
764 sqlite3ErrorMsg(pParse, "temporary table name must be unqualified");
769 pParse->sNameToken = *pName;
772 if( SQLITE_OK!=sqlite3CheckObjectName(pParse, zName) ){
781 if( sqlite3AuthCheck(pParse, SQLITE_INSERT, SCHEMA_TABLE(isTemp), 0, zDb) ){
797 if( !isVirtual && sqlite3AuthCheck(pParse, code, zName, 0, zDb) ){
812 if( SQLITE_OK!=sqlite3ReadSchema(pParse) ){
818 sqlite3ErrorMsg(pParse, "table %T already exists", pName);
821 sqlite3CodeVerifySchema(pParse, iDb);
826 sqlite3ErrorMsg(pParse, "there is already an index named %s", zName);
834 pParse->rc = SQLITE_NOMEM;
835 pParse->nErr++;
843 assert( pParse->pNewTable==0 );
844 pParse->pNewTable = pTable;
851 if( !pParse->nested && strcmp(zName, "sqlite_sequence")==0 ){
865 if( !db->init.busy && (v = sqlite3GetVdbe(pParse))!=0 ){
869 sqlite3BeginWriteOperation(pParse, 0, iDb);
880 reg1 = pParse->regRowid = ++pParse->nMem;
881 reg2 = pParse->regRoot = ++pParse->nMem;
882 reg3 = ++pParse->nMem;
898 ** The rowid for the new entry is left in register pParse->regRowid.
899 ** The root page number of the new table is left in reg pParse->regRoot.
911 sqlite3OpenMasterTable(pParse, iDb);
949 void sqlite3AddColumn(Parse *pParse, Token *pName){
954 sqlite3 *db = pParse->db;
955 if( (p = pParse->pNewTable)==0 ) return;
958 sqlite3ErrorMsg(pParse, "too many columns on %s", p->zName);
966 sqlite3ErrorMsg(pParse, "duplicate column name: %s", z);
998 void sqlite3AddNotNull(Parse *pParse, int onError){
1000 p = pParse->pNewTable;
1075 void sqlite3AddColumnType(Parse *pParse, Token *pType){
1079 p = pParse->pNewTable;
1083 pCol->zType = sqlite3NameFromToken(pParse->db, pType);
1097 void sqlite3AddDefaultValue(Parse *pParse, ExprSpan *pSpan){
1100 sqlite3 *db = pParse->db;
1101 p = pParse->pNewTable;
1105 sqlite3ErrorMsg(pParse, "default value of column [%s] is not constant",
1141 Parse *pParse, /* Parsing context */
1147 Table *pTab = pParse->pNewTable;
1152 sqlite3ErrorMsg(pParse,
1184 sqlite3ErrorMsg(pParse, "AUTOINCREMENT is only allowed on an "
1189 p = sqlite3CreateIndex(pParse, 0, 0, 0, pList, onError, 0, 0, sortOrder, 0);
1197 sqlite3ExprListDelete(pParse->db, pList);
1205 Parse *pParse, /* Parsing context */
1208 sqlite3 *db = pParse->db;
1210 Table *pTab = pParse->pNewTable;
1224 void sqlite3AddCollateType(Parse *pParse, Token *pToken){
1230 if( (p = pParse->pNewTable)==0 ) return;
1232 db = pParse->db;
1236 if( sqlite3LocateCollSeq(pParse, zColl) ){
1267 ** pParse.
1275 CollSeq *sqlite3LocateCollSeq(Parse *pParse, const char *zName){
1276 sqlite3 *db = pParse->db;
1285 sqlite3ErrorMsg(pParse, "no such collation sequence: %s", zName);
1309 void sqlite3ChangeCookie(Parse *pParse, int iDb){
1310 int r1 = sqlite3GetTempReg(pParse);
1311 sqlite3 *db = pParse->db;
1312 Vdbe *v = pParse->pVdbe;
1316 sqlite3ReleaseTempReg(pParse, r1);
1461 Parse *pParse, /* Parse context */
1467 sqlite3 *db = pParse->db;
1473 p = pParse->pNewTable;
1484 SrcList sSrc; /* Fake SrcList for pParse->pNewTable */
1485 NameContext sNC; /* Name context for pParse->pNewTable */
1493 sNC.pParse = pParse;
1525 v = sqlite3GetVdbe(pParse);
1547 ** new table is in register pParse->regRoot.
1562 assert(pParse->nTab==1);
1563 sqlite3VdbeAddOp3(v, OP_OpenWrite, 1, pParse->regRoot, iDb);
1565 pParse->nTab = 2;
1567 sqlite3Select(pParse, pSelect, &dest);
1569 if( pParse->nErr==0 ){
1570 pSelTab = sqlite3ResultSetOfSelect(pParse, pSelect);
1585 n = (int)(pEnd->z - pParse->sNameToken.z) + 1;
1587 "CREATE %s %.*s", zType2, n, pParse->sNameToken.z
1595 sqlite3NestedParse(pParse,
1603 pParse->regRoot,
1605 pParse->regRowid
1608 sqlite3ChangeCookie(pParse, iDb);
1618 sqlite3NestedParse(pParse,
1645 pParse->pNewTable = 0;
1651 const char *zName = (const char *)pParse->sNameToken.z;
1669 Parse *pParse, /* The parsing context */
1684 sqlite3 *db = pParse->db;
1686 if( pParse->nVar>0 ){
1687 sqlite3ErrorMsg(pParse, "parameters are not allowed in views");
1691 sqlite3StartTable(pParse, pName1, pName2, isTemp, 1, 0, noErr);
1692 p = pParse->pNewTable;
1693 if( p==0 || pParse->nErr ){
1697 sqlite3TwoPartName(pParse, pName1, pName2, &pName);
1699 if( sqlite3FixInit(&sFix, pParse, iDb, "view", pName)
1717 sqlite3ViewGetColumnNames(pParse, p);
1723 sEnd = pParse->sLastToken;
1735 sqlite3EndTable(pParse, 0, &sEnd, 0);
1744 ** of errors. If an error is seen leave an error message in pParse->zErrMsg.
1746 int sqlite3ViewGetColumnNames(Parse *pParse, Table *pTable){
1751 sqlite3 *db = pParse->db; /* Database connection for malloc errors */
1757 if( sqlite3VtabCallConnect(pParse, pTable) ){
1785 sqlite3ErrorMsg(pParse, "view %s is circularly defined", pTable->zName);
1801 n = pParse->nTab;
1802 sqlite3SrcListAssignCursors(pParse, pSel->pSrc);
1808 pSelTab = sqlite3ResultSetOfSelect(pParse, pSel);
1811 pSelTab = sqlite3ResultSetOfSelect(pParse, pSel);
1814 pParse->nTab = n;
1907 static void destroyRootPage(Parse *pParse, int iTable, int iDb){
1908 Vdbe *v = sqlite3GetVdbe(pParse);
1909 int r1 = sqlite3GetTempReg(pParse);
1911 sqlite3MayAbort(pParse);
1922 sqlite3NestedParse(pParse,
1924 pParse->db->aDb[iDb].zName, SCHEMA_TABLE(iDb), iTable, r1, r1);
1926 sqlite3ReleaseTempReg(pParse, r1);
1935 static void destroyTable(Parse *pParse, Table *pTab){
1938 int iDb = sqlite3SchemaToIndex(pParse->db, pTab->pSchema);
1939 destroyRootPage(pParse, pTab->tnum, iDb);
1941 destroyRootPage(pParse, pIdx->tnum, iDb);
1980 int iDb = sqlite3SchemaToIndex(pParse->db, pTab->pSchema);
1981 destroyRootPage(pParse, iLargest, iDb);
1992 void sqlite3DropTable(Parse *pParse, SrcList *pName, int isView, int noErr){
1995 sqlite3 *db = pParse->db;
2001 assert( pParse->nErr==0 );
2004 pTab = sqlite3LocateTable(pParse, isView,
2009 if( noErr ) sqlite3CodeVerifyNamedSchema(pParse, pName->a[0].zDatabase);
2018 if( IsVirtual(pTab) && sqlite3ViewGetColumnNames(pParse, pTab) ){
2027 if( sqlite3AuthCheck(pParse, SQLITE_DELETE, zTab, 0, zDb)){
2048 if( sqlite3AuthCheck(pParse, code, pTab->zName, zArg2, zDb) ){
2051 if( sqlite3AuthCheck(pParse, SQLITE_DELETE, pTab->zName, 0, zDb) ){
2057 sqlite3ErrorMsg(pParse, "table %s may not be dropped", pTab->zName);
2066 sqlite3ErrorMsg(pParse, "use DROP TABLE to delete table %s", pTab->zName);
2070 sqlite3ErrorMsg(pParse, "use DROP VIEW to delete view %s", pTab->zName);
2078 v = sqlite3GetVdbe(pParse);
2082 sqlite3BeginWriteOperation(pParse, 1, iDb);
2089 sqlite3FkDropTable(pParse, pName, pTab);
2095 pTrigger = sqlite3TriggerList(pParse, pTab);
2099 sqlite3DropTriggerPtr(pParse, pTrigger);
2110 sqlite3NestedParse(pParse,
2124 sqlite3NestedParse(pParse,
2130 sqlite3NestedParse(pParse,
2136 destroyTable(pParse, pTab);
2146 sqlite3ChangeCookie(pParse, iDb);
2165 ** under construction in the pParse->pNewTable field.
2171 Parse *pParse, /* Parsing context */
2177 sqlite3 *db = pParse->db;
2181 Table *p = pParse->pNewTable;
2193 sqlite3ErrorMsg(pParse, "foreign key on %s"
2200 sqlite3ErrorMsg(pParse,
2238 sqlite3ErrorMsg(pParse,
2291 void sqlite3DeferForeignKey(Parse *pParse, int isDeferred){
2295 if( (pTab = pParse->pNewTable)==0 || (pFKey = pTab->pFKey)==0 ) return;
2312 static void sqlite3RefillIndex(Parse *pParse, Index *pIndex, int memRootPage){
2314 int iTab = pParse->nTab++; /* Btree cursor used for pTab */
2315 int iIdx = pParse->nTab++; /* Btree cursor used for pIndex */
2322 sqlite3 *db = pParse->db; /* The database connection */
2326 if( sqlite3AuthCheck(pParse, SQLITE_REINDEX, pIndex->zName, 0,
2333 sqlite3TableLock(pParse, iDb, pTab->tnum, 1, pTab->zName);
2335 v = sqlite3GetVdbe(pParse);
2343 pKey = sqlite3IndexKeyinfo(pParse, pIndex);
2349 sqlite3OpenTable(pParse, iTab, iDb, pTab, OP_OpenRead);
2351 regRecord = sqlite3GetTempReg(pParse);
2352 regIdxKey = sqlite3GenerateIndexKey(pParse, pIndex, iTab, regRecord, 1);
2369 pParse, OE_Abort, "indexed columns are not unique", P4_STATIC);
2373 sqlite3ReleaseTempReg(pParse, regRecord);
2384 ** UNIQUE constraint. If pTable and pIndex are NULL, use pParse->pNewTable
2385 ** as the table to be indexed. pParse->pNewTable is a table that is
2397 Parse *pParse, /* All information about this parse */
2400 SrcList *pTblName, /* Table to index. Use pParse->pNewTable if 0 */
2417 sqlite3 *db = pParse->db;
2427 assert( pParse->nErr==0 ); /* Never called with prior errors */
2431 if( SQLITE_OK!=sqlite3ReadSchema(pParse) ){
2445 iDb = sqlite3TwoPartName(pParse, pName1, pName2, &pName);
2454 pTab = sqlite3SrcListLookup(pParse, pTblName);
2461 if( sqlite3FixInit(&sFix, pParse, iDb, "index", pName) &&
2468 pTab = sqlite3LocateTable(pParse, 0, pTblName->a[0].zName,
2474 pTab = pParse->pNewTable;
2481 assert( pParse->nErr==0 );
2484 sqlite3ErrorMsg(pParse, "table %s may not be indexed", pTab->zName);
2489 sqlite3ErrorMsg(pParse, "views may not be indexed");
2495 sqlite3ErrorMsg(pParse, "virtual tables may not be indexed");
2516 if( SQLITE_OK!=sqlite3CheckObjectName(pParse, zName) ){
2521 sqlite3ErrorMsg(pParse, "there is already a table named %s", zName);
2527 sqlite3ErrorMsg(pParse, "index %s already exists", zName);
2530 sqlite3CodeVerifySchema(pParse, iDb);
2549 if( sqlite3AuthCheck(pParse, SQLITE_INSERT, SCHEMA_TABLE(iDb), 0, zDb) ){
2554 if( sqlite3AuthCheck(pParse, i, zName, pTab->zName, zDb) ){
2567 pList = sqlite3ExprListAppend(pParse, 0, 0);
2569 sqlite3ExprListSetName(pParse, pList, &nullId, 0);
2647 sqlite3ErrorMsg(pParse, "table %s has no column named %s",
2649 pParse->checkSchema = 1;
2673 if( !db->init.busy && !sqlite3LocateCollSeq(pParse, zColl) ){
2682 if( pTab==pParse->pNewTable ){
2730 sqlite3ErrorMsg(pParse,
2780 int iMem = ++pParse->nMem;
2782 v = sqlite3GetVdbe(pParse);
2788 sqlite3BeginWriteOperation(pParse, 1, iDb);
2809 sqlite3NestedParse(pParse,
2823 sqlite3RefillIndex(pParse, pIndex, iMem);
2824 sqlite3ChangeCookie(pParse, iDb);
2906 void sqlite3DropIndex(Parse *pParse, SrcList *pName, int ifExists){
2909 sqlite3 *db = pParse->db;
2912 assert( pParse->nErr==0 ); /* Never called with prior errors */
2917 if( SQLITE_OK!=sqlite3ReadSchema(pParse) ){
2923 sqlite3ErrorMsg(pParse, "no such index: %S", pName, 0);
2925 sqlite3CodeVerifyNamedSchema(pParse, pName->a[0].zDatabase);
2927 pParse->checkSchema = 1;
2931 sqlite3ErrorMsg(pParse, "index associated with UNIQUE "
2942 if( sqlite3AuthCheck(pParse, SQLITE_DELETE, zTab, 0, zDb) ){
2946 if( sqlite3AuthCheck(pParse, code, pIndex->zName, pTab->zName, zDb) ){
2953 v = sqlite3GetVdbe(pParse);
2955 sqlite3BeginWriteOperation(pParse, 1, iDb);
2956 sqlite3NestedParse(pParse,
2962 sqlite3NestedParse(pParse,
2967 sqlite3ChangeCookie(pParse, iDb);
2968 destroyRootPage(pParse, pIndex->tnum, iDb);
3212 void sqlite3SrcListAssignCursors(Parse *pParse, SrcList *pList){
3215 assert(pList || pParse->db->mallocFailed );
3219 pItem->iCursor = pParse->nTab++;
3221 sqlite3SrcListAssignCursors(pParse, pItem->pSelect->pSrc);
3264 Parse *pParse, /* Parsing context */
3274 sqlite3 *db = pParse->db;
3276 sqlite3ErrorMsg(pParse, "a JOIN clause is required before %s",
3307 void sqlite3SrcListIndexedBy(Parse *pParse, SrcList *p, Token *pIndexedBy){
3317 pItem->zIndex = sqlite3NameFromToken(pParse->db, pIndexedBy);
3350 void sqlite3BeginTransaction(Parse *pParse, int type){
3355 assert( pParse!=0 );
3356 db = pParse->db;
3359 if( sqlite3AuthCheck(pParse, SQLITE_TRANSACTION, "BEGIN", 0, 0) ){
3362 v = sqlite3GetVdbe(pParse);
3376 void sqlite3CommitTransaction(Parse *pParse){
3380 assert( pParse!=0 );
3381 db = pParse->db;
3384 if( sqlite3AuthCheck(pParse, SQLITE_TRANSACTION, "COMMIT", 0, 0) ){
3387 v = sqlite3GetVdbe(pParse);
3396 void sqlite3RollbackTransaction(Parse *pParse){
3400 assert( pParse!=0 );
3401 db = pParse->db;
3404 if( sqlite3AuthCheck(pParse, SQLITE_TRANSACTION, "ROLLBACK", 0, 0) ){
3407 v = sqlite3GetVdbe(pParse);
3417 void sqlite3Savepoint(Parse *pParse, int op, Token *pName){
3418 char *zName = sqlite3NameFromToken(pParse->db, pName);
3420 Vdbe *v = sqlite3GetVdbe(pParse);
3425 if( !v || sqlite3AuthCheck(pParse, SQLITE_SAVEPOINT, az[op], zName, 0) ){
3426 sqlite3DbFree(pParse->db, zName);
3435 ** the number of errors. Leave any error messages in the pParse structure.
3437 int sqlite3OpenTempDatabase(Parse *pParse){
3438 sqlite3 *db = pParse->db;
3439 if( db->aDb[1].pBt==0 && !pParse->explain ){
3451 sqlite3ErrorMsg(pParse, "unable to open a temporary database "
3453 pParse->rc = rc;
3478 ** pParse->cookieMask field. Later, after all other code has been
3488 void sqlite3CodeVerifySchema(Parse *pParse, int iDb){
3489 Parse *pToplevel = sqlite3ParseToplevel(pParse);
3519 void sqlite3CodeVerifyNamedSchema(Parse *pParse, const char *zDb){
3520 sqlite3 *db = pParse->db;
3525 sqlite3CodeVerifySchema(pParse, i);
3543 void sqlite3BeginWriteOperation(Parse *pParse, int setStatement, int iDb){
3544 Parse *pToplevel = sqlite3ParseToplevel(pParse);
3545 sqlite3CodeVerifySchema(pParse, iDb);
3557 void sqlite3MultiWrite(Parse *pParse){
3558 Parse *pToplevel = sqlite3ParseToplevel(pParse);
3578 void sqlite3MayAbort(Parse *pParse){
3579 Parse *pToplevel = sqlite3ParseToplevel(pParse);
3588 void sqlite3HaltConstraint(Parse *pParse, int onError, char *p4, int p4type){
3589 Vdbe *v = sqlite3GetVdbe(pParse);
3591 sqlite3MayAbort(pParse);
3620 static void reindexTable(Parse *pParse, Table *pTab, char const *zColl){
3625 int iDb = sqlite3SchemaToIndex(pParse->db, pTab->pSchema);
3626 sqlite3BeginWriteOperation(pParse, 0, iDb);
3627 sqlite3RefillIndex(pParse, pIndex, -1);
3639 static void reindexDatabases(Parse *pParse, char const *zColl){
3642 sqlite3 *db = pParse->db; /* The database connection */
3651 reindexTable(pParse, pTab, zColl);
3671 void sqlite3Reindex(Parse *pParse, Token *pName1, Token *pName2){
3678 sqlite3 *db = pParse->db; /* The database connection */
3682 ** and code in pParse and return NULL. */
3683 if( SQLITE_OK!=sqlite3ReadSchema(pParse) ){
3688 reindexDatabases(pParse, 0);
3693 zColl = sqlite3NameFromToken(pParse->db, pName1);
3697 reindexDatabases(pParse, zColl);
3703 iDb = sqlite3TwoPartName(pParse, pName1, pName2, &pObjName);
3710 reindexTable(pParse, pTab, 0);
3717 sqlite3BeginWriteOperation(pParse, 0, iDb);
3718 sqlite3RefillIndex(pParse, pIndex, -1);
3721 sqlite3ErrorMsg(pParse, "unable to identify the object to be reindexed");
3732 ** sequence), NULL is returned and the state of pParse updated to reflect
3735 KeyInfo *sqlite3IndexKeyinfo(Parse *pParse, Index *pIdx){
3739 sqlite3 *db = pParse->db;
3743 pKey->db = pParse->db;
3749 pKey->aColl[i] = sqlite3LocateCollSeq(pParse, zColl);
3755 if( pParse->nErr ){