Lines Matching refs:pTab

11826     Table *pTab;             /* Source table */  member
11966 Table *pTab; /* Table for TK_COLUMN expressions. */ member
12151 Table *pTab; /* An SQL table corresponding to zName */ member
12426 Table *pTab; /* Table this info block refers to */ member
77574 Table *pTab;
77605 pTab = sqlite3LocateTable(pParse, 0, zTable, zDb);
77606 if( pTab && IsVirtual(pTab) ){
77607 pTab = 0;
77610 if( pTab && !HasRowid(pTab) ){
77611 pTab = 0;
77615 if( pTab && pTab->pSelect ){
77616 pTab = 0;
77620 if( !pTab ){
77632 for(iCol=0; iCol<pTab->nCol; iCol++) {
77633 if( sqlite3StrICmp(pTab->aCol[iCol].zName, zColumn)==0 ){
77637 if( iCol==pTab->nCol ){
77659 for(pFKey=pTab->pFKey; pFKey; pFKey=pFKey->pNextFrom){
77669 for(pIdx=pTab->pIndex; pIdx; pIdx=pIdx->pNext){
77690 int iDb = sqlite3SchemaToIndex(db, pTab->pSchema);
77694 pTab->pSchema->schema_cookie,
77695 pTab->pSchema->iGeneration);
77707 sqlite3VdbeChangeP2(v, 1, pTab->tnum);
77709 sqlite3VdbeChangeP4(v, 1, pTab->zName, P4_TRANSIENT);
77715 sqlite3VdbeChangeP2(v, 2 + flags, pTab->tnum);
77725 sqlite3VdbeChangeP4(v, 2+flags, SQLITE_INT_TO_PTR(pTab->nCol+1),P4_INT32);
77726 sqlite3VdbeChangeP2(v, 6, pTab->nCol);
81525 Table *pTab = 0; /* Table hold the row */
81534 pExpr->pTab = 0;
81568 pTab = pItem->pTab;
81569 assert( pTab!=0 && pTab->zName!=0 );
81570 assert( pTab->nCol>0 );
81585 if( zDb && pTab->pSchema!=pSchema ){
81589 const char *zTabName = pItem->zAlias ? pItem->zAlias : pTab->zName;
81598 for(j=0, pCol=pTab->aCol; j<pTab->nCol; j++, pCol++){
81611 pExpr->iColumn = j==pTab->iPKey ? -1 : (i16)j;
81618 pExpr->pTab = pMatch->pTab;
81624 pSchema = pExpr->pTab->pSchema;
81637 pTab = pParse->pTriggerTab;
81640 pTab = pParse->pTriggerTab;
81642 pTab = 0;
81645 if( pTab ){
81647 pSchema = pTab->pSchema;
81649 for(iCol=0, pCol=pTab->aCol; iCol<pTab->nCol; iCol++, pCol++){
81651 if( iCol==pTab->iPKey ){
81657 if( iCol>=pTab->nCol && sqlite3IsRowid(zCol) && HasRowid(pTab) ){
81662 if( iCol<pTab->nCol ){
81676 pExpr->pTab = pTab;
81687 && HasRowid(pMatch->pTab) ){
81757 pExpr->pTab = 0;
81830 p->pTab = pItem->pTab;
81832 if( p->pTab->iPKey==iCol ){
81935 pExpr->pTab = pItem->pTab;
82774 Table *pTab, /* The table being referenced */
82787 sSrc.a[0].zName = pTab->zName;
82788 sSrc.a[0].pTab = pTab;
82852 && pExpr->pTab!=0
82858 assert( pExpr->pTab && j<pExpr->pTab->nCol );
82859 return pExpr->pTab->aCol[j].affinity;
82941 && p->pTab!=0
82947 const char *zColl = p->pTab->aCol[j].zColl;
83835 Table *pTab;
83850 pTab = pNewItem->pTab = pOldItem->pTab;
83851 if( pTab ){
83852 pTab->nRef++;
84268 assert( p->pTab!=0 );
84270 (p->iColumn>=0 && p->pTab->aCol[p->iColumn].notNull==0);
84342 Table *pTab;
84358 pTab = pSrc->a[0].pTab;
84359 if( NEVER(pTab==0) ) return 0;
84360 assert( pTab->pSelect==0 ); /* FROM clause is not a view */
84361 if( IsVirtual(pTab) ) return 0; /* FROM clause not a virtual table */
84500 Table *pTab; /* Table <table>. */
84509 pTab = p->pSrc->a[0].pTab;
84514 iDb = sqlite3SchemaToIndex(db, pTab->pSchema);
84516 sqlite3TableLock(pParse, iDb, pTab->tnum, 0, pTab->zName);
84527 sqlite3OpenTable(pParse, iTab, iDb, pTab, OP_OpenRead);
84543 int affinity_ok = sqlite3IndexAffinityOk(pX, pTab->aCol[iCol].affinity);
84545 for(pIdx=pTab->pIndex; pIdx && eType==0 && affinity_ok; pIdx=pIdx->pNext){
84557 if( prRhsHasNull && !pTab->aCol[iCol].notNull ){
85242 Table *pTab, /* The table containing the value */
85247 if( iCol<0 || iCol==pTab->iPKey ){
85250 int op = IsVirtual(pTab) ? OP_VColumn : OP_Column;
85252 if( !HasRowid(pTab) ){
85253 x = sqlite3ColumnOfIndex(sqlite3PrimaryKeyIndex(pTab), iCol);
85258 sqlite3ColumnDefault(v, pTab, iCol, regOut);
85273 Table *pTab, /* Description of the table we are reading from */
85291 sqlite3ExprCodeGetColumnOfTable(v, pTab, iTable, iColumn, iReg);
85426 inReg = sqlite3ExprCodeGetColumn(pParse, pExpr->pTab,
85844 Table *pTab = pExpr->pTab;
85845 int p1 = pExpr->iTable * (pTab->nCol+1) + 1 + pExpr->iColumn;
85848 assert( pExpr->iColumn>=-1 && pExpr->iColumn<pTab->nCol );
85849 assert( pTab->iPKey<0 || pExpr->iColumn!=pTab->iPKey );
85850 assert( p1>=0 && p1<(pTab->nCol*2+2) );
85855 (pExpr->iColumn<0 ? "rowid" : pExpr->pTab->aCol[pExpr->iColumn].zName),
85866 && pTab->aCol[pExpr->iColumn].affinity==SQLITE_AFF_REAL
87034 pCol->pTab = pExpr->pTab;
87511 static char *whereForeignKeys(Parse *pParse, Table *pTab){
87514 for(p=sqlite3FkReferences(pTab); p; p=p->pNextTo){
87527 static char *whereTempTriggers(Parse *pParse, Table *pTab){
87537 if( pTab->pSchema!=pTempSchema ){
87539 for(pTrig=sqlite3TriggerList(pParse, pTab); pTrig; pTrig=pTrig->pNext){
87561 static void reloadTableSchema(Parse *pParse, Table *pTab, const char *zName){
87572 iDb = sqlite3SchemaToIndex(pParse->db, pTab->pSchema);
87577 for(pTrig=sqlite3TriggerList(pParse, pTab); pTrig; pTrig=pTrig->pNext){
87585 sqlite3VdbeAddOp4(v, OP_DropTable, iDb, 0, 0, pTab->zName, 0);
87596 if( (zWhere=whereTempTriggers(pParse, pTab))!=0 ){
87629 Table *pTab; /* Table being renamed */
87646 pTab = sqlite3LocateTableItem(pParse, 0, &pSrc->a[0]);
87647 if( !pTab ) goto exit_rename_table;
87648 iDb = sqlite3SchemaToIndex(pParse->db, pTab->pSchema);
87668 if( SQLITE_OK!=isSystemTable(pParse, pTab->zName) ){
87676 if( pTab->pSelect ){
87677 sqlite3ErrorMsg(pParse, "view %s may not be altered", pTab->zName);
87684 if( sqlite3AuthCheck(pParse, SQLITE_ALTER_TABLE, zDb, pTab->zName, 0) ){
87690 if( sqlite3ViewGetColumnNames(pParse, pTab) ){
87693 if( IsVirtual(pTab) ){
87694 pVTab = sqlite3GetVTable(db, pTab);
87728 zTabName = pTab->zName;
87736 if( (zWhere=whereForeignKeys(pParse, pTab))!=0 ){
87778 zDb, zName, pTab->zName);
87787 if( (zWhere=whereTempTriggers(pParse, pTab))!=0 ){
87800 for(p=sqlite3FkReferences(pTab); p; p=p->pNextTo){
87802 if( pFrom!=pTab ){
87810 reloadTableSchema(pParse, pTab, zName);
87855 Table *pTab; /* Table being altered */
87875 pTab = sqlite3FindTable(db, zTab, zDb);
87876 assert( pTab );
87880 if( sqlite3AuthCheck(pParse, SQLITE_ALTER_TABLE, zDb, pTab->zName, 0) ){
87962 reloadTableSchema(pParse, pTab, pTab->zName);
87982 Table *pTab;
87993 pTab = sqlite3LocateTableItem(pParse, 0, &pSrc->a[0]);
87994 if( !pTab ) goto exit_begin_add_column;
87997 if( IsVirtual(pTab) ){
88004 if( pTab->pSelect ){
88008 if( SQLITE_OK!=isSystemTable(pParse, pTab->zName) ){
88012 assert( pTab->addColOffset>0 );
88013 iDb = sqlite3SchemaToIndex(db, pTab->pSchema);
88026 pNew->nCol = pTab->nCol;
88031 pNew->zName = sqlite3MPrintf(db, "sqlite_altertab_%s", pTab->zName);
88036 memcpy(pNew->aCol, pTab->aCol, sizeof(Column)*pNew->nCol);
88046 pNew->addColOffset = pTab->addColOffset;
89018 Table *pTab, /* Table whose indices are to be analyzed */
89047 if( v==0 || NEVER(pTab==0) ){
89050 if( pTab->tnum==0 ){
89054 if( sqlite3_strnicmp(pTab->zName, "sqlite_", 7)==0 ){
89059 iDb = sqlite3SchemaToIndex(db, pTab->pSchema);
89063 if( sqlite3AuthCheck(pParse, SQLITE_ANALYZE, pTab->zName, 0,
89073 sqlite3TableLock(pParse, iDb, pTab->tnum, 0, pTab->zName);
89077 sqlite3OpenTable(pParse, iTabCur, iDb, pTab, OP_OpenRead);
89078 sqlite3VdbeAddOp4(v, OP_String8, 0, regTabname, 0, pTab->zName, 0);
89080 for(pIdx=pTab->pIndex; pIdx; pIdx=pIdx->pNext){
89089 if( !HasRowid(pTab) && IsPrimaryKeyIndex(pIdx) ){
89091 zIdxName = pTab->zName;
89101 VdbeComment((v, "Analysis for %s.%s", pTab->zName, zIdxName));
89242 if( HasRowid(pTab) ){
89251 VdbeComment((v, "%s", pTab->aCol[pPk->aiColumn[j]].zName));
89282 u8 seekOp = HasRowid(pTab) ? OP_NotExists : OP_NotFound;
89299 sqlite3ExprCodeGetColumnOfTable(v, pTab, iTabCur,
89304 sqlite3ExprCodeGetColumnOfTable(v, pTab, iTabCur, iCol, regCol+i);
89325 VdbeComment((v, "%s", pTab->zName));
89369 Table *pTab = (Table*)sqliteHashData(k);
89370 analyzeOneTable(pParse, pTab, 0, iStatCur, iMem, iTab);
89380 static void analyzeTable(Parse *pParse, Table *pTab, Index *pOnlyIdx){
89384 assert( pTab!=0 );
89386 iDb = sqlite3SchemaToIndex(pParse->db, pTab->pSchema);
89393 openStatTable(pParse, iDb, iStatCur, pTab->zName, "tbl");
89395 analyzeOneTable(pParse, pTab, pOnlyIdx, iStatCur,pParse->nMem+1,pParse->nTab);
89416 Table *pTab;
89445 }else if( (pTab = sqlite3LocateTable(pParse, 0, z, 0))!=0 ){
89446 analyzeTable(pParse, pTab, 0);
89460 }else if( (pTab = sqlite3LocateTable(pParse, 0, z, zDb))!=0 ){
89461 analyzeTable(pParse, pTab, 0);
89706 Table *pTab = sqlite3FindTable(db, zName, zDb);
89707 if( pTab && !HasRowid(pTab) ) pIdx = sqlite3PrimaryKeyIndex(pTab);
90689 Table *pTab = 0; /* The table being read */
90705 pTab = pParse->pTriggerTab;
90710 pTab = pTabList->a[iSrc].pTab;
90716 if( NEVER(pTab==0) ) return;
90719 assert( iCol<pTab->nCol );
90720 zCol = pTab->aCol[iCol].zName;
90721 }else if( pTab->iPKey>=0 ){
90722 assert( pTab->iPKey<pTab->nCol );
90723 zCol = pTab->aCol[pTab->iPKey].zName;
90728 if( SQLITE_IGNORE==sqlite3AuthReadCol(pParse, pTab->zName, zCol, iDb) ){
91605 SQLITE_PRIVATE Index *sqlite3PrimaryKeyIndex(Table *pTab){
91607 for(p=pTab->pIndex; p && !IsPrimaryKeyIndex(p); p=p->pNext){}
92088 Table *pTab = pParse->pNewTable;
92092 if( pTab==0 || IN_DECLARE_VTAB ) goto primary_key_exit;
92093 if( pTab->tabFlags & TF_HasPrimaryKey ){
92095 "table \"%s\" has more than one primary key", pTab->zName);
92098 pTab->tabFlags |= TF_HasPrimaryKey;
92100 iCol = pTab->nCol - 1;
92101 pTab->aCol[iCol].colFlags |= COLFLAG_PRIMKEY;
92102 zType = pTab->aCol[iCol].zType;
92107 for(iCol=0; iCol<pTab->nCol; iCol++){
92108 if( sqlite3StrICmp(pList->a[i].zName, pTab->aCol[iCol].zName)==0 ){
92109 pTab->aCol[iCol].colFlags |= COLFLAG_PRIMKEY;
92110 zType = pTab->aCol[iCol].zType;
92120 pTab->iPKey = iCol;
92121 pTab->keyConf = (u8)onError;
92123 pTab->tabFlags |= autoInc*TF_Autoincrement;
92156 Table *pTab = pParse->pNewTable;
92158 if( pTab && !IN_DECLARE_VTAB
92161 pTab->pCheck = sqlite3ExprListAppend(pParse, pTab->pCheck, pCheckExpr);
92163 sqlite3ExprListSetName(pParse, pTab->pCheck, &pParse->constraintName, 1);
92418 static void estimateTableWidth(Table *pTab){
92422 for(i=pTab->nCol, pTabCol=pTab->aCol; i>0; i--, pTabCol++){
92425 if( pTab->iPKey<0 ) wTable++;
92426 pTab->szTabRow = sqlite3LogEst(wTable*4);
92474 static void convertToWithoutRowidTable(Parse *pParse, Table *pTab){
92502 if( pTab->iPKey>=0 ){
92507 pTab->aCol[pTab->iPKey].zName);
92509 assert( pParse->pNewTable==pTab );
92510 pPk = sqlite3CreateIndex(pParse, 0, 0, 0, pList, pTab->keyConf, 0, 0, 0, 0);
92513 pTab->iPKey = -1;
92515 pPk = sqlite3PrimaryKeyIndex(pTab);
92538 pTab->aCol[pPk->aiColumn[i]].notNull = 1;
92544 pPk->tnum = pTab->tnum;
92549 for(pIdx=pTab->pIndex; pIdx; pIdx=pIdx->pNext){
92574 if( nPk<pTab->nCol ){
92575 if( resizeIndexObject(db, pPk, pTab->nCol) ) return;
92576 for(i=0, j=nPk; i<pTab->nCol; i++){
92585 assert( pTab->nCol==j );
92587 pPk->nColumn = pTab->nCol;
93005 Table *pTab = sqliteHashData(i);
93006 if( pTab->pSelect ){
93007 sqliteDeleteColumnNames(db, pTab);
93008 pTab->aCol = 0;
93009 pTab->nCol = 0;
93045 Table *pTab = sqliteHashData(pElem);
93046 if( pTab->tnum==iFrom ){
93047 pTab->tnum = iTo;
93094 static void destroyTable(Parse *pParse, Table *pTab){
93097 int iDb = sqlite3SchemaToIndex(pParse->db, pTab->pSchema);
93098 destroyRootPage(pParse, pTab->tnum, iDb);
93099 for(pIdx=pTab->pIndex; pIdx; pIdx=pIdx->pNext){
93119 int iTab = pTab->tnum;
93129 for(pIdx=pTab->pIndex; pIdx; pIdx=pIdx->pNext){
93131 assert( pIdx->pSchema==pTab->pSchema );
93139 int iDb = sqlite3SchemaToIndex(pParse->db, pTab->pSchema);
93175 SQLITE_PRIVATE void sqlite3CodeDropTable(Parse *pParse, Table *pTab, int iDb, int isView){
93186 if( IsVirtual(pTab) ){
93195 pTrigger = sqlite3TriggerList(pParse, pTab);
93197 assert( pTrigger->pSchema==pTab->pSchema ||
93209 if( pTab->tabFlags & TF_Autoincrement ){
93212 pDb->zName, pTab->zName
93226 pDb->zName, SCHEMA_TABLE(iDb), pTab->zName);
93227 if( !isView && !IsVirtual(pTab) ){
93228 destroyTable(pParse, pTab);
93234 if( IsVirtual(pTab) ){
93235 sqlite3VdbeAddOp4(v, OP_VDestroy, iDb, 0, 0, pTab->zName, 0);
93237 sqlite3VdbeAddOp4(v, OP_DropTable, iDb, 0, 0, pTab->zName, 0);
93247 Table *pTab;
93259 pTab = sqlite3LocateTableItem(pParse, isView, &pName->a[0]);
93262 if( pTab==0 ){
93266 iDb = sqlite3SchemaToIndex(db, pTab->pSchema);
93272 if( IsVirtual(pTab) && sqlite3ViewGetColumnNames(pParse, pTab) ){
93291 }else if( IsVirtual(pTab) ){
93293 zArg2 = sqlite3GetVTable(db, pTab)->pMod->zName;
93302 if( sqlite3AuthCheck(pParse, code, pTab->zName, zArg2, zDb) ){
93305 if( sqlite3AuthCheck(pParse, SQLITE_DELETE, pTab->zName, 0, zDb) ){
93310 if( sqlite3StrNICmp(pTab->zName, "sqlite_", 7)==0
93311 && sqlite3StrNICmp(pTab->zName, "sqlite_stat", 11)!=0 ){
93312 sqlite3ErrorMsg(pParse, "table %s may not be dropped", pTab->zName);
93320 if( isView && pTab->pSelect==0 ){
93321 sqlite3ErrorMsg(pParse, "use DROP TABLE to delete table %s", pTab->zName);
93324 if( !isView && pTab->pSelect ){
93325 sqlite3ErrorMsg(pParse, "use DROP VIEW to delete view %s", pTab->zName);
93336 sqlite3ClearStatTables(pParse, iDb, "tbl", pTab->zName);
93337 sqlite3FkDropTable(pParse, pName, pTab);
93338 sqlite3CodeDropTable(pParse, pTab, iDb, isView);
93484 Table *pTab;
93486 if( (pTab = pParse->pNewTable)==0 || (pFKey = pTab->pFKey)==0 ) return;
93504 Table *pTab = pIndex->pTable; /* The table that is indexed */
93526 sqlite3TableLock(pParse, iDb, pTab->tnum, 1, pTab->zName);
93544 sqlite3OpenTable(pParse, iTab, iDb, pTab, OP_OpenRead);
93647 Table *pTab = 0; /* Table to be indexed */
93692 pTab = sqlite3SrcListLookup(pParse, pTblName);
93693 if( pName2->n==0 && pTab && pTab->pSchema==db->aDb[1].pSchema ){
93705 pTab = sqlite3LocateTableItem(pParse, 0, &pTblName->a[0]);
93706 assert( db->mallocFailed==0 || pTab==0 );
93707 if( pTab==0 ) goto exit_create_index;
93708 if( iDb==1 && db->aDb[iDb].pSchema!=pTab->pSchema ){
93711 pTab->zName);
93714 if( !HasRowid(pTab) ) pPk = sqlite3PrimaryKeyIndex(pTab);
93718 pTab = pParse->pNewTable;
93719 if( !pTab ) goto exit_create_index;
93720 iDb = sqlite3SchemaToIndex(db, pTab->pSchema);
93724 assert( pTab!=0 );
93726 if( sqlite3StrNICmp(pTab->zName, "sqlite_", 7)==0
93729 && sqlite3UserAuthTable(pTab->zName)==0
93731 && sqlite3StrNICmp(&pTab->zName[7],"altertab_",9)!=0 ){
93732 sqlite3ErrorMsg(pParse, "table %s may not be indexed", pTab->zName);
93736 if( pTab->pSelect ){
93742 if( IsVirtual(pTab) ){
93786 for(pLoop=pTab->pIndex, n=1; pLoop; pLoop=pLoop->pNext, n++){}
93787 zName = sqlite3MPrintf(db, "sqlite_autoindex_%s_%d", pTab->zName, n);
93803 if( sqlite3AuthCheck(pParse, i, zName, pTab->zName, zDb) ){
93817 pTab->aCol[pTab->nCol-1].zName);
93847 pIndex->pTable = pTab;
93854 sqlite3ResolveSelfReference(pParse, pTab, NC_PartIdx, pPIWhere, 0);
93883 for(j=0, pTabCol=pTab->aCol; j<pTab->nCol; j++, pTabCol++){
93886 if( j>=pTab->nCol ){
93888 pTab->zName, zColName);
93905 zColl = pTab->aCol[j].zColl;
93914 if( pTab->aCol[j].notNull==0 ) pIndex->uniqNotNull = 0;
93936 if( pTab==pParse->pNewTable ){
93959 for(pIdx=pTab->pIndex; pIdx; pIdx=pIdx->pNext){
94029 else if( pParse->nErr==0 && (HasRowid(pTab) || pTblName!=0) ){
94064 pTab->zName,
94089 if( onError!=OE_Replace || pTab->pIndex==0
94090 || pTab->pIndex->onError==OE_Replace){
94091 pIndex->pNext = pTab->pIndex;
94092 pTab->pIndex = pIndex;
94094 Index *pOther = pTab->pIndex;
94194 Table *pTab = pIndex->pTable;
94201 if( sqlite3AuthCheck(pParse, code, pIndex->zName, pTab->zName, zDb) ){
94483 sqlite3DeleteTable(db, pItem->pTab);
94828 Table *pTab = pIdx->pTable;
94832 char *zCol = pTab->aCol[pIdx->aiColumn[j]].zName;
94834 sqlite3StrAccumAppendAll(&errMsg, pTab->zName);
94852 Table *pTab /* The table with the non-unique rowid */
94856 if( pTab->iPKey>=0 ){
94857 zMsg = sqlite3MPrintf(pParse->db, "%s.%s", pTab->zName,
94858 pTab->aCol[pTab->iPKey].zName);
94861 zMsg = sqlite3MPrintf(pParse->db, "%s.rowid", pTab->zName);
94892 static void reindexTable(Parse *pParse, Table *pTab, char const *zColl){
94895 for(pIndex=pTab->pIndex; pIndex; pIndex=pIndex->pNext){
94897 int iDb = sqlite3SchemaToIndex(pParse->db, pTab->pSchema);
94916 Table *pTab; /* A table in the database */
94922 pTab = (Table*)sqliteHashData(k);
94923 reindexTable(pParse, pTab, zColl);
94947 Table *pTab; /* A table in the database */
94980 pTab = sqlite3FindTable(db, z, zDb);
94981 if( pTab ){
94982 reindexTable(pParse, pTab, 0);
95549 Table *pTab = sqliteHashData(pElem);
95550 sqlite3DeleteTable(0, pTab);
95617 Table *pTab;
95619 pTab = sqlite3LocateTableItem(pParse, 0, pItem);
95620 sqlite3DeleteTable(pParse->db, pItem->pTab);
95621 pItem->pTab = pTab;
95622 if( pTab ){
95623 pTab->nRef++;
95626 pTab = 0;
95628 return pTab;
95636 SQLITE_PRIVATE int sqlite3IsReadOnly(Parse *pParse, Table *pTab, int viewOk){
95647 if( ( IsVirtual(pTab)
95648 && sqlite3GetVTable(pParse->db, pTab)->pMod->pModule->xUpdate==0 )
95649 || ( (pTab->tabFlags & TF_Readonly)!=0
95653 sqlite3ErrorMsg(pParse, "table %s may not be modified", pTab->zName);
95658 if( !viewOk && pTab->pSelect ){
95659 sqlite3ErrorMsg(pParse,"cannot modify %s because it is a view",pTab->zName);
95807 Table *pTab; /* The table from which records will be deleted */
95854 pTab = sqlite3SrcListLookup(pParse, pTabList);
95855 if( pTab==0 ) goto delete_from_cleanup;
95861 pTrigger = sqlite3TriggersExist(pParse, pTab, TK_DELETE, 0, 0);
95862 isView = pTab->pSelect!=0;
95874 if( sqlite3ViewGetColumnNames(pParse, pTab) ){
95878 if( sqlite3IsReadOnly(pParse, pTab, (pTrigger?1:0)) ){
95881 iDb = sqlite3SchemaToIndex(db, pTab->pSchema);
95884 rcauth = sqlite3AuthCheck(pParse, SQLITE_DELETE, pTab->zName, 0, zDb);
95895 for(nIdx=0, pIdx=pTab->pIndex; pIdx; pIdx=pIdx->pNext, nIdx++){
95902 sqlite3AuthContextPush(pParse, &sContext, pTab->zName);
95919 sqlite3MaterializeView(pParse, pTab, pWhere, iTabCur);
95946 if( rcauth==SQLITE_OK && pWhere==0 && !pTrigger && !IsVirtual(pTab)
95947 && 0==sqlite3FkRequired(pParse, pTab, 0, 0)
95950 sqlite3TableLock(pParse, iDb, pTab->tnum, 1, pTab->zName);
95951 if( HasRowid(pTab) ){
95952 sqlite3VdbeAddOp4(v, OP_Clear, pTab->tnum, iDb, memCnt,
95953 pTab->zName, P4_STATIC);
95955 for(pIdx=pTab->pIndex; pIdx; pIdx=pIdx->pNext){
95956 assert( pIdx->pSchema==pTab->pSchema );
95962 if( HasRowid(pTab) ){
95971 pPk = sqlite3PrimaryKeyIndex(pTab);
95998 sqlite3ExprCodeGetColumnOfTable(v, pTab, iTabCur,
96004 iKey = sqlite3ExprCodeGetColumn(pParse, pTab, -1, iTabCur, iKey, 0);
96053 testcase( IsVirtual(pTab) );
96054 sqlite3OpenTableAndIndices(pParse, pTab, OP_OpenWrite, iTabCur, aToOpen,
96056 assert( pPk || IsVirtual(pTab) || iDataCur==iTabCur );
96057 assert( pPk || IsVirtual(pTab) || iIdxCur==iDataCur+1 );
96066 assert( !IsVirtual(pTab) );
96068 assert( pPk!=0 || pTab->pSelect!=0 );
96084 if( IsVirtual(pTab) ){
96085 const char *pVTab = (const char *)sqlite3GetVTable(db, pTab);
96086 sqlite3VtabMakeWritable(pParse, pTab);
96094 sqlite3GenerateRowDelete(pParse, pTab, pTrigger, iDataCur, iIdxCur,
96110 if( !isView && !IsVirtual(pTab) ){
96112 for(i=0, pIdx=pTab->pIndex; pIdx; i++, pIdx=pIdx->pNext){
96175 Table *pTab, /* Table containing the row to be deleted */
96199 opSeek = HasRowid(pTab) ? OP_NotExists : OP_NotFound;
96208 if( sqlite3FkRequired(pParse, pTab, 0, 0) || pTrigger ){
96216 pParse, pTrigger, 0, 0, TRIGGER_BEFORE|TRIGGER_AFTER, pTab, onconf
96218 mask |= sqlite3FkOldmask(pParse, pTab);
96220 pParse->nMem += (1 + pTab->nCol);
96225 for(iCol=0; iCol<pTab->nCol; iCol++){
96229 sqlite3ExprCodeGetColumnOfTable(v, pTab, iDataCur, iCol, iOld+iCol+1);
96236 TK_DELETE, 0, TRIGGER_BEFORE, pTab, iOld, onconf, iLabel
96253 sqlite3FkCheck(pParse, pTab, iOld, 0, 0, 0);
96259 if( pTab->pSelect==0 ){
96260 sqlite3GenerateRowIndexDelete(pParse, pTab, iDataCur, iIdxCur, 0);
96263 sqlite3VdbeChangeP4(v, -1, pTab->zName, P4_TRANSIENT);
96270 sqlite3FkActions(pParse, pTab, 0, iOld, 0, 0);
96274 TK_DELETE, 0, TRIGGER_AFTER, pTab, iOld, onconf, iLabel
96304 Table *pTab, /* Table containing the row to be deleted */
96318 pPk = HasRowid(pTab) ? 0 : sqlite3PrimaryKeyIndex(pTab);
96319 for(i=0, pIdx=pTab->pIndex; pIdx; i++, pIdx=pIdx->pNext){
96376 Table *pTab = pIdx->pTable;
96396 sqlite3ExprCodeGetColumnOfTable(v, pTab, iDataCur, pIdx->aiColumn[j],
98548 Table *pTab, /* Parent table of FK pFKey */
98597 if( pTab==pFKey->pFrom && nIncr==1 ){
98602 sqlite3OpenTable(pParse, iCur, iDb, pTab, OP_OpenRead);
98629 if( pTab==pFKey->pFrom && nIncr==1 ){
98634 assert( aiCol[i]!=pTab->iPKey );
98635 if( pIdx->aiColumn[i]==pTab->iPKey ){
98687 Table *pTab, /* The table whose content is at r[regBase]... */
98698 if( iCol>=0 && iCol!=pTab->iPKey ){
98699 pCol = &pTab->aCol[iCol];
98719 Table *pTab, /* The table whose column is desired */
98725 pExpr->pTab = pTab;
98767 Table *pTab, /* The parent table */
98782 assert( pIdx==0 || pIdx->pTable==pTab );
98785 assert( pIdx!=0 || HasRowid(pTab) );
98808 pLeft = exprTableRegister(pParse, pTab, regData, iCol);
98828 if( pTab==pFKey->pFrom && nIncr>0 ){
98832 if( HasRowid(pTab) ){
98833 pLeft = exprTableRegister(pParse, pTab, regData, -1);
98834 pRight = exprTableColumn(db, pTab, pSrc->a[0].iCursor, -1);
98838 Index *pPk = sqlite3PrimaryKeyIndex(pTab);
98842 pLeft = exprTableRegister(pParse, pTab, regData, iCol);
98843 pRight = exprTableColumn(db, pTab, pSrc->a[0].iCursor, iCol);
98888 SQLITE_PRIVATE FKey *sqlite3FkReferences(Table *pTab){
98889 return (FKey *)sqlite3HashFind(&pTab->pSchema->fkeyHash, pTab->zName);
98928 SQLITE_PRIVATE void sqlite3FkDropTable(Parse *pParse, SrcList *pName, Table *pTab){
98930 if( (db->flags&SQLITE_ForeignKeys) && !IsVirtual(pTab) && !pTab->pSelect ){
98935 if( sqlite3FkReferences(pTab)==0 ){
98942 for(p=pTab->pFKey; p; p=p->pNextFrom){
98990 Table *pTab, /* Table being updated */
98999 if( iChildKey==pTab->iPKey && bChngRowid ) return 1;
99017 Table *pTab,
99026 for(iKey=0; iKey<pTab->nCol; iKey++){
99027 if( aChange[iKey]>=0 || (iKey==pTab->iPKey && bChngRowid) ){
99028 Column *pCol = &pTab->aCol[iKey];
99080 Table *pTab, /* Row is being deleted from this table */
99098 iDb = sqlite3SchemaToIndex(db, pTab->pSchema);
99103 for(pFKey=pTab->pFKey; pFKey; pFKey=pFKey->pNextFrom){
99113 && sqlite3_stricmp(pTab->zName, pFKey->zTo)!=0
99114 && fkChildIsModified(pTab, pFKey, aChange, bChngRowid)==0
99158 if( aiCol[i]==pTab->iPKey ){
99203 for(pFKey = sqlite3FkReferences(pTab); pFKey; pFKey=pFKey->pNextTo){
99208 if( aChange && fkParentIsModified(pTab, pFKey, aChange, bChngRowid)==0 ){
99221 if( sqlite3FkLocateIndex(pParse, pTab, pFKey, &pIdx, &aiCol) ){
99232 pItem->pTab = pFKey->pFrom;
99234 pItem->pTab->nRef++;
99238 fkScanChildren(pParse, pSrc, pTab, pIdx, pFKey, aiCol, regNew, -1);
99242 fkScanChildren(pParse, pSrc, pTab, pIdx, pFKey, aiCol, regOld, 1);
99279 Table *pTab /* Table being modified */
99285 for(p=pTab->pFKey; p; p=p->pNextFrom){
99288 for(p=sqlite3FkReferences(pTab); p; p=p->pNextTo){
99290 sqlite3FkLocateIndex(pParse, pTab, p, &pIdx, 0);
99316 Table *pTab, /* Table being modified */
99325 return (sqlite3FkReferences(pTab) || pTab->pFKey);
99332 for(p=pTab->pFKey; p; p=p->pNextFrom){
99333 if( fkChildIsModified(pTab, p, aChange, chngRowid) ) return 1;
99337 for(p=sqlite3FkReferences(pTab); p; p=p->pNextTo){
99338 if( fkParentIsModified(pTab, p, aChange, chngRowid) ) return 1;
99376 Table *pTab, /* Table being updated or deleted from */
99401 if( sqlite3FkLocateIndex(pParse, pTab, pFKey, &pIdx, &aiCol) ) return 0;
99414 assert( pIdx!=0 || (pTab->iPKey>=0 && pTab->iPKey<pTab->nCol) );
99415 tToCol.z = pTab->aCol[pIdx ? pIdx->aiColumn[i] : pTab->iPKey].zName;
99547 pTrigger->pSchema = pTab->pSchema;
99548 pTrigger->pTabSchema = pTab->pSchema;
99562 Table *pTab, /* Table being updated or deleted from */
99574 for(pFKey = sqlite3FkReferences(pTab); pFKey; pFKey=pFKey->pNextTo){
99575 if( aChange==0 || fkParentIsModified(pTab, pFKey, aChange, bChngRowid) ){
99576 Trigger *pAct = fkActionTrigger(pParse, pTab, pFKey, pChanges);
99578 sqlite3CodeRowTriggerDirect(pParse, pAct, pTab, regOld, OE_Abort, 0);
99592 SQLITE_PRIVATE void sqlite3FkDelete(sqlite3 *db, Table *pTab){
99596 assert( db==0 || sqlite3SchemaMutexHeld(db, 0, pTab->pSchema) );
99597 for(pFKey=pTab->pFKey; pFKey; pFKey=pNext){
99606 sqlite3HashInsert(&pTab->pSchema->fkeyHash, z, p);
99660 Table *pTab, /* The table to be opened */
99664 assert( !IsVirtual(pTab) );
99667 sqlite3TableLock(pParse, iDb, pTab->tnum,
99668 (opcode==OP_OpenWrite)?1:0, pTab->zName);
99669 if( HasRowid(pTab) ){
99670 sqlite3VdbeAddOp4Int(v, opcode, iCur, pTab->tnum, iDb, pTab->nCol);
99671 VdbeComment((v, "%s", pTab->zName));
99673 Index *pPk = sqlite3PrimaryKeyIndex(pTab);
99675 assert( pPk->tnum=pTab->tnum );
99678 VdbeComment((v, "%s", pTab->zName));
99713 Table *pTab = pIdx->pTable;
99722 pIdx->zColAff[n] = x<0 ? SQLITE_AFF_INTEGER : pTab->aCol[x].affinity;
99750 SQLITE_PRIVATE void sqlite3TableAffinity(Vdbe *v, Table *pTab, int iReg){
99752 char *zColAff = pTab->zColAff;
99755 zColAff = (char *)sqlite3DbMallocRaw(0, pTab->nCol+1);
99761 for(i=0; i<pTab->nCol; i++){
99762 zColAff[i] = pTab->aCol[i].affinity;
99767 pTab->zColAff = zColAff;
99785 static int readsTable(Parse *p, int iDb, Table *pTab){
99790 VTable *pVTab = IsVirtual(pTab) ? sqlite3GetVTable(p->db, pTab) : 0;
99799 if( tnum==pTab->tnum ){
99802 for(pIndex=pTab->pIndex; pIndex; pIndex=pIndex->pNext){
99843 Table *pTab /* The table we are writing to */
99846 if( pTab->tabFlags & TF_Autoincrement ){
99851 while( pInfo && pInfo->pTab!=pTab ){ pInfo = pInfo->pNext; }
99857 pInfo->pTab = pTab;
99893 sqlite3VdbeAddOp4(v, OP_String8, 0, memId-1, 0, p->pTab->zName, 0);
100077 Table *pTab; /* The table to insert into. aka TABLE */
100138 pTab = sqlite3SrcListLookup(pParse, pTabList);
100139 if( pTab==0 ){
100142 iDb = sqlite3SchemaToIndex(db, pTab->pSchema);
100146 if( sqlite3AuthCheck(pParse, SQLITE_INSERT, pTab->zName, 0, zDb) ){
100149 withoutRowid = !HasRowid(pTab);
100155 pTrigger = sqlite3TriggersExist(pParse, pTab, TK_INSERT, 0, &tmask);
100156 isView = pTab->pSelect!=0;
100171 if( sqlite3ViewGetColumnNames(pParse, pTab) ){
100177 if( sqlite3IsReadOnly(pParse, pTab, tmask) ){
100198 if( pColumn==0 && xferOptimization(pParse, pTab, pSelect, onError, iDb) ){
100208 regAutoinc = autoIncBegin(pParse, iDb, pTab);
100214 pParse->nMem += pTab->nCol + 1;
100215 if( IsVirtual(pTab) ){
100232 bIdListInOrder = (pTab->tabFlags & TF_OOOHidden)==0;
100238 for(j=0; j<pTab->nCol; j++){
100239 if( sqlite3StrICmp(pColumn->a[i].zName, pTab->aCol[j].zName)==0 ){
100242 if( j==pTab->iPKey ){
100248 if( j>=pTab->nCol ){
100279 dest.nSdst = pTab->nCol;
100297 if( pTrigger || readsTable(pParse, iDb, pTab) ){
100351 ipkColumn = pTab->iPKey;
100357 if( IsVirtual(pTab) ){
100358 for(i=0; i<pTab->nCol; i++){
100359 nHidden += (IsHiddenColumn(&pTab->aCol[i]) ? 1 : 0);
100362 if( pColumn==0 && nColumn && nColumn!=(pTab->nCol-nHidden) ){
100365 pTabList, 0, pTab->nCol-nHidden, nColumn);
100383 nIdx = sqlite3OpenTableAndIndices(pParse, pTab, OP_OpenWrite, -1, 0,
100424 int regCols = sqlite3GetTempRange(pParse, pTab->nCol+1);
100452 assert( !IsVirtual(pTab) );
100456 for(i=0; i<pTab->nCol; i++){
100465 sqlite3ExprCode(pParse, pTab->aCol[i].pDflt, regCols+i+1);
100480 sqlite3TableAffinity(v, pTab, regCols+1);
100485 pTab, regCols-pTab->nCol-1, onError, endOfLoop);
100487 sqlite3ReleaseTempRange(pParse, regCols, pTab->nCol+1);
100494 if( IsVirtual(pTab) ){
100507 if( ALWAYS(pOp) && pOp->opcode==OP_Null && !IsVirtual(pTab) ){
100520 if( !IsVirtual(pTab) ){
100530 }else if( IsVirtual(pTab) || withoutRowid ){
100542 for(i=0; i<pTab->nCol; i++){
100544 if( i==pTab->iPKey ){
100554 if( IsHiddenColumn(&pTab->aCol[i]) ){
100555 assert( IsVirtual(pTab) );
100567 sqlite3ExprCodeFactorable(pParse, pTab->aCol[i].pDflt, iRegStore);
100583 if( IsVirtual(pTab) ){
100584 const char *pVTab = (const char *)sqlite3GetVTable(db, pTab);
100585 sqlite3VtabMakeWritable(pParse, pTab);
100586 sqlite3VdbeAddOp4(v, OP_VUpdate, 1, pTab->nCol+2, regIns, pVTab, P4_VTAB);
100593 sqlite3GenerateConstraintChecks(pParse, pTab, aRegIdx, iDataCur, iIdxCur,
100596 sqlite3FkCheck(pParse, pTab, 0, regIns, 0, 0);
100597 sqlite3CompleteInsertion(pParse, pTab, iDataCur, iIdxCur,
100611 pTab, regData-2-pTab->nCol, onError, endOfLoop);
100627 if( !IsVirtual(pTab) && !isView ){
100630 for(idx=0, pIdx=pTab->pIndex; pIdx; pIdx=pIdx->pNext, idx++){
100761 Table *pTab, /* The table being inserted or updated */
100793 assert( pTab->pSelect==0 ); /* This table is not a VIEW */
100794 nCol = pTab->nCol;
100800 if( HasRowid(pTab) ){
100804 pPk = sqlite3PrimaryKeyIndex(pTab);
100815 if( i==pTab->iPKey ){
100818 onError = pTab->aCol[i].notNull;
100825 if( onError==OE_Replace && pTab->aCol[i].pDflt==0 ){
100836 char *zMsg = sqlite3MPrintf(db, "%s.%s", pTab->zName,
100837 pTab->aCol[i].zName);
100852 sqlite3ExprCode(pParse, pTab->aCol[i].pDflt, regNewData+1+i);
100862 if( pTab->pCheck && (db->flags & SQLITE_IgnoreChecks)==0 ){
100863 ExprList *pCheck = pTab->pCheck;
100873 if( zName==0 ) zName = pTab->zName;
100891 onError = pTab->keyConf;
100913 for(pIdx=pTab->pIndex; pIdx; pIdx=pIdx->pNext){
100935 sqlite3RowidConstraint(pParse, onError, pTab);
100963 pTrigger = sqlite3TriggersExist(pParse, pTab, TK_DELETE, 0, 0);
100965 if( pTrigger || sqlite3FkRequired(pParse, pTab, 0, 0) ){
100967 sqlite3GenerateRowDelete(pParse, pTab, pTrigger, iDataCur, iIdxCur,
100969 }else if( pTab->pIndex ){
100971 sqlite3GenerateRowIndexDelete(pParse, pTab, iDataCur, iIdxCur, 0);
100996 for(ix=0, pIdx=pTab->pIndex; pIdx; pIdx=pIdx->pNext, ix++){
101004 sqlite3TableAffinity(v, pTab, regNewData+1);
101026 if( iField<0 || iField==pTab->iPKey ){
101034 VdbeComment((v, "%s", iField<0 ? "rowid" : pTab->aCol[iField].zName));
101069 if( HasRowid(pTab) ){
101086 VdbeComment((v, "%s.%s", pTab->zName,
101087 pTab->aCol[pPk->aiColumn[i]].zName));
101139 pTrigger = sqlite3TriggersExist(pParse, pTab, TK_DELETE, 0, 0);
101141 sqlite3GenerateRowDelete(pParse, pTab, pTrigger, iDataCur, iIdxCur,
101171 Table *pTab, /* the table into which we are inserting */
101190 assert( pTab->pSelect==0 ); /* This table is not a VIEW */
101191 for(i=0, pIdx=pTab->pIndex; pIdx; pIdx=pIdx->pNext, i++){
101201 if( IsPrimaryKeyIndex(pIdx) && !HasRowid(pTab) ){
101207 if( !HasRowid(pTab) ) return;
101210 sqlite3VdbeAddOp3(v, OP_MakeRecord, regData, pTab->nCol, regRec);
101211 if( !bAffinityDone ) sqlite3TableAffinity(v, pTab, 0);
101212 sqlite3ExprCacheAffinityChange(pParse, regData, pTab->nCol);
101227 sqlite3VdbeChangeP4(v, -1, pTab->zName, P4_TRANSIENT);
101255 Table *pTab, /* Table to be opened */
101269 if( IsVirtual(pTab) ){
101275 iDb = sqlite3SchemaToIndex(pParse->db, pTab->pSchema);
101281 if( HasRowid(pTab) && (aToOpen==0 || aToOpen[0]) ){
101282 sqlite3OpenTable(pParse, iDataCur, iDb, pTab, op);
101284 sqlite3TableLock(pParse, iDb, pTab->tnum, op==OP_OpenWrite, pTab->zName);
101287 for(i=0, pIdx=pTab->pIndex; pIdx; pIdx=pIdx->pNext, i++){
101289 assert( pIdx->pSchema==pTab->pSchema );
101290 if( IsPrimaryKeyIndex(pIdx) && !HasRowid(pTab) && piDataCur ){
104599 Table *pTab;
104600 pTab = sqlite3FindTable(db, zRight, zDb);
104601 if( pTab ){
104605 Index *pPk = sqlite3PrimaryKeyIndex(pTab);
104615 sqlite3ViewGetColumnNames(pParse, pTab);
104616 for(i=0, pCol=pTab->aCol; i<pTab->nCol; i++, pCol++){
104636 for(k=1; k<=pTab->nCol && pPk->aiColumn[k-1]!=i; k++){}
104657 Table *pTab = sqliteHashData(i);
104658 sqlite3VdbeAddOp4(v, OP_String8, 0, 1, 0, pTab->zName, 0);
104661 (int)sqlite3LogEstToInt(pTab->szTabRow), 3);
104663 (int)sqlite3LogEstToInt(pTab->nRowLogEst), 4);
104665 for(pIdx=pTab->pIndex; pIdx; pIdx=pIdx->pNext){
104679 Table *pTab;
104693 pTab = pIdx->pTable;
104711 sqlite3VdbeAddOp4(v, OP_String8, 0, 3, 0, pTab->aCol[cnum].zName, 0);
104726 Table *pTab;
104728 pTab = sqlite3FindTable(db, zRight, zDb);
104729 if( pTab ){
104739 for(pIdx=pTab->pIndex, i=0; pIdx; pIdx=pIdx->pNext, i++){
104791 Table *pTab;
104792 pTab = sqlite3FindTable(db, zRight, zDb);
104793 if( pTab ){
104795 pFK = pTab->pFKey;
104819 pTab->aCol[pFK->aCol[j].iFrom].zName, 0);
104839 Table *pTab; /* Child table contain "REFERENCES" keyword */
104867 pTab = sqlite3LocateTable(pParse, 0, zRight, zDb);
104870 pTab = (Table*)sqliteHashData(k);
104873 if( pTab==0 || pTab->pFKey==0 ) continue;
104874 sqlite3TableLock(pParse, iDb, pTab->tnum, 0, pTab->zName);
104875 if( pTab->nCol+regRow>pParse->nMem ) pParse->nMem = pTab->nCol + regRow;
104876 sqlite3OpenTable(pParse, 0, iDb, pTab, OP_OpenRead);
104877 sqlite3VdbeAddOp4(v, OP_String8, 0, regResult, 0, pTab->zName,
104879 for(i=1, pFK=pTab->pFKey; pFK; i++, pFK=pFK->pNextFrom){
104901 for(i=1, pFK=pTab->pFKey; pFK; i++, pFK=pFK->pNextFrom){
104912 assert( iKey>=0 && iKey<pTab->nCol );
104913 if( iKey!=pTab->iPKey ){
104915 sqlite3ColumnDefault(v, pTab, iKey, regRow);
104927 sqlite3ExprCodeGetColumnOfTable(v, pTab, 0,
105053 Table *pTab = sqliteHashData(x);
105055 if( HasRowid(pTab) ){
105056 sqlite3VdbeAddOp2(v, OP_Integer, pTab->tnum, 2+cnt);
105057 VdbeComment((v, "%s", pTab->zName));
105060 for(pIdx=pTab->pIndex; pIdx; pIdx=pIdx->pNext){
105085 Table *pTab = sqliteHashData(x);
105092 if( pTab->pIndex==0 ) continue;
105093 pPk = HasRowid(pTab) ? 0 : sqlite3PrimaryKeyIndex(pTab);
105099 sqlite3OpenTableAndIndices(pParse, pTab, OP_OpenRead,
105102 for(j=0, pIdx=pTab->pIndex; pIdx; pIdx=pIdx->pNext, j++){
105109 for(j=0; j<pTab->nCol; j++){
105112 if( j==pTab->iPKey ) continue;
105113 if( pTab->aCol[j].notNull==0 ) continue;
105114 sqlite3ExprCodeGetColumnOfTable(v, pTab, iDataCur, j, 3);
105118 zErr = sqlite3MPrintf(db, "NULL value in %s.%s", pTab->zName,
105119 pTab->aCol[j].zName);
105128 for(j=0, pIdx=pTab->pIndex; pIdx; pIdx=pIdx->pNext, j++){
105161 assert( iCol>=0 && iCol<pTab->nCol );
105162 if( pTab->aCol[iCol].notNull ) continue;
105185 for(j=0, pIdx=pTab->pIndex; pIdx; pIdx=pIdx->pNext, j++){
105712 Table *pTab;
105777 pTab = sqlite3FindTable(db, zMasterName, db->aDb[iDb].zName);
105778 if( ALWAYS(pTab) ){
105779 pTab->tabFlags |= TF_Readonly;
106718 static int columnIndex(Table *pTab, const char *zCol){
106720 for(i=0; i<pTab->nCol; i++){
106721 if( sqlite3StrICmp(pTab->aCol[i].zName, zCol)==0 ) return i;
106747 iCol = columnIndex(pSrc->a[i].pTab, zCol);
106787 assert( pSrc->a[iLeft].pTab );
106788 assert( pSrc->a[iRight].pTab );
106864 Table *pLeftTab = pLeft->pTab;
106865 Table *pRightTab = pRight->pTab;
107807 Table *pTab = 0; /* Table structure column is extracted from */
107812 while( pNC && !pTab ){
107816 pTab = pTabList->a[j].pTab;
107823 if( pTab==0 ){
107844 assert( pTab && pExpr->pTab==pTab );
107862 }else if( pTab->pSchema ){
107865 if( iCol<0 ) iCol = pTab->iPKey;
107866 assert( iCol==-1 || (iCol>=0 && iCol<pTab->nCol) );
107872 zType = pTab->aCol[iCol].zType;
107873 zOrigCol = pTab->aCol[iCol].zName;
107874 estWidth = pTab->aCol[iCol].szEst;
107876 zOrigTab = pTab->zName;
107878 int iDb = sqlite3SchemaToIndex(pNC->pParse->db, pTab->pSchema);
107885 zType = pTab->aCol[iCol].zType;
107886 estWidth = pTab->aCol[iCol].szEst;
107997 Table *pTab;
108004 pTab = pTabList->a[j].pTab;
108005 if( iCol<0 ) iCol = pTab->iPKey;
108006 assert( iCol==-1 || (iCol>=0 && iCol<pTab->nCol) );
108010 zCol = pTab->aCol[iCol].zName;
108017 zName = sqlite3MPrintf(db, "%s.%s", pTab->zName, zCol);
108079 Table *pTab; /* Table associated with this expression */
108084 if( pColExpr->op==TK_COLUMN && ALWAYS(pColExpr->pTab!=0) ){
108087 pTab = pColExpr->pTab;
108088 if( iCol<0 ) iCol = pTab->iPKey;
108090 iCol>=0 ? pTab->aCol[iCol].zName : "rowid");
108149 Table *pTab, /* Add column type information to this table */
108163 assert( pTab->nCol==pSelect->pEList->nExpr || db->mallocFailed );
108168 for(i=0, pCol=pTab->aCol; i<pTab->nCol; i++, pCol++){
108181 pTab->szTabRow = sqlite3LogEst(szAll*4);
108189 Table *pTab;
108200 pTab = sqlite3DbMallocZero(db, sizeof(Table) );
108201 if( pTab==0 ){
108207 pTab->nRef = 1;
108208 pTab->zName = 0;
108209 pTab->nRowLogEst = 200; assert( 200==sqlite3LogEst(1048576) );
108210 selectColumnsFromExprList(pParse, pSelect->pEList, &pTab->nCol, &pTab->aCol);
108211 selectAddColumnTypeAndCollation(pParse, pTab, pSelect);
108212 pTab->iPKey = -1;
108214 sqlite3DeleteTable(db, pTab);
108217 return pTab;
110020 if( ALWAYS(pSubitem->pTab!=0) ){
110021 Table *pTabToDel = pSubitem->pTab;
110029 pSubitem->pTab = 0;
110247 Table *pTab;
110257 pTab = p->pSrc->a[0].pTab;
110259 assert( pTab && !pTab->pSelect && pExpr );
110261 if( IsVirtual(pTab) ) return 0;
110267 return pTab;
110278 if( pFrom->pTab && pFrom->zIndex ){
110279 Table *pTab = pFrom->pTab;
110282 for(pIdx=pTab->pIndex;
110441 assert( pFrom->pTab==0 );
110445 Table *pTab;
110461 assert( pFrom->pTab==0 );
110462 pFrom->pTab = pTab = sqlite3DbMallocZero(db, sizeof(Table));
110463 if( pTab==0 ) return WRC_Abort;
110464 pTab->nRef = 1;
110465 pTab->zName = sqlite3DbStrDup(db, pCte->zName);
110466 pTab->iPKey = -1;
110467 pTab->nRowLogEst = 200; assert( 200==sqlite3LogEst(1048576) );
110468 pTab->tabFlags |= TF_Ephemeral;
110485 pItem->pTab = pTab;
110487 pTab->nRef++;
110494 if( pTab->nRef>2 ){
110500 assert( pTab->nRef==1 || ((pSel->selFlags&SF_Recursive) && pTab->nRef==2 ));
110520 selectColumnsFromExprList(pParse, pEList, &pTab->nCol, &pTab->aCol);
110615 Table *pTab;
110616 assert( pFrom->isRecursive==0 || pFrom->pTab );
110618 if( pFrom->pTab!=0 ){
110629 if( pFrom->pTab ) {} else
110636 assert( pFrom->pTab==0 );
110638 pFrom->pTab = pTab = sqlite3DbMallocZero(db, sizeof(Table));
110639 if( pTab==0 ) return WRC_Abort;
110640 pTab->nRef = 1;
110641 pTab->zName = sqlite3MPrintf(db, "sqlite_sq_%p", (void*)pTab);
110643 selectColumnsFromExprList(pParse, pSel->pEList, &pTab->nCol, &pTab->aCol);
110644 pTab->iPKey = -1;
110645 pTab->nRowLogEst = 200; assert( 200==sqlite3LogEst(1048576) );
110646 pTab->tabFlags |= TF_Ephemeral;
110650 assert( pFrom->pTab==0 );
110651 pFrom->pTab = pTab = sqlite3LocateTableItem(pParse, 0, pFrom);
110652 if( pTab==0 ) return WRC_Abort;
110653 if( pTab->nRef==0xffff ){
110655 pTab->zName);
110656 pFrom->pTab = 0;
110659 pTab->nRef++;
110661 if( pTab->pSelect || IsVirtual(pTab) ){
110663 if( sqlite3ViewGetColumnNames(pParse, pTab) ) return WRC_Abort;
110665 pFrom->pSelect = sqlite3SelectDup(db, pTab->pSelect, 0);
110666 sqlite3SelectSetName(pFrom->pSelect, pTab->zName);
110746 Table *pTab = pFrom->pTab;
110752 zTabName = pTab->zName;
110760 iDb = sqlite3SchemaToIndex(db, pTab->pSchema);
110763 for(j=0; j<pTab->nCol; j++){
110764 char *zName = pTab->aCol[j].zName;
110780 if( IsHiddenColumn(&pTab->aCol[j]) ){
110781 assert(IsVirtual(pTab));
110927 Table *pTab = pFrom->pTab;
110928 if( ALWAYS(pTab!=0) && (pTab->tabFlags & TF_Ephemeral)!=0 ){
110933 selectAddColumnTypeAndCollation(pParse, pTab, pSel);
111140 Table *pTab, /* Table being queried */
111144 int bCover = (pIdx!=0 && (HasRowid(pTab) || !IsPrimaryKeyIndex(pIdx)));
111146 pTab->zName,
111309 VdbeComment((v, "%s", pItem->pTab->zName));
111314 pItem->pTab->nRowLogEst = sqlite3LogEst(pSub->nSelectRow);
111338 VdbeComment((v, "materialize \"%s\"", pItem->pTab->zName));
111340 VdbeNoopComment((v, "materialize \"%s\"", pItem->pTab->zName));
111345 pItem->pTab->nRowLogEst = sqlite3LogEst(pSub->nSelectRow);
111348 VdbeComment((v, "end %s", pItem->pTab->zName));
111667 pCol->pTab, pCol->iColumn, pCol->iTable, r1, 0);
111805 Table *pTab;
111806 if( (pTab = isSimpleCount(p, &sAggInfo))!=0 ){
111820 const int iDb = sqlite3SchemaToIndex(pParse->db, pTab->pSchema);
111825 int iRoot = pTab->tnum; /* Root page of scanned b-tree */
111828 sqlite3TableLock(pParse, iDb, pTab->tnum, 0, pTab->zName);
111839 if( !HasRowid(pTab) ) pBest = sqlite3PrimaryKeyIndex(pTab);
111840 for(pIdx=pTab->pIndex; pIdx; pIdx=pIdx->pNext){
111842 && pIdx->szIdxRow<pTab->szTabRow
111861 explainSimpleCount(pParse, pTab, pBest);
112016 if( pItem->pTab ){
112017 sqlite3XPrintf(&x, 0, " tabname=%Q", pItem->pTab->zName);
112324 SQLITE_PRIVATE Trigger *sqlite3TriggerList(Parse *pParse, Table *pTab){
112332 if( pTmpSchema!=pTab->pSchema ){
112337 if( pTrig->pTabSchema==pTab->pSchema
112338 && 0==sqlite3StrICmp(pTrig->table, pTab->zName)
112340 pTrig->pNext = (pList ? pList : pTab->pTrigger);
112346 return (pList ? pList : pTab->pTrigger);
112370 Table *pTab; /* Table that the trigger fires off of */
112419 pTab = sqlite3SrcListLookup(pParse, pTableName);
112420 if( db->init.busy==0 && pName2->n==0 && pTab
112421 && pTab->pSchema==db->aDb[1].pSchema ){
112432 pTab = sqlite3SrcListLookup(pParse, pTableName);
112433 if( !pTab ){
112448 if( IsVirtual(pTab) ){
112471 if( sqlite3StrNICmp(pTab->zName, "sqlite_", 7)==0 ){
112479 if( pTab->pSelect && tr_tm!=TK_INSTEAD ){
112484 if( !pTab->pSelect && tr_tm==TK_INSTEAD ){
112489 iTabDb = sqlite3SchemaToIndex(db, pTab->pSchema);
112497 if( sqlite3AuthCheck(pParse, code, zName, pTab->zName, zDbTrig) ){
112522 pTrigger->pTabSchema = pTab->pSchema;
112606 Table *pTab;
112607 pTab = sqlite3HashFind(&pLink->pTabSchema->tblHash, pLink->table);
112608 assert( pTab!=0 );
112609 pLink->pNext = pTab->pTrigger;
112610 pTab->pTrigger = pLink;
112879 Table *pTab = tableOfTrigger(pTrigger);
112881 for(pp=&pTab->pTrigger; *pp!=pTrigger; pp=&((*pp)->pNext));
112915 Table *pTab, /* The table the contains the triggers */
112925 pList = sqlite3TriggerList(pParse, pTab);
112927 assert( pList==0 || IsVirtual(pTab)==0 );
113088 Table *pTab, /* The table pTrigger is attached to */
113101 assert( pTrigger->zName==0 || pTab==tableOfTrigger(pTrigger) );
113126 pSubParse->pTriggerTab = pTab;
113140 pTab->zName
113202 Table *pTab, /* The table trigger pTrigger is attached to */
113208 assert( pTrigger->zName==0 || pTab==tableOfTrigger(pTrigger) );
113221 pPrg = codeRowTrigger(pParse, pTrigger, pTab, orconf);
113236 Table *pTab, /* The table to code triggers from */
113243 pPrg = getRowTrigger(pParse, p, pTab, orconf);
113311 Table *pTab, /* The table to code triggers from */
113337 sqlite3CodeRowTriggerDirect(pParse, p, pTab, reg, orconf, ignoreJump);
113373 Table *pTab, /* The table to code triggers from */
113386 pPrg = getRowTrigger(pParse, p, pTab, orconf);
113420 Table *pTab, /* The virtual table */
113459 SQLITE_PRIVATE void sqlite3ColumnDefault(Vdbe *v, Table *pTab, int i, int iReg){
113460 assert( pTab!=0 );
113461 if( !pTab->pSelect ){
113464 Column *pCol = &pTab->aCol[i];
113465 VdbeComment((v, "%s.%s", pTab->zName, pCol->zName));
113466 assert( i<pTab->nCol );
113473 if( pTab->aCol[i].affinity==SQLITE_AFF_REAL ){
113495 Table *pTab; /* The table to be updated */
113551 pTab = sqlite3SrcListLookup(pParse, pTabList);
113552 if( pTab==0 ) goto update_cleanup;
113553 iDb = sqlite3SchemaToIndex(pParse->db, pTab->pSchema);
113559 pTrigger = sqlite3TriggersExist(pParse, pTab, TK_UPDATE, pChanges, &tmask);
113560 isView = pTab->pSelect!=0;
113572 if( sqlite3ViewGetColumnNames(pParse, pTab) ){
113575 if( sqlite3IsReadOnly(pParse, pTab, tmask) ){
113586 pPk = HasRowid(pTab) ? 0 : sqlite3PrimaryKeyIndex(pTab);
113587 for(nIdx=0, pIdx=pTab->pIndex; pIdx; pIdx=pIdx->pNext, nIdx++){
113598 aXRef = sqlite3DbMallocRaw(db, sizeof(int) * (pTab->nCol+nIdx) + nIdx+2 );
113600 aRegIdx = aXRef+pTab->nCol;
113604 for(i=0; i<pTab->nCol; i++) aXRef[i] = -1;
113622 for(j=0; j<pTab->nCol; j++){
113623 if( sqlite3StrICmp(pTab->aCol[j].zName, pChanges->a[i].zName)==0 ){
113624 if( j==pTab->iPKey ){
113627 }else if( pPk && (pTab->aCol[j].colFlags & COLFLAG_PRIMKEY)!=0 ){
113634 if( j>=pTab->nCol ){
113648 rc = sqlite3AuthCheck(pParse, SQLITE_UPDATE, pTab->zName,
113649 j<0 ? "ROWID" : pTab->aCol[j].zName,
113669 hasFK = sqlite3FkRequired(pParse, pTab, aXRef, chngKey);
113675 for(j=0, pIdx=pTab->pIndex; pIdx; pIdx=pIdx->pNext, j++){
113700 if( IsVirtual(pTab) ){
113701 updateVirtualTable(pParse, pTabList, pTab, pChanges, pRowidExpr, aXRef,
113714 pParse->nMem += pTab->nCol;
113720 pParse->nMem += pTab->nCol;
113724 sqlite3AuthContextPush(pParse, &sContext, pTab->zName);
113732 sqlite3MaterializeView(pParse, pTab, pWhere, iDataCur);
113745 if( HasRowid(pTab) ){
113782 sqlite3ExprCodeGetColumnOfTable(v, pTab, iDataCur, pPk->aiColumn[i],
113815 for(pIdx=pTab->pIndex; pIdx; pIdx=pIdx->pNext){
113826 sqlite3OpenTableAndIndices(pParse, pTab, OP_OpenWrite, iBaseCur, aToOpen,
113868 u32 oldmask = (hasFK ? sqlite3FkOldmask(pParse, pTab) : 0);
113870 pTrigger, pChanges, 0, TRIGGER_BEFORE|TRIGGER_AFTER, pTab, onError
113872 for(i=0; i<pTab->nCol; i++){
113875 || (pTab->aCol[i].colFlags & COLFLAG_PRIMKEY)!=0
113878 sqlite3ExprCodeGetColumnOfTable(v, pTab, iDataCur, i, regOld+i);
113902 pParse, pTrigger, pChanges, 1, TRIGGER_BEFORE, pTab, onError
113905 for(i=0; i<pTab->nCol; i++){
113906 if( i==pTab->iPKey ){
113920 sqlite3ExprCodeGetColumnOfTable(v, pTab, iDataCur, i, regNew+i);
113931 sqlite3TableAffinity(v, pTab, regNew);
113933 TRIGGER_BEFORE, pTab, regOldRowid, onError, labelContinue);
113954 for(i=0; i<pTab->nCol; i++){
113955 if( aXRef[i]<0 && i!=pTab->iPKey ){
113956 sqlite3ExprCodeGetColumnOfTable(v, pTab, iDataCur, i, regNew+i);
113967 sqlite3GenerateConstraintChecks(pParse, pTab, aRegIdx, iDataCur, iIdxCur,
113972 sqlite3FkCheck(pParse, pTab, regOldRowid, 0, aXRef, chngKey);
113984 sqlite3GenerateRowIndexDelete(pParse, pTab, iDataCur, iIdxCur, aRegIdx);
113995 sqlite3FkCheck(pParse, pTab, 0, regNewRowid, aXRef, chngKey);
113999 sqlite3CompleteInsertion(pParse, pTab, iDataCur, iIdxCur,
114006 sqlite3FkActions(pParse, pTab, pChanges, regOldRowid, aXRef, chngKey);
114017 TRIGGER_AFTER, pTab, regOldRowid, onError, labelContinue);
114033 for(i=0, pIdx=pTab->pIndex; pIdx; pIdx=pIdx->pNext, i++){
114101 Table *pTab, /* The virtual table */
114117 const char *pVTab = (const char*)sqlite3GetVTable(db, pTab);
114128 assert( pTab->iPKey<0 );
114129 for(i=0; i<pTab->nCol; i++){
114133 pExpr = sqlite3Expr(db, TK_ID, pTab->aCol[i].zName);
114144 sqlite3VdbeAddOp2(v, OP_OpenEphemeral, ephemTab, pTab->nCol+1+(pRowid!=0));
114154 pParse->nMem += pTab->nCol+1;
114158 for(i=0; i<pTab->nCol; i++){
114161 sqlite3VtabMakeWritable(pParse, pTab);
114162 sqlite3VdbeAddOp4(v, OP_VUpdate, 0, pTab->nCol+2, iReg, pVTab, P4_VTAB);
114574 Table *pTab; /* The Table object to which the virtual table belongs */
114674 SQLITE_PRIVATE VTable *sqlite3GetVTable(sqlite3 *db, Table *pTab){
114676 assert( IsVirtual(pTab) );
114677 for(pVtab=pTab->pVTable; pVtab && pVtab->db!=db; pVtab=pVtab->pNext);
114924 Table *pTab = pParse->pNewTable; /* The table being constructed */
114927 if( pTab==0 ) return;
114930 if( pTab->nModuleArg<1 ) return;
114959 iDb = sqlite3SchemaToIndex(db, pTab->pSchema);
114965 pTab->zName,
114966 pTab->zName,
114975 zWhere = sqlite3MPrintf(db, "name='%q' AND type='table'", pTab->zName);
114979 sqlite3VdbeAddOp4(v, OP_String8, 0, iReg, 0, pTab->zName, 0);
114990 Schema *pSchema = pTab->pSchema;
114991 const char *zName = pTab->zName;
114993 pOld = sqlite3HashInsert(&pSchema->tblHash, zName, pTab);
114996 assert( pTab==pOld ); /* Malloc must have failed inside HashInsert() */
115035 Table *pTab,
115043 const char *const*azArg = (const char *const*)pTab->azModuleArg;
115044 int nArg = pTab->nModuleArg;
115052 if( pCtx->pTab==pTab ){
115054 "vtable constructor called recursively: %s", pTab->zName
115060 zModuleName = sqlite3MPrintf(db, "%s", pTab->zName);
115073 iDb = sqlite3SchemaToIndex(db, pTab->pSchema);
115074 pTab->azModuleArg[1] = db->aDb[iDb].zName;
115079 sCtx.pTab = pTab;
115087 assert( sCtx.pTab==pTab );
115105 *pzErr = sqlite3MPrintf(db, zFormat, pTab->zName);
115116 pVTable->pNext = pTab->pVTable;
115117 pTab->pVTable = pVTable;
115119 for(iCol=0; iCol<pTab->nCol; iCol++){
115120 char *zType = pTab->aCol[iCol].zType;
115124 pTab->tabFlags |= oooHidden;
115148 pTab->aCol[iCol].colFlags |= COLFLAG_HIDDEN;
115151 pTab->tabFlags |= oooHidden;
115168 SQLITE_PRIVATE int sqlite3VtabCallConnect(Parse *pParse, Table *pTab){
115174 assert( pTab );
115175 if( (pTab->tabFlags & TF_Virtual)==0 || sqlite3GetVTable(db, pTab) ){
115180 zMod = pTab->azModuleArg[0];
115184 const char *zModule = pTab->azModuleArg[0];
115189 rc = vtabCallConstructor(db, pTab, pMod, pMod->pModule->xConnect, &zErr);
115240 Table *pTab;
115244 pTab = sqlite3FindTable(db, zTab, db->aDb[iDb].zName);
115245 assert( pTab && (pTab->tabFlags & TF_Virtual)!=0 && !pTab->pVTable );
115248 zMod = pTab->azModuleArg[0];
115259 rc = vtabCallConstructor(db, pTab, pMod, pMod->pModule->xCreate, pzErr);
115264 if( rc==SQLITE_OK && ALWAYS(sqlite3GetVTable(db, pTab)) ){
115267 addToVTrans(db, sqlite3GetVTable(db, pTab));
115283 Table *pTab;
115298 pTab = pCtx->pTab;
115299 assert( (pTab->tabFlags & TF_Virtual)!=0 );
115315 if( !pTab->aCol ){
115316 pTab->aCol = pParse->pNewTable->aCol;
115317 pTab->nCol = pParse->pNewTable->nCol;
115352 Table *pTab;
115354 pTab = sqlite3FindTable(db, zTab, db->aDb[iDb].zName);
115355 if( ALWAYS(pTab!=0 && pTab->pVTable!=0) ){
115357 for(p=pTab->pVTable; p; p=p->pNext){
115363 p = vtabDisconnectAll(db, pTab);
115367 assert( pTab->pVTable==p && p->pNext==0 );
115369 pTab->pVTable = 0;
115563 Table *pTab;
115577 pTab = pExpr->pTab;
115578 if( NEVER(pTab==0) ) return pDef;
115579 if( (pTab->tabFlags & TF_Virtual)==0 ) return pDef;
115580 pVtab = sqlite3GetVTable(db, pTab)->pVtab;
115623 SQLITE_PRIVATE void sqlite3VtabMakeWritable(Parse *pParse, Table *pTab){
115628 assert( IsVirtual(pTab) );
115630 if( pTab==pToplevel->apVtabLock[i] ) return;
115636 pToplevel->apVtabLock[pToplevel->nVtabLock++] = pTab;
115682 assert( p->pTab==0 || (p->pTab->tabFlags & TF_Virtual)!=0 );
116838 || IsVirtual(pLeft->pTab) /* Value might be numeric */
117732 Table *pTab;
117742 pTab = pTabList->a[0].pTab;
117766 for(pIdx=pTab->pIndex; pIdx; pIdx=pIdx->pNext){
117772 if( iIdxCol<0 || pTab->aCol[iCol].notNull==0 ){
117855 aff = pSrc->pTab->aCol[pTerm->u.leftColumn].affinity;
117905 pTable = pSrc->pTab;
118169 static int vtabBestIndex(Parse *pParse, Table *pTab, sqlite3_index_info *p){
118170 sqlite3_vtab *pVtab = sqlite3GetVTable(pParse->db, pTab)->pVtab;
118193 "table %s: xBestIndex returned an invalid plan", pTab->zName);
119207 static void explainIndexRange(StrAccum *pStr, WhereLoop *pLoop, Table *pTab){
119212 Column *aCol = pTab->aCol;
119298 if( !HasRowid(pItem->pTab) && IsPrimaryKeyIndex(pIdx) ){
119314 explainIndexRange(&str, pLoop, pItem->pTab);
119452 VdbeModuleComment((v, "Begin WHERE-loop%d: %s",iLevel,pTabItem->pTab->zName));
119483 VdbeComment((v, "next row of \"%s\"", pTabItem->pTab->zName));
119981 Table *pTab = pTabItem->pTab;
120026 if( HasRowid(pTab) ){
120030 Index *pPk = sqlite3PrimaryKeyIndex(pTab);
120108 if( HasRowid(pTab) ){
120109 r = sqlite3ExprCodeGetColumn(pParse, pTab, -1, iCur, regRowid, 0);
120113 Index *pPk = sqlite3PrimaryKeyIndex(pTab);
120121 sqlite3ExprCodeGetColumn(pParse, pTab, iCol, iCur, r+iPk, 0);
120180 && (HasRowid(pTab) || !IsPrimaryKeyIndex(pSubLoop->u.btree.pIndex))
120351 Table *pTab = pItem->pTab;
120355 pItem->zAlias ? pItem->zAlias : pTab->zName);
120926 && (iCol<0 || pSrc->pTab->aCol[iCol].notNull)
121062 rCostIdx = pNew->nOut + 1 + (15*pProbe->szIdxRow)/pSrc->pTab->szTabRow;
121255 Table *pTab; /* Table being queried */
121261 pTab = pSrc->pTab;
121263 assert( !IsVirtual(pSrc->pTab) );
121268 }else if( !HasRowid(pTab) ){
121269 pProbe = pTab->pIndex;
121282 sPk.pTable = pTab;
121283 sPk.szIdxRow = pTab->szTabRow;
121284 aiRowEstPk[0] = pTab->nRowLogEst;
121286 pFirst = pSrc->pTab->pIndex;
121294 rSize = pTab->nRowLogEst;
121305 && HasRowid(pTab)
121329 if( pTab->pSelect==0 && (pTab->tabFlags & TF_Ephemeral)==0 ){
121332 ApplyCostMultiplier(pNew->rSetup, pTab->costMult);
121375 ApplyCostMultiplier(pNew->rRun, pTab->costMult);
121392 || !HasRowid(pTab)
121395 && (pProbe->szIdxRow<pTab->szTabRow)
121407 pNew->rRun = rSize + 1 + (15*pProbe->szIdxRow)/pTab->szTabRow;
121411 ApplyCostMultiplier(pNew->rRun, pTab->costMult);
121446 Table *pTab;
121467 pTab = pSrc->pTab;
121468 assert( IsVirtual(pTab) );
121527 rc = vtabBestIndex(pParse, pTab, pIdxInfo);
121544 sqlite3ErrorMsg(pParse, "%s.xBestIndex() malfunction", pTab->zName);
121664 if( IsVirtual(pItem->pTab) ){
121750 if( IsVirtual(pItem->pTab) ){
122466 Table *pTab;
122473 pTab = pItem->pTab;
122474 if( IsVirtual(pTab) ) return 0;
122490 for(pIdx=pTab->pIndex; pIdx; pIdx=pIdx->pNext){
122897 if( HasRowid(pTabList->a[0].pTab) ){
122907 Table *pTab; /* Table to open */
122912 pTab = pTabItem->pTab;
122913 iDb = sqlite3SchemaToIndex(db, pTab->pSchema);
122915 if( (pTab->tabFlags & TF_Ephemeral)!=0 || pTab->pSelect ){
122920 const char *pVTab = (const char *)sqlite3GetVTable(db, pTab);
122923 }else if( IsVirtual(pTab) ){
122934 sqlite3OpenTable(pParse, pTabItem->iCursor, iDb, pTab, op);
122936 testcase( !pWInfo->okOnePass && pTab->nCol==BMS-1 );
122937 testcase( !pWInfo->okOnePass && pTab->nCol==BMS );
122938 if( !pWInfo->okOnePass && pTab->nCol<BMS && HasRowid(pTab) ){
122944 assert( n<=pTab->nCol );
122947 sqlite3TableLock(pParse, iDb, pTab->tnum, 0, pTab->zName);
122955 if( !HasRowid(pTab) && IsPrimaryKeyIndex(pIx)
122963 Index *pJ = pTabItem->pTab->pIndex;
122979 assert( pIx->pSchema==pTab->pSchema );
123118 pWInfo->pTabList->a[pLevel->iFrom].pTab->zName));
123132 Table *pTab = pTabItem->pTab;
123133 assert( pTab!=0 );
123165 if( (pTab->tabFlags & TF_Ephemeral)==0
123166 && pTab->pSelect==0
123205 assert( pIdx->pTable==pTab );
123206 if( !HasRowid(pTab) ){
123207 Index *pPk = sqlite3PrimaryKeyIndex(pTab);
128930 Table *pTab = (Table *)sqliteHashData(p);
128931 if( IsVirtual(pTab) ) sqlite3VtabDisconnect(db, pTab);
131178 Table *pTab = 0;
131203 pTab = sqlite3FindTable(db, zTableName, zDbName);
131204 if( !pTab || pTab->pSelect ){
131205 pTab = 0;
131213 for(iCol=0; iCol<pTab->nCol; iCol++){
131214 pCol = &pTab->aCol[iCol];
131219 if( iCol==pTab->nCol ){
131220 if( HasRowid(pTab) && sqlite3IsRowid(zColumnName) ){
131221 iCol = pTab->iPKey;
131222 pCol = iCol>=0 ? &pTab->aCol[iCol] : 0;
131224 pTab = 0;
131245 autoinc = pTab->iPKey==iCol && (pTab->tabFlags & TF_Autoincrement)!=0;
131267 if( SQLITE_OK==rc && !pTab ){
137002 Fts3Table *pTab, /* FTS Table pointer */
137048 pTab->bDescIdx, nDiff, pLeft, nLeft, &pRight, &nRight
137069 Fts3Table *pTab = (Fts3Table *)pCsr->base.pVtab;
137080 rc = fts3TermSelect(pTab, pToken, p->iColumn, &nThis, &pThis);
137082 rc = fts3EvalPhraseMergeToken(pTab, p, iToken, pThis, nThis);
137214 Fts3Table *pTab = (Fts3Table *)pCsr->base.pVtab;
137225 && pCsr->bDesc==pTab->bDescIdx
137229 && pTab->bNoIncrDoclist==0
137242 int iCol = (p->iColumn >= pTab->nColumn ? -1 : p->iColumn);
137247 rc = sqlite3Fts3MsrIncrStart(pTab, pSegcsr, iCol, pToken->z, pToken->n);
137364 Fts3Table *pTab,
137383 if( pTab->bDescIdx==0 || pDL->pNextDocid==0 ){
137427 Fts3Table *pTab, /* Virtual table handle */
137438 fts3EvalDlPhraseNext(pTab, &pPhrase->doclist, pbEof);
137449 pTab, pToken->pSegcsr, &p->iDocid, &p->pList, &p->nList
137485 Fts3Table *pTab = (Fts3Table *)pCsr->base.pVtab;
137493 rc = sqlite3Fts3MsrIncrNext(pTab, p->aToken[0].pSegcsr,
137512 rc = incrPhraseTokenNext(pTab, p, i, &a[i], &bEof);
137526 rc = incrPhraseTokenNext(pTab, p, i, &a[i], &bEof);
137585 Fts3Table *pTab = (Fts3Table *)pCsr->base.pVtab;
137589 }else if( pCsr->bDesc!=pTab->bDescIdx && pDL->nAll ){
137590 sqlite3Fts3DoclistPrev(pTab->bDescIdx, pDL->aAll, pDL->nAll,
137595 fts3EvalDlPhraseNext(pTab, pDL, pbEof);
137791 Fts3Table *pTab = (Fts3Table *)pCsr->base.pVtab;
137806 if( pTab->zContentTbl ){
137884 rc = fts3TermSelect(pTab, pToken, pTC->iCol, &nList, &pList);
137888 pTab, pTC->pPhrase, pTC->iToken,pList,nList
137919 Fts3Table *pTab = (Fts3Table *)pCsr->base.pVtab;
137929 if( rc==SQLITE_OK && nToken>1 && pTab->bFts4 ){
138576 Fts3Table *pTab = (Fts3Table *)pCsr->base.pVtab;
138597 pE->aMI = (u32 *)sqlite3_malloc(pTab->nColumn * 3 * sizeof(u32));
138599 memset(pE->aMI, 0, pTab->nColumn * 3 * sizeof(u32));
138685 Fts3Table *pTab = (Fts3Table *)pCsr->base.pVtab;
138691 for(iCol=0; iCol<pTab->nColumn; iCol++){
138699 for(iCol=0; iCol<pTab->nColumn; iCol++){
138735 Fts3Table *pTab = (Fts3Table *)pCsr->base.pVtab;
138743 assert( iCol>=0 && iCol<pTab->nColumn );
138744 if( (pPhrase->iColumn<pTab->nColumn && pPhrase->iColumn!=iCol) ){
138752 int bDescDoclist = pTab->bDescIdx; /* For DOCID_CMP macro */
142669 Fts3tokTable *pTab = 0;
142699 pTab = (Fts3tokTable *)sqlite3_malloc(sizeof(Fts3tokTable));
142700 if( pTab==0 ){
142706 memset(pTab, 0, sizeof(Fts3tokTable));
142707 pTab->pMod = pMod;
142708 pTab->pTok = pTok;
142709 *ppVtab = &pTab->base;
142726 Fts3tokTable *pTab = (Fts3tokTable *)pVtab;
142728 pTab->pMod->xDestroy(pTab->pTok);
142729 sqlite3_free(pTab);
142785 Fts3tokTable *pTab = (Fts3tokTable *)(pCsr->base.pVtab);
142786 pTab->pMod->xClose(pCsr->pCsr);
142815 Fts3tokTable *pTab = (Fts3tokTable *)(pCursor->pVtab);
142819 rc = pTab->pMod->xNext(pCsr->pCsr,
142844 Fts3tokTable *pTab = (Fts3tokTable *)(pCursor->pVtab);
142858 rc = pTab->pMod->xOpen(pTab->pTok, pCsr->zInput, nByte, &pCsr->pCsr);
142860 pCsr->pCsr->pTokenizer = pTab->pTok;
143387 Fts3Table *pTab, /* FTS3 table handle */
143394 rc = fts3SqlStmt(pTab, SQL_SELECT_DOCSIZE, &pStmt, 0);
143412 Fts3Table *pTab, /* Fts3 table handle */
143417 rc = fts3SqlStmt(pTab, SQL_SELECT_STAT, &pStmt, 0);
143433 Fts3Table *pTab, /* Fts3 table handle */
143437 return fts3SelectDocsize(pTab, iDocid, ppStmt);
144366 static int fts3SegReaderFirstDocid(Fts3Table *pTab, Fts3SegReader *pReader){
144370 if( pTab->bDescIdx && fts3SegReaderIsPending(pReader) ){
144399 Fts3Table *pTab,
144410 if( pTab->bDescIdx && fts3SegReaderIsPending(pReader) ){
144474 if( pTab->bDescIdx ){
149166 Fts3Table *pTab, /* FTS3 table snippet comes from */
149198 pMod = (sqlite3_tokenizer_module *)pTab->pTokenizer->pModule;
149203 rc = sqlite3Fts3OpenTokenizer(pTab->pTokenizer, iLangid, zDoc, nDoc, &pC);
149240 Fts3Table *pTab = (Fts3Table *)pCsr->base.pVtab;
149263 pMod = (sqlite3_tokenizer_module *)pTab->pTokenizer->pModule;
149264 rc = sqlite3Fts3OpenTokenizer(pTab->pTokenizer, pCsr->iLangid, zDoc,nDoc,&pC);
149303 pTab, pCsr->iLangid, nSnippet, &zDoc[iBegin], n, &iPos, &hlmask
149448 Fts3Table *pTab = (Fts3Table *)p->pCursor->base.pVtab;
149470 if( (pPhrase->iColumn>=pTab->nColumn || pPhrase->iColumn==iCol) ){
149484 Fts3Table *pTab,
149490 || (cArg==FTS3_MATCHINFO_NDOC && pTab->bFts4)
149491 || (cArg==FTS3_MATCHINFO_AVGLENGTH && pTab->bFts4)
149492 || (cArg==FTS3_MATCHINFO_LENGTH && pTab->bHasDocsize)
149533 Fts3Table *pTab,
149543 int rc = sqlite3Fts3SelectDoctotal(pTab, ppStmt);
149713 Fts3Table *pTab = (Fts3Table *)pCsr->base.pVtab;
149730 rc = fts3MatchinfoSelectDoctotal(pTab, &pSelect, &nDoc, 0);
149740 rc = fts3MatchinfoSelectDoctotal(pTab, &pSelect, &nDoc, &a);
149756 rc = sqlite3Fts3SelectDocsize(pTab, pCsr->iPrevId, &pSelectDocsize);
149789 rc = fts3MatchinfoSelectDoctotal(pTab, &pSelect, &pInfo->nDoc, 0);
149817 Fts3Table *pTab = (Fts3Table *)pCsr->base.pVtab;
149823 sInfo.nCol = pTab->nColumn;
149889 Fts3Table *pTab = (Fts3Table *)pCsr->base.pVtab;
149934 for(iRead=0; iRead<pTab->nColumn; iRead++){
149969 sqlite3Fts3SegmentsClose(pTab);
150032 Fts3Table *pTab = (Fts3Table *)pCsr->base.pVtab;
150033 sqlite3_tokenizer_module const *pMod = pTab->pTokenizer->pModule;
150064 for(iCol=0; iCol<pTab->nColumn; iCol++){
150099 rc = sqlite3Fts3OpenTokenizer(pTab->pTokenizer, pCsr->iLangid,
150137 }else if( rc==SQLITE_DONE && pTab->zContentTbl==0 ){
150153 sqlite3Fts3SegmentsClose(pTab);
150171 Fts3Table *pTab = (Fts3Table *)pCsr->base.pVtab;
150179 if( fts3MatchinfoCheck(pTab, zArg[i], &zErr) ){
150197 sqlite3Fts3SegmentsClose(pTab);
155357 StatTable *pTab = 0;
155372 pTab = (StatTable *)sqlite3_malloc64(sizeof(StatTable));
155373 if( pTab==0 ) rc = SQLITE_NOMEM;
155376 assert( rc==SQLITE_OK || pTab==0 );
155378 memset(pTab, 0, sizeof(StatTable));
155379 pTab->db = db;
155380 pTab->iDb = iDb;
155383 *ppVtab = (sqlite3_vtab*)pTab;
155427 StatTable *pTab = (StatTable *)pVTab;
155444 " ORDER BY name", pTab->db->aDb[pTab->iDb].zName);
155448 rc = sqlite3_prepare_v2(pTab->db, zSql, -1, &pCsr->pStmt, 0);
155615 StatTable *pTab = (StatTable *)((sqlite3_vtab_cursor *)pCsr)->pVtab;
155616 Btree *pBt = pTab->db->aDb[pTab->iDb].pBt;
155644 StatTable *pTab = (StatTable *)pCursor->pVtab;
155645 Btree *pBt = pTab->db->aDb[pTab->iDb].pBt;