亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? build.c

?? Trolltech公司發布的基于C++圖形開發環境
?? C
?? 第 1 頁 / 共 5 頁
字號:
/*** 2001 September 15**** The author disclaims copyright to this source code.  In place of** a legal notice, here is a blessing:****    May you do good and not evil.**    May you find forgiveness for yourself and forgive others.**    May you share freely, never taking more than you give.***************************************************************************** This file contains C code routines that are called by the SQLite parser** when syntax rules are reduced.  The routines in this file handle the** following kinds of SQL syntax:****     CREATE TABLE**     DROP TABLE**     CREATE INDEX**     DROP INDEX**     creating ID lists**     BEGIN TRANSACTION**     COMMIT**     ROLLBACK**     PRAGMA**** $Id: qt/build.c   3.3.4   edited Mar 30 2004 $*/#include "sqliteInt.h"#include <ctype.h>/*** This routine is called when a new SQL statement is beginning to** be parsed.  Check to see if the schema for the database needs** to be read from the SQLITE_MASTER and SQLITE_TEMP_MASTER tables.** If it does, then read it.*/void sqliteBeginParse(Parse *pParse, int explainFlag){  sqlite *db = pParse->db;  int i;  pParse->explain = explainFlag;  if((db->flags & SQLITE_Initialized)==0 && db->init.busy==0 ){    int rc = sqliteInit(db, &pParse->zErrMsg);    if( rc!=SQLITE_OK ){      pParse->rc = rc;      pParse->nErr++;    }  }  for(i=0; i<db->nDb; i++){    DbClearProperty(db, i, DB_Locked);    if( !db->aDb[i].inTrans ){      DbClearProperty(db, i, DB_Cookie);    }  }  pParse->nVar = 0;}/*** This routine is called after a single SQL statement has been** parsed and we want to execute the VDBE code to implement ** that statement.  Prior action routines should have already** constructed VDBE code to do the work of the SQL statement.** This routine just has to execute the VDBE code.**** Note that if an error occurred, it might be the case that** no VDBE code was generated.*/void sqliteExec(Parse *pParse){  sqlite *db = pParse->db;  Vdbe *v = pParse->pVdbe;  if( v==0 && (v = sqliteGetVdbe(pParse))!=0 ){    sqliteVdbeAddOp(v, OP_Halt, 0, 0);  }  if( sqlite_malloc_failed ) return;  if( v && pParse->nErr==0 ){    FILE *trace = (db->flags & SQLITE_VdbeTrace)!=0 ? stdout : 0;    sqliteVdbeTrace(v, trace);    sqliteVdbeMakeReady(v, pParse->nVar, pParse->explain);    pParse->rc = pParse->nErr ? SQLITE_ERROR : SQLITE_DONE;    pParse->colNamesSet = 0;  }else if( pParse->rc==SQLITE_OK ){    pParse->rc = SQLITE_ERROR;  }  pParse->nTab = 0;  pParse->nMem = 0;  pParse->nSet = 0;  pParse->nAgg = 0;  pParse->nVar = 0;}/*** Locate the in-memory structure that describes ** a particular database table given the name** of that table and (optionally) the name of the database** containing the table.  Return NULL if not found.**** If zDatabase is 0, all databases are searched for the** table and the first matching table is returned.  (No checking** for duplicate table names is done.)  The search order is** TEMP first, then MAIN, then any auxiliary databases added** using the ATTACH command.**** See also sqliteLocateTable().*/Table *sqliteFindTable(sqlite *db, const char *zName, const char *zDatabase){  Table *p = 0;  int i;  for(i=0; i<db->nDb; i++){    int j = (i<2) ? i^1 : i;   /* Search TEMP before MAIN */    if( zDatabase!=0 && sqliteStrICmp(zDatabase, db->aDb[j].zName) ) continue;    p = sqliteHashFind(&db->aDb[j].tblHash, zName, strlen(zName)+1);    if( p ) break;  }  return p;}/*** Locate the in-memory structure that describes ** a particular database table given the name** of that table and (optionally) the name of the database** containing the table.  Return NULL if not found.** Also leave an error message in pParse->zErrMsg.**** The difference between this routine and sqliteFindTable()** is that this routine leaves an error message in pParse->zErrMsg** where sqliteFindTable() does not.*/Table *sqliteLocateTable(Parse *pParse, const char *zName, const char *zDbase){  Table *p;  p = sqliteFindTable(pParse->db, zName, zDbase);  if( p==0 ){    if( zDbase ){      sqliteErrorMsg(pParse, "no such table: %s.%s", zDbase, zName);    }else if( sqliteFindTable(pParse->db, zName, 0)!=0 ){      sqliteErrorMsg(pParse, "table \"%s\" is not in database \"%s\"",         zName, zDbase);    }else{      sqliteErrorMsg(pParse, "no such table: %s", zName);    }  }  return p;}/*** Locate the in-memory structure that describes ** a particular index given the name of that index** and the name of the database that contains the index.** Return NULL if not found.**** If zDatabase is 0, all databases are searched for the** table and the first matching index is returned.  (No checking** for duplicate index names is done.)  The search order is** TEMP first, then MAIN, then any auxiliary databases added** using the ATTACH command.*/Index *sqliteFindIndex(sqlite *db, const char *zName, const char *zDb){  Index *p = 0;  int i;  for(i=0; i<db->nDb; i++){    int j = (i<2) ? i^1 : i;  /* Search TEMP before MAIN */    if( zDb && sqliteStrICmp(zDb, db->aDb[j].zName) ) continue;    p = sqliteHashFind(&db->aDb[j].idxHash, zName, strlen(zName)+1);    if( p ) break;  }  return p;}/*** Remove the given index from the index hash table, and free** its memory structures.**** The index is removed from the database hash tables but** it is not unlinked from the Table that it indexes.** Unlinking from the Table must be done by the calling function.*/static void sqliteDeleteIndex(sqlite *db, Index *p){  Index *pOld;  assert( db!=0 && p->zName!=0 );  pOld = sqliteHashInsert(&db->aDb[p->iDb].idxHash, p->zName,                          strlen(p->zName)+1, 0);  if( pOld!=0 && pOld!=p ){    sqliteHashInsert(&db->aDb[p->iDb].idxHash, pOld->zName,                     strlen(pOld->zName)+1, pOld);  }  sqliteFree(p);}/*** Unlink the given index from its table, then remove** the index from the index hash table and free its memory** structures.*/void sqliteUnlinkAndDeleteIndex(sqlite *db, Index *pIndex){  if( pIndex->pTable->pIndex==pIndex ){    pIndex->pTable->pIndex = pIndex->pNext;  }else{    Index *p;    for(p=pIndex->pTable->pIndex; p && p->pNext!=pIndex; p=p->pNext){}    if( p && p->pNext==pIndex ){      p->pNext = pIndex->pNext;    }  }  sqliteDeleteIndex(db, pIndex);}/*** Erase all schema information from the in-memory hash tables of** database connection.  This routine is called to reclaim memory** before the connection closes.  It is also called during a rollback** if there were schema changes during the transaction.**** If iDb<=0 then reset the internal schema tables for all database** files.  If iDb>=2 then reset the internal schema for only the** single file indicated.*/void sqliteResetInternalSchema(sqlite *db, int iDb){  HashElem *pElem;  Hash temp1;  Hash temp2;  int i, j;  assert( iDb>=0 && iDb<db->nDb );  db->flags &= ~SQLITE_Initialized;  for(i=iDb; i<db->nDb; i++){    Db *pDb = &db->aDb[i];    temp1 = pDb->tblHash;    temp2 = pDb->trigHash;    sqliteHashInit(&pDb->trigHash, SQLITE_HASH_STRING, 0);    sqliteHashClear(&pDb->aFKey);    sqliteHashClear(&pDb->idxHash);    for(pElem=sqliteHashFirst(&temp2); pElem; pElem=sqliteHashNext(pElem)){      Trigger *pTrigger = sqliteHashData(pElem);      sqliteDeleteTrigger(pTrigger);    }    sqliteHashClear(&temp2);    sqliteHashInit(&pDb->tblHash, SQLITE_HASH_STRING, 0);    for(pElem=sqliteHashFirst(&temp1); pElem; pElem=sqliteHashNext(pElem)){      Table *pTab = sqliteHashData(pElem);      sqliteDeleteTable(db, pTab);    }    sqliteHashClear(&temp1);    DbClearProperty(db, i, DB_SchemaLoaded);    if( iDb>0 ) return;  }  assert( iDb==0 );  db->flags &= ~SQLITE_InternChanges;  /* If one or more of the auxiliary database files has been closed,  ** then remove then from the auxiliary database list.  We take the  ** opportunity to do this here since we have just deleted all of the  ** schema hash tables and therefore do not have to make any changes  ** to any of those tables.  */  for(i=0; i<db->nDb; i++){    struct Db *pDb = &db->aDb[i];    if( pDb->pBt==0 ){      if( pDb->pAux && pDb->xFreeAux ) pDb->xFreeAux(pDb->pAux);      pDb->pAux = 0;    }  }  for(i=j=2; i<db->nDb; i++){    struct Db *pDb = &db->aDb[i];    if( pDb->pBt==0 ){      sqliteFree(pDb->zName);      pDb->zName = 0;      continue;    }    if( j<i ){      db->aDb[j] = db->aDb[i];    }    j++;  }  memset(&db->aDb[j], 0, (db->nDb-j)*sizeof(db->aDb[j]));  db->nDb = j;  if( db->nDb<=2 && db->aDb!=db->aDbStatic ){    memcpy(db->aDbStatic, db->aDb, 2*sizeof(db->aDb[0]));    sqliteFree(db->aDb);    db->aDb = db->aDbStatic;  }}/*** This routine is called whenever a rollback occurs.  If there were** schema changes during the transaction, then we have to reset the** internal hash tables and reload them from disk.*/void sqliteRollbackInternalChanges(sqlite *db){  if( db->flags & SQLITE_InternChanges ){    sqliteResetInternalSchema(db, 0);  }}/*** This routine is called when a commit occurs.*/void sqliteCommitInternalChanges(sqlite *db){  db->aDb[0].schema_cookie = db->next_cookie;  db->flags &= ~SQLITE_InternChanges;}/*** Remove the memory data structures associated with the given** Table.  No changes are made to disk by this routine.**** This routine just deletes the data structure.  It does not unlink** the table data structure from the hash table.  Nor does it remove** foreign keys from the sqlite.aFKey hash table.  But it does destroy** memory structures of the indices and foreign keys associated with ** the table.**** Indices associated with the table are unlinked from the "db"** data structure if db!=NULL.  If db==NULL, indices attached to** the table are deleted, but it is assumed they have already been** unlinked.*/void sqliteDeleteTable(sqlite *db, Table *pTable){  int i;  Index *pIndex, *pNext;  FKey *pFKey, *pNextFKey;  if( pTable==0 ) return;  /* Delete all indices associated with this table  */  for(pIndex = pTable->pIndex; pIndex; pIndex=pNext){    pNext = pIndex->pNext;    assert( pIndex->iDb==pTable->iDb || (pTable->iDb==0 && pIndex->iDb==1) );    sqliteDeleteIndex(db, pIndex);  }  /* Delete all foreign keys associated with this table.  The keys  ** should have already been unlinked from the db->aFKey hash table   */  for(pFKey=pTable->pFKey; pFKey; pFKey=pNextFKey){    pNextFKey = pFKey->pNextFrom;    assert( pTable->iDb<db->nDb );    assert( sqliteHashFind(&db->aDb[pTable->iDb].aFKey,                           pFKey->zTo, strlen(pFKey->zTo)+1)!=pFKey );    sqliteFree(pFKey);  }  /* Delete the Table structure itself.  */  for(i=0; i<pTable->nCol; i++){    sqliteFree(pTable->aCol[i].zName);    sqliteFree(pTable->aCol[i].zDflt);    sqliteFree(pTable->aCol[i].zType);  }  sqliteFree(pTable->zName);  sqliteFree(pTable->aCol);  sqliteSelectDelete(pTable->pSelect);  sqliteFree(pTable);}/*** Unlink the given table from the hash tables and the delete the** table structure with all its indices and foreign keys.*/static void sqliteUnlinkAndDeleteTable(sqlite *db, Table *p){  Table *pOld;  FKey *pF1, *pF2;  int i = p->iDb;  assert( db!=0 );  pOld = sqliteHashInsert(&db->aDb[i].tblHash, p->zName, strlen(p->zName)+1, 0);  assert( pOld==0 || pOld==p );  for(pF1=p->pFKey; pF1; pF1=pF1->pNextFrom){    int nTo = strlen(pF1->zTo) + 1;    pF2 = sqliteHashFind(&db->aDb[i].aFKey, pF1->zTo, nTo);    if( pF2==pF1 ){      sqliteHashInsert(&db->aDb[i].aFKey, pF1->zTo, nTo, pF1->pNextTo);    }else{      while( pF2 && pF2->pNextTo!=pF1 ){ pF2=pF2->pNextTo; }      if( pF2 ){        pF2->pNextTo = pF1->pNextTo;      }    }  }  sqliteDeleteTable(db, p);}/*** Construct the name of a user table or index from a token.**** Space to hold the name is obtained from sqliteMalloc() and must** be freed by the calling function.*/char *sqliteTableNameFromToken(Token *pName){  char *zName = sqliteStrNDup(pName->z, pName->n);  sqliteDequote(zName);  return zName;}/*** Generate code to open the appropriate master table.  The table** opened will be SQLITE_MASTER for persistent tables and ** SQLITE_TEMP_MASTER for temporary tables.  The table is opened** on cursor 0.*/void sqliteOpenMasterTable(Vdbe *v, int isTemp){  sqliteVdbeAddOp(v, OP_Integer, isTemp, 0);  sqliteVdbeAddOp(v, OP_OpenWrite, 0, 2);}/*** Begin constructing a new table representation in memory.  This is** the first of several action routines that get called in response** to a CREATE TABLE statement.  In particular, this routine is called** after seeing tokens "CREATE" and "TABLE" and the table name.  The** pStart token is the CREATE and pName is the table name.  The isTemp** flag is true if the table should be stored in the auxiliary database** file instead of in the main database file.  This is normally the case** when the "TEMP" or "TEMPORARY" keyword occurs in between** CREATE and TABLE.**** The new table record is initialized and put in pParse->pNewTable.** As more of the CREATE TABLE statement is parsed, additional action** routines will be called to add more information to this record.** At the end of the CREATE TABLE statement, the sqliteEndTable() routine** is called to complete the construction of the new table record.*/void sqliteStartTable(

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产欧美精品一区二区色综合| av电影在线观看完整版一区二区| 99久久亚洲一区二区三区青草| 国产精品初高中害羞小美女文| 成人高清视频在线| 亚洲人成小说网站色在线| 91网上在线视频| 丝袜美腿亚洲一区| 日韩一区二区免费电影| 国产馆精品极品| 亚洲精品国产高清久久伦理二区| 这里只有精品99re| 国产成人午夜电影网| 国产成人精品影视| 99re热这里只有精品免费视频| 成人免费不卡视频| 久久av资源站| 亚洲精品国产精华液| 亚洲va国产va欧美va观看| 久久蜜桃一区二区| 欧美久久久久久久久中文字幕| 国模无码大尺度一区二区三区| 亚洲欧美偷拍卡通变态| 亚洲午夜精品久久久久久久久| 久久亚洲捆绑美女| 欧美第一区第二区| 欧美日韩国产成人在线免费| 成人黄色网址在线观看| 欧美主播一区二区三区| 国产成人免费在线观看不卡| 91网站在线观看视频| 51精品秘密在线观看| 久久奇米777| 亚洲午夜羞羞片| 九九精品一区二区| 婷婷中文字幕综合| 亚洲一区二区三区国产| 一区二区三区精品视频| 亚洲另类一区二区| 久久99国产精品久久99果冻传媒| 91在线一区二区| 欧美本精品男人aⅴ天堂| 日韩一级完整毛片| 亚洲欧美激情小说另类| 国产综合色在线| 欧美网站一区二区| 欧美性极品少妇| 国产欧美日韩不卡| 久久99国产精品久久99| 欧美日韩在线一区二区| 欧美老肥妇做.爰bbww| 国产精品毛片无遮挡高清| 中文天堂在线一区| 精品一区二区免费在线观看| 欧美区在线观看| 亚洲国产wwwccc36天堂| 99在线精品视频| 欧美激情综合五月色丁香| 国产精品国产三级国产普通话蜜臀| 日本欧美一区二区| 精品一区二区三区在线播放视频| 色欧美乱欧美15图片| 在线观看日产精品| 亚洲三级在线播放| 日韩精品91亚洲二区在线观看 | 色诱视频网站一区| 久久精品日韩一区二区三区| 国产精品国产三级国产aⅴ无密码 国产精品国产三级国产aⅴ原创 | 欧美精品久久天天躁| 亚洲精品国产a| 色综合天天综合色综合av | 亚洲在线成人精品| 91麻豆精品秘密| 亚洲男同性恋视频| 日本高清视频一区二区| 91精品久久久久久久99蜜桃| 亚洲成在线观看| 91精品中文字幕一区二区三区| 亚洲不卡在线观看| 欧美精品一二三| 久久99这里只有精品| 欧美精品一区二区久久久| 亚洲欧美二区三区| 在线观看免费亚洲| 日韩二区三区在线观看| 精品少妇一区二区三区在线视频| 卡一卡二国产精品| 国产性做久久久久久| 成人午夜视频免费看| 亚洲女人****多毛耸耸8| 欧美日韩一区二区欧美激情| 三级久久三级久久| 久久久久国产成人精品亚洲午夜| 懂色av中文字幕一区二区三区| 欧美美女直播网站| 理论电影国产精品| 中文字幕亚洲不卡| 国产麻豆9l精品三级站| 欧美美女视频在线观看| 精品一区二区三区在线播放视频| 国产精品免费aⅴ片在线观看| 91蝌蚪国产九色| 日韩综合在线视频| 亚洲国产精品v| 欧美日韩一卡二卡三卡| 国模冰冰炮一区二区| 亚洲同性gay激情无套| 欧美一三区三区四区免费在线看| 亚洲三级在线观看| 日韩欧美成人激情| av日韩在线网站| 精品一区二区免费视频| 综合久久综合久久| 精品欧美一区二区久久| 色网综合在线观看| 久久爱另类一区二区小说| 一区二区高清在线| 久久久久久久久免费| 精品视频色一区| 成人黄色av网站在线| 蜜臀av在线播放一区二区三区| 欧美日免费三级在线| 高清在线观看日韩| 久久电影网站中文字幕| 一区二区三区四区av| 国产欧美综合色| 日韩欧美电影在线| 欧美疯狂做受xxxx富婆| 91久久精品日日躁夜夜躁欧美| 国产一区二区中文字幕| 日韩精品福利网| 亚洲国产日韩a在线播放| 中文字幕一区二区视频| 久久久亚洲欧洲日产国码αv| 欧美精品xxxxbbbb| 在线亚洲一区二区| 91香蕉视频mp4| 成人视屏免费看| 国产成人精品1024| 国产原创一区二区三区| 久久精品国产久精国产| 丝袜亚洲另类丝袜在线| 亚洲一二三级电影| 一区二区国产盗摄色噜噜| 亚洲免费av高清| 亚洲精品v日韩精品| 亚洲欧洲一区二区在线播放| 欧美激情一区在线| 国产欧美日韩精品在线| 久久久精品免费免费| 精品第一国产综合精品aⅴ| 日韩精品中文字幕在线不卡尤物| 欧美猛男男办公室激情| 欧美日韩高清一区| 欧美人狂配大交3d怪物一区| 欧美乱熟臀69xxxxxx| 在线播放日韩导航| 日韩免费高清av| 26uuu另类欧美| 亚洲国产精品av| 亚洲精品一二三| 天天免费综合色| 精品制服美女丁香| 成人性生交大片免费看中文| av中文字幕在线不卡| 在线亚洲人成电影网站色www| 欧美日韩久久不卡| 欧美一二三区在线观看| xf在线a精品一区二区视频网站| 久久久亚洲午夜电影| 亚洲品质自拍视频| 亚洲国产精品精华液网站| 免费观看91视频大全| 有坂深雪av一区二区精品| 午夜影院在线观看欧美| 精品综合久久久久久8888| 成人污污视频在线观看| 在线免费不卡电影| 欧美成人精品1314www| 久久精品一区二区三区四区| 亚洲色欲色欲www| 日本vs亚洲vs韩国一区三区二区| 国产一区二区视频在线| 色综合久久天天综合网| 日韩欧美成人午夜| 亚洲欧美色综合| 久久国产剧场电影| aaa国产一区| 日韩一级大片在线| 亚洲免费在线电影| 久久99国产精品免费网站| 91国产丝袜在线播放| 欧美精品一区二区久久久| 亚洲一区在线电影| 国产黄色成人av| 337p亚洲精品色噜噜狠狠| 国产精品美女久久久久高潮| 日韩av一区二区三区四区| zzijzzij亚洲日本少妇熟睡| 日韩欧美卡一卡二|