SQLite
Check-in [c82e05c4b8]
Not logged in
Overview
SHA1 Hash:c82e05c4b8e000684d95ac8417afaef5e4d633e6
Date: 2013-09-13 19:00:06
User: drh
Comment:Tweak the new PRAGMA name parser to achieve full branch test coverage.
Tags And Properties
Changes
Hide Diffs Unified Diffs Ignore Whitespace Patch

Changes to src/pragma.c

65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
...
232
233
234
235
236
237
238

239
240
241
242
243
244
245
....
1952
1953
1954
1955
1956
1957
1958
1959

1960
1961
1962
1963
1964
1965
1966
#define PragTyp_HEXKEY                        34
#define PragTyp_KEY                           35
#define PragTyp_REKEY                         36
#define PragTyp_LOCK_STATUS                   37
#define PragTyp_PARSER_TRACE                  38
static const struct sPragmaNames {
  const char const *zName;  /* Name of pragma */
  int ePragTyp;             /* PragTyp_XXX value */
  u32 iArg;                 /* Extra argument */
} aPragmaNames[] = {
#if defined(SQLITE_HAS_CODEC) || defined(SQLITE_ENABLE_CEROD)
  { "activate_extensions",     PragTyp_ACTIVATE_EXTENSIONS,    0 },
#endif
#if !defined(SQLITE_OMIT_SCHEMA_VERSION_PRAGMAS)
  { "application_id",          PragTyp_HEADER_VALUE,           0 },
................................................................................
#if !defined(SQLITE_OMIT_WAL)
  { "wal_autocheckpoint",      PragTyp_WAL_AUTOCHECKPOINT,     0 },
  { "wal_checkpoint",          PragTyp_WAL_CHECKPOINT,         0 },
#endif
  { "writable_schema",         PragTyp_FLAG,                  
                               SQLITE_WriteSchema|SQLITE_RecoveryMode },
};

/* End of the automatically generated pragma table.
***************************************************************************/

/*
** 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.  The FULL option is disallowed
................................................................................
  **   PRAGMA busy_timeout = N
  **
  ** Call sqlite3_busy_timeout(db, N).  Return the current timeout value
  ** if one is set.  If no busy handler or a different busy handler is set
  ** then 0 is returned.  Setting the busy_timeout to 0 or negative
  ** disables the timeout.
  */
  case PragTyp_BUSY_TIMEOUT: {

    if( zRight ){
      sqlite3_busy_timeout(db, sqlite3Atoi(zRight));
    }
    returnSingleInt(pParse, "timeout",  db->busyTimeout);
    break;
  }








|







 







>







 







|
>







65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
...
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
....
1953
1954
1955
1956
1957
1958
1959
1960
1961
1962
1963
1964
1965
1966
1967
1968
#define PragTyp_HEXKEY                        34
#define PragTyp_KEY                           35
#define PragTyp_REKEY                         36
#define PragTyp_LOCK_STATUS                   37
#define PragTyp_PARSER_TRACE                  38
static const struct sPragmaNames {
  const char const *zName;  /* Name of pragma */
  u8 ePragTyp;              /* PragTyp_XXX value */
  u32 iArg;                 /* Extra argument */
} aPragmaNames[] = {
#if defined(SQLITE_HAS_CODEC) || defined(SQLITE_ENABLE_CEROD)
  { "activate_extensions",     PragTyp_ACTIVATE_EXTENSIONS,    0 },
#endif
#if !defined(SQLITE_OMIT_SCHEMA_VERSION_PRAGMAS)
  { "application_id",          PragTyp_HEADER_VALUE,           0 },
................................................................................
#if !defined(SQLITE_OMIT_WAL)
  { "wal_autocheckpoint",      PragTyp_WAL_AUTOCHECKPOINT,     0 },
  { "wal_checkpoint",          PragTyp_WAL_CHECKPOINT,         0 },
#endif
  { "writable_schema",         PragTyp_FLAG,                  
                               SQLITE_WriteSchema|SQLITE_RecoveryMode },
};
/* Number of pragmas: 54 on by default, 65 total. */
/* End of the automatically generated pragma table.
***************************************************************************/

/*
** 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.  The FULL option is disallowed
................................................................................
  **   PRAGMA busy_timeout = N
  **
  ** Call sqlite3_busy_timeout(db, N).  Return the current timeout value
  ** if one is set.  If no busy handler or a different busy handler is set
  ** then 0 is returned.  Setting the busy_timeout to 0 or negative
  ** disables the timeout.
  */
  /*case PragTyp_BUSY_TIMEOUT*/ default: {
    assert( aPragmaNames[mid].ePragTyp==PragTyp_BUSY_TIMEOUT );
    if( zRight ){
      sqlite3_busy_timeout(db, sqlite3Atoi(zRight));
    }
    returnSingleInt(pParse, "timeout",  db->busyTimeout);
    break;
  }

Changes to tool/mkpragmatab.tcl

306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
  incr pnum
}

# Generate the lookup table
#
puts "static const struct sPragmaNames \173"
puts "  const char const *zName;  /* Name of pragma */"
puts "  int ePragTyp;             /* PragTyp_XXX value */"
puts "  u32 iArg;                 /* Extra argument */"
puts "\175 aPragmaNames\[\] = \173"

set current_if {}
set spacer [format {    %26s } {}]
foreach name $allnames {
  foreach {type arg if} $allbyname($name) break







|







306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
  incr pnum
}

# Generate the lookup table
#
puts "static const struct sPragmaNames \173"
puts "  const char const *zName;  /* Name of pragma */"
puts "  u8 ePragTyp;              /* PragTyp_XXX value */"
puts "  u32 iArg;                 /* Extra argument */"
puts "\175 aPragmaNames\[\] = \173"

set current_if {}
set spacer [format {    %26s } {}]
foreach name $allnames {
  foreach {type arg if} $allbyname($name) break