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

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

?? pragma.c

?? Trolltech公司發布的基于C++圖形開發環境
?? C
?? 第 1 頁 / 共 2 頁
字號:
/*** 2003 April 6**** 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 code used to implement the PRAGMA command.**** $Id: qt/pragma.c   3.3.4   edited Mar 30 2004 $*/#include "sqliteInt.h"#include <ctype.h>/*** Interpret the given string as a boolean value.*/static int getBoolean(const char *z){  static char *azTrue[] = { "yes", "on", "true" };  int i;  if( z[0]==0 ) return 0;  if( isdigit(z[0]) || (z[0]=='-' && isdigit(z[1])) ){    return atoi(z);  }  for(i=0; i<sizeof(azTrue)/sizeof(azTrue[0]); i++){    if( sqliteStrICmp(z,azTrue[i])==0 ) return 1;  }  return 0;}/*** Interpret the given string as a safety level.  Return 0 for OFF,** 1 for ON or NORMAL and 2 for FULL.  Return 1 for an empty or ** unrecognized string argument.**** Note that the values returned are one less that the values that** should be passed into sqliteBtreeSetSafetyLevel().  The is done** to support legacy SQL code.  The safety level used to be boolean** and older scripts may have used numbers 0 for OFF and 1 for ON.*/static int getSafetyLevel(char *z){  static const struct {    const char *zWord;    int val;  } aKey[] = {    { "no",    0 },    { "off",   0 },    { "false", 0 },    { "yes",   1 },    { "on",    1 },    { "true",  1 },    { "full",  2 },  };  int i;  if( z[0]==0 ) return 1;  if( isdigit(z[0]) || (z[0]=='-' && isdigit(z[1])) ){    return atoi(z);  }  for(i=0; i<sizeof(aKey)/sizeof(aKey[0]); i++){    if( sqliteStrICmp(z,aKey[i].zWord)==0 ) return aKey[i].val;  }  return 1;}/*** Interpret the given string as a temp db location. Return 1 for file** backed temporary databases, 2 for the Red-Black tree in memory database** and 0 to use the compile-time default.*/static int getTempStore(char *z){  if( z[0]>='0' || z[0]<='2' ){    return z[0] - '0';  }else if( sqliteStrICmp(z, "file")==0 ){    return 1;  }else if( sqliteStrICmp(z, "memory")==0 ){    return 2;  }else{    return 0;  }}/*** Check to see if zRight and zLeft refer to a pragma that queries** or changes one of the flags in db->flags.  Return 1 if so and 0 if not.** Also, implement the pragma.*/static int flagPragma(Parse *pParse, const char *zLeft, const char *zRight){  static const struct {    const char *zName;  /* Name of the pragma */    int mask;           /* Mask for the db->flags value */  } aPragma[] = {    { "vdbe_trace",               SQLITE_VdbeTrace     },    { "full_column_names",        SQLITE_FullColNames  },    { "short_column_names",       SQLITE_ShortColNames },    { "show_datatypes",           SQLITE_ReportTypes   },    { "count_changes",            SQLITE_CountRows     },    { "empty_result_callbacks",   SQLITE_NullCallback  },  };  int i;  for(i=0; i<sizeof(aPragma)/sizeof(aPragma[0]); i++){    if( sqliteStrICmp(zLeft, aPragma[i].zName)==0 ){      sqlite *db = pParse->db;      Vdbe *v;      if( strcmp(zLeft,zRight)==0 && (v = sqliteGetVdbe(pParse))!=0 ){        sqliteVdbeOp3(v, OP_ColumnName, 0, 1, aPragma[i].zName, P3_STATIC);        sqliteVdbeOp3(v, OP_ColumnName, 1, 0, "boolean", P3_STATIC);        sqliteVdbeCode(v, OP_Integer, (db->flags & aPragma[i].mask)!=0, 0,                          OP_Callback, 1, 0,                          0);      }else if( getBoolean(zRight) ){        db->flags |= aPragma[i].mask;      }else{        db->flags &= ~aPragma[i].mask;      }      return 1;    }  }  return 0;}/*** Process a pragma statement.  **** Pragmas are of this form:****      PRAGMA id = value**** The identifier might also be a string.  The value is a string, and** identifier, or a number.  If minusFlag is true, then the value is** a number that was preceded by a minus sign.*/void sqlitePragma(Parse *pParse, Token *pLeft, Token *pRight, int minusFlag){  char *zLeft = 0;  char *zRight = 0;  sqlite *db = pParse->db;  Vdbe *v = sqliteGetVdbe(pParse);  if( v==0 ) return;  zLeft = sqliteStrNDup(pLeft->z, pLeft->n);  sqliteDequote(zLeft);  if( minusFlag ){    zRight = 0;    sqliteSetNString(&zRight, "-", 1, pRight->z, pRight->n, 0);  }else{    zRight = sqliteStrNDup(pRight->z, pRight->n);    sqliteDequote(zRight);  }  if( sqliteAuthCheck(pParse, SQLITE_PRAGMA, zLeft, zRight, 0) ){    sqliteFree(zLeft);    sqliteFree(zRight);    return;  }   /*  **  PRAGMA default_cache_size  **  PRAGMA default_cache_size=N  **  ** The first form reports the current persistent setting for the  ** page cache size.  The value returned is the maximum number of  ** pages in the page cache.  The second form sets both the current  ** page cache size value and the persistent page cache size value  ** stored in the database file.  **  ** The default cache size is stored in meta-value 2 of page 1 of the  ** database file.  The cache size is actually the absolute value of  ** this memory location.  The sign of meta-value 2 determines the  ** synchronous setting.  A negative value means synchronous is off  ** and a positive value means synchronous is on.  */  if( sqliteStrICmp(zLeft,"default_cache_size")==0 ){    static VdbeOpList getCacheSize[] = {      { OP_ReadCookie,  0, 2,        0},      { OP_AbsValue,    0, 0,        0},      { OP_Dup,         0, 0,        0},      { OP_Integer,     0, 0,        0},      { OP_Ne,          0, 6,        0},      { OP_Integer,     0, 0,        0},  /* 5 */      { OP_ColumnName,  0, 1,        "cache_size"},      { OP_Callback,    1, 0,        0},    };    int addr;    if( pRight->z==pLeft->z ){      addr = sqliteVdbeAddOpList(v, ArraySize(getCacheSize), getCacheSize);      sqliteVdbeChangeP1(v, addr+5, MAX_PAGES);    }else{      int size = atoi(zRight);      if( size<0 ) size = -size;      sqliteBeginWriteOperation(pParse, 0, 0);      sqliteVdbeAddOp(v, OP_Integer, size, 0);      sqliteVdbeAddOp(v, OP_ReadCookie, 0, 2);      addr = sqliteVdbeAddOp(v, OP_Integer, 0, 0);      sqliteVdbeAddOp(v, OP_Ge, 0, addr+3);      sqliteVdbeAddOp(v, OP_Negative, 0, 0);      sqliteVdbeAddOp(v, OP_SetCookie, 0, 2);      sqliteEndWriteOperation(pParse);      db->cache_size = db->cache_size<0 ? -size : size;      sqliteBtreeSetCacheSize(db->aDb[0].pBt, db->cache_size);    }  }else  /*  **  PRAGMA cache_size  **  PRAGMA cache_size=N  **  ** The first form reports the current local setting for the  ** page cache size.  The local setting can be different from  ** the persistent cache size value that is stored in the database  ** file itself.  The value returned is the maximum number of  ** pages in the page cache.  The second form sets the local  ** page cache size value.  It does not change the persistent  ** cache size stored on the disk so the cache size will revert  ** to its default value when the database is closed and reopened.  ** N should be a positive integer.  */  if( sqliteStrICmp(zLeft,"cache_size")==0 ){    static VdbeOpList getCacheSize[] = {      { OP_ColumnName,  0, 1,        "cache_size"},      { OP_Callback,    1, 0,        0},    };    if( pRight->z==pLeft->z ){      int size = db->cache_size;;      if( size<0 ) size = -size;      sqliteVdbeAddOp(v, OP_Integer, size, 0);      sqliteVdbeAddOpList(v, ArraySize(getCacheSize), getCacheSize);    }else{      int size = atoi(zRight);      if( size<0 ) size = -size;      if( db->cache_size<0 ) size = -size;      db->cache_size = size;      sqliteBtreeSetCacheSize(db->aDb[0].pBt, db->cache_size);    }  }else  /*  **  PRAGMA default_synchronous  **  PRAGMA default_synchronous=ON|OFF|NORMAL|FULL  **  ** The first form returns the persistent value of the "synchronous" setting  ** that is stored in the database.  This is the synchronous setting that  ** is used whenever the database is opened unless overridden by a separate  ** "synchronous" pragma.  The second form changes the persistent and the  ** local synchronous setting to the value given.  **  ** If synchronous is OFF, SQLite does not attempt any fsync() systems calls  ** to make sure data is committed to disk.  Write operations are very fast,  ** but a power failure can leave the database in an inconsistent state.  ** If synchronous is ON or NORMAL, SQLite will do an fsync() system call to  ** make sure data is being written to disk.  The risk of corruption due to  ** a power loss in this mode is negligible but non-zero.  If synchronous  ** is FULL, extra fsync()s occur to reduce the risk of corruption to near  ** zero, but with a write performance penalty.  The default mode is NORMAL.  */  if( sqliteStrICmp(zLeft,"default_synchronous")==0 ){    static VdbeOpList getSync[] = {      { OP_ColumnName,  0, 1,        "synchronous"},      { OP_ReadCookie,  0, 3,        0},      { OP_Dup,         0, 0,        0},      { OP_If,          0, 0,        0},  /* 3 */      { OP_ReadCookie,  0, 2,        0},      { OP_Integer,     0, 0,        0},      { OP_Lt,          0, 5,        0},      { OP_AddImm,      1, 0,        0},      { OP_Callback,    1, 0,        0},      { OP_Halt,        0, 0,        0},      { OP_AddImm,     -1, 0,        0},  /* 10 */      { OP_Callback,    1, 0,        0}    };    if( pRight->z==pLeft->z ){      int addr = sqliteVdbeAddOpList(v, ArraySize(getSync), getSync);      sqliteVdbeChangeP2(v, addr+3, addr+10);    }else{      int addr;      int size = db->cache_size;      if( size<0 ) size = -size;      sqliteBeginWriteOperation(pParse, 0, 0);      sqliteVdbeAddOp(v, OP_ReadCookie, 0, 2);      sqliteVdbeAddOp(v, OP_Dup, 0, 0);      addr = sqliteVdbeAddOp(v, OP_Integer, 0, 0);      sqliteVdbeAddOp(v, OP_Ne, 0, addr+3);      sqliteVdbeAddOp(v, OP_AddImm, MAX_PAGES, 0);      sqliteVdbeAddOp(v, OP_AbsValue, 0, 0);      db->safety_level = getSafetyLevel(zRight)+1;      if( db->safety_level==1 ){        sqliteVdbeAddOp(v, OP_Negative, 0, 0);        size = -size;      }      sqliteVdbeAddOp(v, OP_SetCookie, 0, 2);      sqliteVdbeAddOp(v, OP_Integer, db->safety_level, 0);      sqliteVdbeAddOp(v, OP_SetCookie, 0, 3);      sqliteEndWriteOperation(pParse);      db->cache_size = size;      sqliteBtreeSetCacheSize(db->aDb[0].pBt, db->cache_size);      sqliteBtreeSetSafetyLevel(db->aDb[0].pBt, db->safety_level);    }  }else  /*  **   PRAGMA synchronous  **   PRAGMA synchronous=OFF|ON|NORMAL|FULL  **  ** Return or set the local value of the synchronous flag.  Changing  ** the local value does not make changes to the disk file and the  ** default value will be restored the next time the database is  ** opened.  */  if( sqliteStrICmp(zLeft,"synchronous")==0 ){    static VdbeOpList getSync[] = {      { OP_ColumnName,  0, 1,        "synchronous"},      { OP_Callback,    1, 0,        0},    };    if( pRight->z==pLeft->z ){      sqliteVdbeAddOp(v, OP_Integer, db->safety_level-1, 0);      sqliteVdbeAddOpList(v, ArraySize(getSync), getSync);    }else{      int size = db->cache_size;      if( size<0 ) size = -size;      db->safety_level = getSafetyLevel(zRight)+1;      if( db->safety_level==1 ) size = -size;      db->cache_size = size;      sqliteBtreeSetCacheSize(db->aDb[0].pBt, db->cache_size);      sqliteBtreeSetSafetyLevel(db->aDb[0].pBt, db->safety_level);    }  }else#ifndef NDEBUG  if( sqliteStrICmp(zLeft, "trigger_overhead_test")==0 ){    if( getBoolean(zRight) ){      always_code_trigger_setup = 1;    }else{      always_code_trigger_setup = 0;    }  }else#endif  if( flagPragma(pParse, zLeft, zRight) ){    /* The flagPragma() call also generates any necessary code */  }else  if( sqliteStrICmp(zLeft, "table_info")==0 ){    Table *pTab;    pTab = sqliteFindTable(db, zRight, 0);    if( pTab ){      static VdbeOpList tableInfoPreface[] = {        { OP_ColumnName,  0, 0,       "cid"},        { OP_ColumnName,  1, 0,       "name"},        { OP_ColumnName,  2, 0,       "type"},

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久99精品久久久久久| 欧美福利电影网| 51精品国自产在线| 中文字幕乱码日本亚洲一区二区 | 97se亚洲国产综合自在线| 国产农村妇女毛片精品久久麻豆 | 免费xxxx性欧美18vr| 色呦呦网站一区| 久久久亚洲精品一区二区三区 | 亚洲一区在线观看免费观看电影高清| 韩国毛片一区二区三区| 欧美美女一区二区在线观看| 国产精品电影一区二区三区| 国产在线精品视频| 3751色影院一区二区三区| 一区二区免费在线| 99精品国产视频| 国产精品少妇自拍| 国产精品911| 久久综合九色欧美综合狠狠| 日韩和欧美一区二区| 欧美在线色视频| 日韩美女视频19| 99久久99久久精品免费观看| 国产精品午夜在线| 国产99久久久国产精品潘金| 久久色在线观看| 国产一区二区三区| 国产欧美日韩精品在线| 国产精品456| 亚洲国产成人在线| 成人国产免费视频| 国产精品成人一区二区艾草| jiyouzz国产精品久久| 国产精品视频九色porn| 99热这里都是精品| 亚洲日本一区二区三区| 91搞黄在线观看| 婷婷成人综合网| 欧美一区二区视频网站| 久久精品二区亚洲w码| 欧美tickling网站挠脚心| 免费高清不卡av| 精品处破学生在线二十三| 美女视频一区二区| 久久综合久久综合亚洲| 国产91丝袜在线观看| 国产精品成人免费在线| 91国偷自产一区二区三区观看 | 亚洲欧美一区二区不卡| 91黄视频在线| 蜜臀av一区二区在线观看| 久久你懂得1024| 一本色道久久综合亚洲aⅴ蜜桃 | 久久综合色8888| 成人av网站在线观看| 亚洲精品va在线观看| 制服丝袜国产精品| 国产激情一区二区三区四区| 亚洲欧美另类图片小说| 91麻豆精品国产91久久久久久| 另类的小说在线视频另类成人小视频在线| 精品国产电影一区二区| av在线不卡电影| 日本一不卡视频| 国产欧美日韩综合| 欧美日韩国产影片| 高清shemale亚洲人妖| 亚洲最大的成人av| 2023国产精品自拍| 色8久久人人97超碰香蕉987| 免费在线看成人av| 亚洲色图视频网| 欧美tickling挠脚心丨vk| 色婷婷久久一区二区三区麻豆| 久久97超碰色| 亚洲激情五月婷婷| 久久久久亚洲蜜桃| 欧美体内she精高潮| 成人综合在线观看| 奇米一区二区三区av| 亚洲日本在线天堂| 久久久99精品久久| 欧美一区二区三区四区五区| 不卡av在线免费观看| 美女网站一区二区| 亚洲h动漫在线| 日韩理论电影院| 久久久高清一区二区三区| 欧美视频在线一区| 91在线免费看| 处破女av一区二区| 国产一区二区不卡在线| 亚洲一区成人在线| 亚洲色大成网站www久久九九| 精品国产乱码久久久久久牛牛 | 色播五月激情综合网| 懂色av一区二区三区免费观看| 日韩国产在线观看一区| 一区二区三区欧美在线观看| 欧美国产欧美亚州国产日韩mv天天看完整| 欧美日本在线播放| 欧美亚洲禁片免费| 一本色道**综合亚洲精品蜜桃冫| 国产一区二三区| 青青草国产成人99久久| 天堂av在线一区| 亚洲电影在线免费观看| 一区二区视频在线看| 亚洲欧洲制服丝袜| 亚洲精品一二三四区| 亚洲欧洲综合另类| 一区二区三区精品| 夜夜爽夜夜爽精品视频| 一区二区免费在线| 亚洲国产成人91porn| 亚洲bt欧美bt精品777| 日韩专区中文字幕一区二区| 午夜av区久久| 青娱乐精品视频| 久久99国产精品免费| 国产乱码字幕精品高清av| 国产麻豆精品95视频| 国产成人自拍高清视频在线免费播放| 国产原创一区二区| 国产sm精品调教视频网站| www.成人网.com| 欧美性大战久久| 欧美日韩dvd在线观看| 欧美人xxxx| 精品国产免费一区二区三区四区| 久久女同性恋中文字幕| 亚洲欧洲日产国码二区| 亚洲久本草在线中文字幕| 亚洲国产精品精华液网站| 久久精品国产亚洲高清剧情介绍| 国产一区二区电影| 91色.com| 91精品国产手机| 久久一夜天堂av一区二区三区| 国产色综合久久| 亚洲一区在线视频观看| 麻豆国产91在线播放| 国产69精品久久99不卡| 91久久精品一区二区三| 欧美成人三级在线| 中文字幕一区二区三区在线观看| 樱花草国产18久久久久| 久久疯狂做爰流白浆xx| 97精品久久久午夜一区二区三区| 欧美日韩在线亚洲一区蜜芽| 亚洲精品在线观看网站| 亚洲欧美另类小说| 激情综合五月天| 色诱亚洲精品久久久久久| 日韩欧美电影一区| 最新久久zyz资源站| 免费观看一级特黄欧美大片| 91亚洲资源网| 欧美精品一区二区三区蜜桃视频| 日韩一区日韩二区| 美腿丝袜亚洲综合| 色老综合老女人久久久| 久久伊人中文字幕| 午夜精品福利在线| 成人精品视频网站| 国产精品不卡一区二区三区| 午夜精品影院在线观看| eeuss鲁一区二区三区| 日韩美女一区二区三区四区| 一区二区三区在线免费视频 | 色婷婷久久久久swag精品| 精品国产乱码久久久久久浪潮 | 91精品国产一区二区三区香蕉| 国产精品成人免费| 国产原创一区二区三区| 欧美一区二区三区成人| 一区二区三区在线播放| 成人午夜精品在线| 精品999在线播放| 日韩**一区毛片| 欧美视频第二页| 樱花影视一区二区| 91老司机福利 在线| 中文在线资源观看网站视频免费不卡| 视频一区视频二区中文字幕| 欧美色中文字幕| 亚洲一级二级三级| 日本乱码高清不卡字幕| 日韩毛片在线免费观看| 99久久综合狠狠综合久久| 国产农村妇女毛片精品久久麻豆| 紧缚奴在线一区二区三区| 欧美一卡在线观看| 天天影视网天天综合色在线播放| 在线观看一区二区视频| 亚洲男人天堂av网| 色综合久久中文综合久久牛| 亚洲柠檬福利资源导航| 91浏览器打开|