亚洲欧美第一页_禁久久精品乱码_粉嫩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一区二区三区免费野_久草精品视频
成人免费va视频| 亚洲大片精品永久免费| 亚洲欧美在线观看| 日本最新不卡在线| 国产高清不卡二三区| 欧美三级蜜桃2在线观看| 精品免费国产二区三区 | 欧美日韩中文字幕一区| 久久久精品综合| 婷婷久久综合九色综合伊人色| 国产suv精品一区二区883| 欧美一区二区不卡视频| 亚洲男同性恋视频| 91香蕉视频mp4| 欧美精品一区二区三区视频| 亚洲h精品动漫在线观看| 99久久伊人久久99| 一区二区理论电影在线观看| 91久久一区二区| 久久久久久久久久美女| 视频一区中文字幕| 日本电影欧美片| 国产精品卡一卡二卡三| 国产精品综合视频| 日韩欧美的一区| 香蕉成人啪国产精品视频综合网| 色婷婷久久综合| 最新高清无码专区| 成人av资源下载| 欧美高清在线精品一区| 国产精品一区二区无线| 精品欧美一区二区久久 | 欧美在线色视频| 亚洲婷婷综合久久一本伊一区| 成人一区在线看| 国产日韩欧美综合在线| 国产成人99久久亚洲综合精品| 日韩你懂的电影在线观看| 欧美日韩国产一级片| 1000精品久久久久久久久| 国产精品18久久久久久久久| 精品日韩av一区二区| 日本怡春院一区二区| 日韩网站在线看片你懂的| 轻轻草成人在线| 精品毛片乱码1区2区3区| 久久精品国产一区二区三| 26uuuu精品一区二区| 韩国av一区二区三区在线观看| 亚洲精品在线网站| 国产91精品一区二区麻豆亚洲| 国产日韩欧美a| 91亚洲精品久久久蜜桃| 樱桃国产成人精品视频| 欧美日韩国产免费一区二区| 日韩电影在线观看网站| 欧美夫妻性生活| 亚洲素人一区二区| 亚洲曰韩产成在线| 日韩黄色片在线观看| 日韩电影网1区2区| 国产精品一级二级三级| 97se狠狠狠综合亚洲狠狠| 国产成人一级电影| 日韩三级视频中文字幕| 麻豆freexxxx性91精品| 日韩免费看的电影| 日韩一区二区在线看| 日韩精品免费视频人成| 精品国产一区二区国模嫣然| 成人中文字幕在线| 亚洲午夜一二三区视频| 欧美一级日韩一级| 成人黄色在线看| 亚洲高清久久久| **网站欧美大片在线观看| 蜜臂av日日欢夜夜爽一区| 日韩午夜激情av| 久久99九九99精品| 成人av影视在线观看| 国产福利一区二区三区视频| 国产精品中文字幕一区二区三区| 欧美三级中文字幕在线观看| 中文字幕一区二区三区在线观看| 国产综合色精品一区二区三区| 成人综合激情网| 日韩视频免费观看高清完整版在线观看 | 94色蜜桃网一区二区三区| 欧美精品vⅰdeose4hd| 日韩片之四级片| 国产精品网曝门| 亚洲资源中文字幕| 日本欧美一区二区三区乱码 | 香蕉乱码成人久久天堂爱免费| 久久99精品视频| 日韩视频免费观看高清完整版在线观看| 亚洲欧美日本在线| 欧美一区二区三区成人| 看片网站欧美日韩| 国产精品看片你懂得| www.日韩大片| 欧美高清在线一区二区| 91视频一区二区三区| 不卡大黄网站免费看| 亚洲成人免费在线| 曰韩精品一区二区| 中文字幕+乱码+中文字幕一区| 欧美一卡二卡在线观看| 在线观看一区二区视频| 97久久超碰精品国产| 国产河南妇女毛片精品久久久| 激情综合网激情| 精品一区二区三区在线观看 | 国产91在线观看| 国产一区二区三区香蕉| 精品亚洲国产成人av制服丝袜| 蜜桃av一区二区三区| 久久er99热精品一区二区| 日本中文一区二区三区| 日本sm残虐另类| 免费成人在线观看视频| 美国十次综合导航| 久久福利资源站| 精品一区二区三区免费毛片爱| 久热成人在线视频| 国产乱码精品一区二区三| 国产老女人精品毛片久久| 国产成人精品影视| 99久久久免费精品国产一区二区| av激情亚洲男人天堂| 色婷婷国产精品| 7777女厕盗摄久久久| 亚洲欧洲国产专区| 国产色产综合产在线视频| 国产欧美一区二区精品仙草咪| 26uuuu精品一区二区| 久久精品一区二区三区不卡| 国产午夜精品美女毛片视频| 亚洲视频网在线直播| 亚洲图片一区二区| 日韩高清一区二区| 国产精品自拍在线| 99久久国产综合精品女不卡| 欧美日韩中文另类| 精品久久久久99| 欧美另类videos死尸| 精品不卡在线视频| 亚洲视频综合在线| 婷婷亚洲久悠悠色悠在线播放| 国产伦精品一区二区三区视频青涩 | 日韩精品一区二区三区在线观看| 精品国产伦一区二区三区观看方式 | 国产米奇在线777精品观看| 99国产精品国产精品久久| 欧美午夜一区二区| 久久久久久免费毛片精品| 综合久久国产九一剧情麻豆| 婷婷成人综合网| 成人三级伦理片| 538在线一区二区精品国产| 久久久久国产免费免费 | 欧美丝袜自拍制服另类| 日韩美女主播在线视频一区二区三区| av一区二区三区四区| 色美美综合视频| 日韩欧美国产精品一区| 国产精品久久久久久久久动漫| 日日摸夜夜添夜夜添国产精品| 国产精品18久久久久久久久| 欧美性猛片xxxx免费看久爱| 久久久久亚洲蜜桃| 视频一区中文字幕国产| 91免费版pro下载短视频| 精品裸体舞一区二区三区| 亚洲福利国产精品| 不卡av在线免费观看| wwwwww.欧美系列| 婷婷成人综合网| 欧美在线一二三| 国产精品国产三级国产| 激情欧美一区二区三区在线观看| 欧美性生交片4| 中文字幕在线一区免费| 久久99国产精品久久| 欧美日韩中文字幕一区| 一区二区三区四区激情| 国产成人精品免费一区二区| 日韩一卡二卡三卡| 亚洲成人福利片| 在线免费观看日韩欧美| 综合色中文字幕| 不卡的av网站| 国产精品久久久久久久蜜臀| 国产黑丝在线一区二区三区| 久久午夜免费电影| 韩国精品在线观看| 久久婷婷一区二区三区| 激情另类小说区图片区视频区| 日韩欧美激情一区| 久久机这里只有精品|