/ Hex Artifact Content
Login

Artifact 8250ef3df54aee09f6c6ed36cad390bb6dd20bbe71927d8bff069ed9fe0bbf98:


0000: 23 21 2f 75 73 72 2f 62 69 6e 2f 74 63 6c 73 68  #!/usr/bin/tclsh
0010: 0a 23 0a 23 20 52 75 6e 20 74 68 69 73 20 73 63  .#.# Run this sc
0020: 72 69 70 74 20 74 6f 20 67 65 6e 65 72 61 74 65  ript to generate
0030: 20 74 68 65 20 70 72 61 67 6d 61 20 6e 61 6d 65   the pragma name
0040: 20 6c 6f 6f 6b 75 70 20 74 61 62 6c 65 20 43 20   lookup table C 
0050: 63 6f 64 65 2e 0a 23 0a 23 20 54 6f 20 61 64 64  code..#.# To add
0060: 20 6e 65 77 20 70 72 61 67 6d 61 73 2c 20 66 69   new pragmas, fi
0070: 72 73 74 20 61 64 64 20 74 68 65 20 6e 61 6d 65  rst add the name
0080: 20 61 6e 64 20 6f 74 68 65 72 20 72 65 6c 65 76   and other relev
0090: 61 6e 74 20 61 74 74 72 69 62 75 74 65 73 0a 23  ant attributes.#
00a0: 20 6f 66 20 74 68 65 20 70 72 61 67 6d 61 20 74   of the pragma t
00b0: 6f 20 74 68 65 20 22 70 72 61 67 6d 61 5f 64 65  o the "pragma_de
00c0: 66 22 20 6f 62 6a 65 63 74 20 62 65 6c 6f 77 2e  f" object below.
00d0: 20 20 54 68 65 6e 20 72 75 6e 20 74 68 69 73 20    Then run this 
00e0: 73 63 72 69 70 74 0a 23 20 74 6f 20 67 65 6e 65  script.# to gene
00f0: 72 61 74 65 20 74 68 65 20 2e 2e 2f 73 72 63 2f  rate the ../src/
0100: 70 72 61 67 6d 61 2e 68 20 68 65 61 64 65 72 20  pragma.h header 
0110: 66 69 6c 65 20 74 68 61 74 20 63 6f 6e 74 61 69  file that contai
0120: 6e 73 20 6d 61 63 72 6f 73 20 61 6e 64 0a 23 20  ns macros and.# 
0130: 74 68 65 20 6c 6f 6f 6b 75 70 20 74 61 62 6c 65  the lookup table
0140: 20 6e 65 65 64 65 64 20 66 6f 72 20 70 72 61 67   needed for prag
0150: 6d 61 20 6e 61 6d 65 20 6c 6f 6f 6b 75 70 20 69  ma name lookup i
0160: 6e 20 74 68 65 20 70 72 61 67 6d 61 2e 63 20 6d  n the pragma.c m
0170: 6f 64 75 6c 65 2e 0a 23 20 54 68 65 6e 20 61 64  odule..# Then ad
0180: 64 20 74 68 65 20 65 78 74 72 61 20 22 63 61 73  d the extra "cas
0190: 65 20 50 72 61 67 54 79 70 5f 58 58 58 58 58 3a  e PragTyp_XXXXX:
01a0: 22 20 61 6e 64 20 73 75 62 73 65 71 75 65 6e 74  " and subsequent
01b0: 20 63 6f 64 65 20 66 6f 72 20 74 68 65 0a 23 20   code for the.# 
01c0: 6e 65 77 20 70 72 61 67 6d 61 20 69 6e 20 2e 2e  new pragma in ..
01d0: 2f 73 72 63 2f 70 72 61 67 6d 61 2e 63 2e 0a 23  /src/pragma.c..#
01e0: 0a 0a 23 20 46 6c 61 67 20 6d 65 61 6e 69 6e 67  ..# Flag meaning
01f0: 73 3a 0a 73 65 74 20 66 6c 61 67 4d 65 61 6e 69  s:.set flagMeani
0200: 6e 67 28 4e 65 65 64 53 63 68 65 6d 61 29 20 7b  ng(NeedSchema) {
0210: 46 6f 72 63 65 20 73 63 68 65 6d 61 20 6c 6f 61  Force schema loa
0220: 64 20 62 65 66 6f 72 65 20 72 75 6e 6e 69 6e 67  d before running
0230: 7d 0a 73 65 74 20 66 6c 61 67 4d 65 61 6e 69 6e  }.set flagMeanin
0240: 67 28 52 65 61 64 4f 6e 6c 79 29 20 20 20 7b 52  g(ReadOnly)   {R
0250: 65 61 64 2d 6f 6e 6c 79 20 48 45 41 44 45 52 5f  ead-only HEADER_
0260: 56 41 4c 55 45 7d 0a 73 65 74 20 66 6c 61 67 4d  VALUE}.set flagM
0270: 65 61 6e 69 6e 67 28 52 65 73 75 6c 74 30 29 20  eaning(Result0) 
0280: 20 20 20 7b 41 63 74 73 20 61 73 20 71 75 65 72     {Acts as quer
0290: 79 20 77 68 65 6e 20 6e 6f 20 61 72 67 75 6d 65  y when no argume
02a0: 6e 74 7d 0a 73 65 74 20 66 6c 61 67 4d 65 61 6e  nt}.set flagMean
02b0: 69 6e 67 28 52 65 73 75 6c 74 31 29 20 20 20 20  ing(Result1)    
02c0: 7b 41 63 74 73 20 61 73 20 71 75 65 72 79 20 77  {Acts as query w
02d0: 68 65 6e 20 68 61 73 20 6f 6e 65 20 61 72 67 75  hen has one argu
02e0: 6d 65 6e 74 7d 0a 73 65 74 20 66 6c 61 67 4d 65  ment}.set flagMe
02f0: 61 6e 69 6e 67 28 53 63 68 65 6d 61 52 65 71 29  aning(SchemaReq)
0300: 20 20 7b 53 63 68 65 6d 61 20 72 65 71 75 69 72    {Schema requir
0310: 65 64 20 2d 20 22 6d 61 69 6e 22 20 69 73 20 64  ed - "main" is d
0320: 65 66 61 75 6c 74 7d 0a 73 65 74 20 66 6c 61 67  efault}.set flag
0330: 4d 65 61 6e 69 6e 67 28 53 63 68 65 6d 61 4f 70  Meaning(SchemaOp
0340: 74 29 20 20 7b 53 63 68 65 6d 61 20 72 65 73 74  t)  {Schema rest
0350: 72 69 63 74 73 20 6e 61 6d 65 20 73 65 61 72 63  ricts name searc
0360: 68 20 69 66 20 70 72 65 73 65 6e 74 7d 0a 73 65  h if present}.se
0370: 74 20 66 6c 61 67 4d 65 61 6e 69 6e 67 28 4e 6f  t flagMeaning(No
0380: 43 6f 6c 75 6d 6e 73 29 20 20 7b 4f 50 5f 52 65  Columns)  {OP_Re
0390: 73 75 6c 74 52 6f 77 20 63 61 6c 6c 65 64 20 77  sultRow called w
03a0: 69 74 68 20 7a 65 72 6f 20 63 6f 6c 75 6d 6e 73  ith zero columns
03b0: 7d 0a 73 65 74 20 66 6c 61 67 4d 65 61 6e 69 6e  }.set flagMeanin
03c0: 67 28 4e 6f 43 6f 6c 75 6d 6e 73 31 29 20 7b 7a  g(NoColumns1) {z
03d0: 65 72 6f 20 63 6f 6c 75 6d 6e 73 20 69 66 20 52  ero columns if R
03e0: 48 53 20 61 72 67 75 6d 65 6e 74 20 69 73 20 70  HS argument is p
03f0: 72 65 73 65 6e 74 7d 0a 0a 73 65 74 20 70 72 61  resent}..set pra
0400: 67 6d 61 5f 64 65 66 20 7b 0a 20 20 4e 41 4d 45  gma_def {.  NAME
0410: 3a 20 66 75 6c 6c 5f 63 6f 6c 75 6d 6e 5f 6e 61  : full_column_na
0420: 6d 65 73 0a 20 20 54 59 50 45 3a 20 46 4c 41 47  mes.  TYPE: FLAG
0430: 0a 20 20 41 52 47 3a 20 20 53 51 4c 49 54 45 5f  .  ARG:  SQLITE_
0440: 46 75 6c 6c 43 6f 6c 4e 61 6d 65 73 0a 20 20 49  FullColNames.  I
0450: 46 3a 20 20 20 21 64 65 66 69 6e 65 64 28 53 51  F:   !defined(SQ
0460: 4c 49 54 45 5f 4f 4d 49 54 5f 46 4c 41 47 5f 50  LITE_OMIT_FLAG_P
0470: 52 41 47 4d 41 53 29 0a 0a 20 20 4e 41 4d 45 3a  RAGMAS)..  NAME:
0480: 20 73 68 6f 72 74 5f 63 6f 6c 75 6d 6e 5f 6e 61   short_column_na
0490: 6d 65 73 0a 20 20 54 59 50 45 3a 20 46 4c 41 47  mes.  TYPE: FLAG
04a0: 0a 20 20 41 52 47 3a 20 20 53 51 4c 49 54 45 5f  .  ARG:  SQLITE_
04b0: 53 68 6f 72 74 43 6f 6c 4e 61 6d 65 73 0a 20 20  ShortColNames.  
04c0: 49 46 3a 20 20 20 21 64 65 66 69 6e 65 64 28 53  IF:   !defined(S
04d0: 51 4c 49 54 45 5f 4f 4d 49 54 5f 46 4c 41 47 5f  QLITE_OMIT_FLAG_
04e0: 50 52 41 47 4d 41 53 29 0a 0a 20 20 4e 41 4d 45  PRAGMAS)..  NAME
04f0: 3a 20 63 6f 75 6e 74 5f 63 68 61 6e 67 65 73 0a  : count_changes.
0500: 20 20 54 59 50 45 3a 20 46 4c 41 47 0a 20 20 41    TYPE: FLAG.  A
0510: 52 47 3a 20 20 53 51 4c 49 54 45 5f 43 6f 75 6e  RG:  SQLITE_Coun
0520: 74 52 6f 77 73 0a 20 20 49 46 3a 20 20 20 21 64  tRows.  IF:   !d
0530: 65 66 69 6e 65 64 28 53 51 4c 49 54 45 5f 4f 4d  efined(SQLITE_OM
0540: 49 54 5f 46 4c 41 47 5f 50 52 41 47 4d 41 53 29  IT_FLAG_PRAGMAS)
0550: 0a 0a 20 20 4e 41 4d 45 3a 20 65 6d 70 74 79 5f  ..  NAME: empty_
0560: 72 65 73 75 6c 74 5f 63 61 6c 6c 62 61 63 6b 73  result_callbacks
0570: 0a 20 20 54 59 50 45 3a 20 46 4c 41 47 0a 20 20  .  TYPE: FLAG.  
0580: 41 52 47 3a 20 20 53 51 4c 49 54 45 5f 4e 75 6c  ARG:  SQLITE_Nul
0590: 6c 43 61 6c 6c 62 61 63 6b 0a 20 20 49 46 3a 20  lCallback.  IF: 
05a0: 20 20 21 64 65 66 69 6e 65 64 28 53 51 4c 49 54    !defined(SQLIT
05b0: 45 5f 4f 4d 49 54 5f 46 4c 41 47 5f 50 52 41 47  E_OMIT_FLAG_PRAG
05c0: 4d 41 53 29 0a 0a 20 20 4e 41 4d 45 3a 20 6c 65  MAS)..  NAME: le
05d0: 67 61 63 79 5f 66 69 6c 65 5f 66 6f 72 6d 61 74  gacy_file_format
05e0: 0a 20 20 54 59 50 45 3a 20 46 4c 41 47 0a 20 20  .  TYPE: FLAG.  
05f0: 41 52 47 3a 20 20 53 51 4c 49 54 45 5f 4c 65 67  ARG:  SQLITE_Leg
0600: 61 63 79 46 69 6c 65 46 6d 74 0a 20 20 49 46 3a  acyFileFmt.  IF:
0610: 20 20 20 21 64 65 66 69 6e 65 64 28 53 51 4c 49     !defined(SQLI
0620: 54 45 5f 4f 4d 49 54 5f 46 4c 41 47 5f 50 52 41  TE_OMIT_FLAG_PRA
0630: 47 4d 41 53 29 0a 0a 20 20 4e 41 4d 45 3a 20 66  GMAS)..  NAME: f
0640: 75 6c 6c 66 73 79 6e 63 0a 20 20 54 59 50 45 3a  ullfsync.  TYPE:
0650: 20 46 4c 41 47 0a 20 20 41 52 47 3a 20 20 53 51   FLAG.  ARG:  SQ
0660: 4c 49 54 45 5f 46 75 6c 6c 46 53 79 6e 63 0a 20  LITE_FullFSync. 
0670: 20 49 46 3a 20 20 20 21 64 65 66 69 6e 65 64 28   IF:   !defined(
0680: 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 46 4c 41 47  SQLITE_OMIT_FLAG
0690: 5f 50 52 41 47 4d 41 53 29 0a 0a 20 20 4e 41 4d  _PRAGMAS)..  NAM
06a0: 45 3a 20 63 68 65 63 6b 70 6f 69 6e 74 5f 66 75  E: checkpoint_fu
06b0: 6c 6c 66 73 79 6e 63 0a 20 20 54 59 50 45 3a 20  llfsync.  TYPE: 
06c0: 46 4c 41 47 0a 20 20 41 52 47 3a 20 20 53 51 4c  FLAG.  ARG:  SQL
06d0: 49 54 45 5f 43 6b 70 74 46 75 6c 6c 46 53 79 6e  ITE_CkptFullFSyn
06e0: 63 0a 20 20 49 46 3a 20 20 20 21 64 65 66 69 6e  c.  IF:   !defin
06f0: 65 64 28 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 46  ed(SQLITE_OMIT_F
0700: 4c 41 47 5f 50 52 41 47 4d 41 53 29 0a 0a 20 20  LAG_PRAGMAS)..  
0710: 4e 41 4d 45 3a 20 63 61 63 68 65 5f 73 70 69 6c  NAME: cache_spil
0720: 6c 0a 20 20 46 4c 41 47 3a 20 52 65 73 75 6c 74  l.  FLAG: Result
0730: 30 20 53 63 68 65 6d 61 52 65 71 20 4e 6f 43 6f  0 SchemaReq NoCo
0740: 6c 75 6d 6e 73 31 0a 20 20 49 46 3a 20 20 20 21  lumns1.  IF:   !
0750: 64 65 66 69 6e 65 64 28 53 51 4c 49 54 45 5f 4f  defined(SQLITE_O
0760: 4d 49 54 5f 46 4c 41 47 5f 50 52 41 47 4d 41 53  MIT_FLAG_PRAGMAS
0770: 29 0a 0a 20 20 4e 41 4d 45 3a 20 72 65 76 65 72  )..  NAME: rever
0780: 73 65 5f 75 6e 6f 72 64 65 72 65 64 5f 73 65 6c  se_unordered_sel
0790: 65 63 74 73 0a 20 20 54 59 50 45 3a 20 46 4c 41  ects.  TYPE: FLA
07a0: 47 0a 20 20 41 52 47 3a 20 20 53 51 4c 49 54 45  G.  ARG:  SQLITE
07b0: 5f 52 65 76 65 72 73 65 4f 72 64 65 72 0a 20 20  _ReverseOrder.  
07c0: 49 46 3a 20 20 20 21 64 65 66 69 6e 65 64 28 53  IF:   !defined(S
07d0: 51 4c 49 54 45 5f 4f 4d 49 54 5f 46 4c 41 47 5f  QLITE_OMIT_FLAG_
07e0: 50 52 41 47 4d 41 53 29 0a 0a 20 20 4e 41 4d 45  PRAGMAS)..  NAME
07f0: 3a 20 71 75 65 72 79 5f 6f 6e 6c 79 0a 20 20 54  : query_only.  T
0800: 59 50 45 3a 20 46 4c 41 47 0a 20 20 41 52 47 3a  YPE: FLAG.  ARG:
0810: 20 20 53 51 4c 49 54 45 5f 51 75 65 72 79 4f 6e    SQLITE_QueryOn
0820: 6c 79 0a 20 20 49 46 3a 20 20 20 21 64 65 66 69  ly.  IF:   !defi
0830: 6e 65 64 28 53 51 4c 49 54 45 5f 4f 4d 49 54 5f  ned(SQLITE_OMIT_
0840: 46 4c 41 47 5f 50 52 41 47 4d 41 53 29 0a 0a 20  FLAG_PRAGMAS).. 
0850: 20 4e 41 4d 45 3a 20 61 75 74 6f 6d 61 74 69 63   NAME: automatic
0860: 5f 69 6e 64 65 78 0a 20 20 54 59 50 45 3a 20 46  _index.  TYPE: F
0870: 4c 41 47 0a 20 20 41 52 47 3a 20 20 53 51 4c 49  LAG.  ARG:  SQLI
0880: 54 45 5f 41 75 74 6f 49 6e 64 65 78 0a 20 20 49  TE_AutoIndex.  I
0890: 46 3a 20 20 20 21 64 65 66 69 6e 65 64 28 53 51  F:   !defined(SQ
08a0: 4c 49 54 45 5f 4f 4d 49 54 5f 46 4c 41 47 5f 50  LITE_OMIT_FLAG_P
08b0: 52 41 47 4d 41 53 29 0a 20 20 49 46 3a 20 20 20  RAGMAS).  IF:   
08c0: 21 64 65 66 69 6e 65 64 28 53 51 4c 49 54 45 5f  !defined(SQLITE_
08d0: 4f 4d 49 54 5f 41 55 54 4f 4d 41 54 49 43 5f 49  OMIT_AUTOMATIC_I
08e0: 4e 44 45 58 29 0a 0a 20 20 4e 41 4d 45 3a 20 73  NDEX)..  NAME: s
08f0: 71 6c 5f 74 72 61 63 65 0a 20 20 54 59 50 45 3a  ql_trace.  TYPE:
0900: 20 46 4c 41 47 0a 20 20 41 52 47 3a 20 20 53 51   FLAG.  ARG:  SQ
0910: 4c 49 54 45 5f 53 71 6c 54 72 61 63 65 0a 20 20  LITE_SqlTrace.  
0920: 49 46 3a 20 20 20 21 64 65 66 69 6e 65 64 28 53  IF:   !defined(S
0930: 51 4c 49 54 45 5f 4f 4d 49 54 5f 46 4c 41 47 5f  QLITE_OMIT_FLAG_
0940: 50 52 41 47 4d 41 53 29 0a 20 20 49 46 3a 20 20  PRAGMAS).  IF:  
0950: 20 64 65 66 69 6e 65 64 28 53 51 4c 49 54 45 5f   defined(SQLITE_
0960: 44 45 42 55 47 29 0a 0a 20 20 4e 41 4d 45 3a 20  DEBUG)..  NAME: 
0970: 76 64 62 65 5f 6c 69 73 74 69 6e 67 0a 20 20 54  vdbe_listing.  T
0980: 59 50 45 3a 20 46 4c 41 47 0a 20 20 41 52 47 3a  YPE: FLAG.  ARG:
0990: 20 20 53 51 4c 49 54 45 5f 56 64 62 65 4c 69 73    SQLITE_VdbeLis
09a0: 74 69 6e 67 0a 20 20 49 46 3a 20 20 20 21 64 65  ting.  IF:   !de
09b0: 66 69 6e 65 64 28 53 51 4c 49 54 45 5f 4f 4d 49  fined(SQLITE_OMI
09c0: 54 5f 46 4c 41 47 5f 50 52 41 47 4d 41 53 29 0a  T_FLAG_PRAGMAS).
09d0: 20 20 49 46 3a 20 20 20 64 65 66 69 6e 65 64 28    IF:   defined(
09e0: 53 51 4c 49 54 45 5f 44 45 42 55 47 29 0a 0a 20  SQLITE_DEBUG).. 
09f0: 20 4e 41 4d 45 3a 20 76 64 62 65 5f 74 72 61 63   NAME: vdbe_trac
0a00: 65 0a 20 20 54 59 50 45 3a 20 46 4c 41 47 0a 20  e.  TYPE: FLAG. 
0a10: 20 41 52 47 3a 20 20 53 51 4c 49 54 45 5f 56 64   ARG:  SQLITE_Vd
0a20: 62 65 54 72 61 63 65 0a 20 20 49 46 3a 20 20 20  beTrace.  IF:   
0a30: 21 64 65 66 69 6e 65 64 28 53 51 4c 49 54 45 5f  !defined(SQLITE_
0a40: 4f 4d 49 54 5f 46 4c 41 47 5f 50 52 41 47 4d 41  OMIT_FLAG_PRAGMA
0a50: 53 29 0a 20 20 49 46 3a 20 20 20 64 65 66 69 6e  S).  IF:   defin
0a60: 65 64 28 53 51 4c 49 54 45 5f 44 45 42 55 47 29  ed(SQLITE_DEBUG)
0a70: 0a 0a 20 20 4e 41 4d 45 3a 20 76 64 62 65 5f 61  ..  NAME: vdbe_a
0a80: 64 64 6f 70 74 72 61 63 65 0a 20 20 54 59 50 45  ddoptrace.  TYPE
0a90: 3a 20 46 4c 41 47 0a 20 20 41 52 47 3a 20 20 53  : FLAG.  ARG:  S
0aa0: 51 4c 49 54 45 5f 56 64 62 65 41 64 64 6f 70 54  QLITE_VdbeAddopT
0ab0: 72 61 63 65 0a 20 20 49 46 3a 20 20 20 21 64 65  race.  IF:   !de
0ac0: 66 69 6e 65 64 28 53 51 4c 49 54 45 5f 4f 4d 49  fined(SQLITE_OMI
0ad0: 54 5f 46 4c 41 47 5f 50 52 41 47 4d 41 53 29 0a  T_FLAG_PRAGMAS).
0ae0: 20 20 49 46 3a 20 20 20 64 65 66 69 6e 65 64 28    IF:   defined(
0af0: 53 51 4c 49 54 45 5f 44 45 42 55 47 29 0a 0a 20  SQLITE_DEBUG).. 
0b00: 20 4e 41 4d 45 3a 20 76 64 62 65 5f 64 65 62 75   NAME: vdbe_debu
0b10: 67 0a 20 20 54 59 50 45 3a 20 46 4c 41 47 0a 20  g.  TYPE: FLAG. 
0b20: 20 41 52 47 3a 20 20 53 51 4c 49 54 45 5f 53 71   ARG:  SQLITE_Sq
0b30: 6c 54 72 61 63 65 7c 53 51 4c 49 54 45 5f 56 64  lTrace|SQLITE_Vd
0b40: 62 65 4c 69 73 74 69 6e 67 7c 53 51 4c 49 54 45  beListing|SQLITE
0b50: 5f 56 64 62 65 54 72 61 63 65 0a 20 20 49 46 3a  _VdbeTrace.  IF:
0b60: 20 20 20 21 64 65 66 69 6e 65 64 28 53 51 4c 49     !defined(SQLI
0b70: 54 45 5f 4f 4d 49 54 5f 46 4c 41 47 5f 50 52 41  TE_OMIT_FLAG_PRA
0b80: 47 4d 41 53 29 0a 20 20 49 46 3a 20 20 20 64 65  GMAS).  IF:   de
0b90: 66 69 6e 65 64 28 53 51 4c 49 54 45 5f 44 45 42  fined(SQLITE_DEB
0ba0: 55 47 29 0a 0a 20 20 4e 41 4d 45 3a 20 76 64 62  UG)..  NAME: vdb
0bb0: 65 5f 65 71 70 0a 20 20 54 59 50 45 3a 20 46 4c  e_eqp.  TYPE: FL
0bc0: 41 47 0a 20 20 41 52 47 3a 20 20 53 51 4c 49 54  AG.  ARG:  SQLIT
0bd0: 45 5f 56 64 62 65 45 51 50 0a 20 20 49 46 3a 20  E_VdbeEQP.  IF: 
0be0: 20 20 21 64 65 66 69 6e 65 64 28 53 51 4c 49 54    !defined(SQLIT
0bf0: 45 5f 4f 4d 49 54 5f 46 4c 41 47 5f 50 52 41 47  E_OMIT_FLAG_PRAG
0c00: 4d 41 53 29 0a 20 20 49 46 3a 20 20 20 64 65 66  MAS).  IF:   def
0c10: 69 6e 65 64 28 53 51 4c 49 54 45 5f 44 45 42 55  ined(SQLITE_DEBU
0c20: 47 29 0a 0a 20 20 4e 41 4d 45 3a 20 69 67 6e 6f  G)..  NAME: igno
0c30: 72 65 5f 63 68 65 63 6b 5f 63 6f 6e 73 74 72 61  re_check_constra
0c40: 69 6e 74 73 0a 20 20 54 59 50 45 3a 20 46 4c 41  ints.  TYPE: FLA
0c50: 47 0a 20 20 41 52 47 3a 20 20 53 51 4c 49 54 45  G.  ARG:  SQLITE
0c60: 5f 49 67 6e 6f 72 65 43 68 65 63 6b 73 0a 20 20  _IgnoreChecks.  
0c70: 49 46 3a 20 20 20 21 64 65 66 69 6e 65 64 28 53  IF:   !defined(S
0c80: 51 4c 49 54 45 5f 4f 4d 49 54 5f 46 4c 41 47 5f  QLITE_OMIT_FLAG_
0c90: 50 52 41 47 4d 41 53 29 0a 20 20 49 46 3a 20 20  PRAGMAS).  IF:  
0ca0: 20 21 64 65 66 69 6e 65 64 28 53 51 4c 49 54 45   !defined(SQLITE
0cb0: 5f 4f 4d 49 54 5f 43 48 45 43 4b 29 0a 0a 20 20  _OMIT_CHECK)..  
0cc0: 4e 41 4d 45 3a 20 77 72 69 74 61 62 6c 65 5f 73  NAME: writable_s
0cd0: 63 68 65 6d 61 0a 20 20 54 59 50 45 3a 20 46 4c  chema.  TYPE: FL
0ce0: 41 47 0a 20 20 41 52 47 3a 20 20 53 51 4c 49 54  AG.  ARG:  SQLIT
0cf0: 45 5f 57 72 69 74 65 53 63 68 65 6d 61 7c 53 51  E_WriteSchema|SQ
0d00: 4c 49 54 45 5f 4e 6f 53 63 68 65 6d 61 45 72 72  LITE_NoSchemaErr
0d10: 6f 72 0a 20 20 49 46 3a 20 20 20 21 64 65 66 69  or.  IF:   !defi
0d20: 6e 65 64 28 53 51 4c 49 54 45 5f 4f 4d 49 54 5f  ned(SQLITE_OMIT_
0d30: 46 4c 41 47 5f 50 52 41 47 4d 41 53 29 0a 0a 20  FLAG_PRAGMAS).. 
0d40: 20 4e 41 4d 45 3a 20 72 65 61 64 5f 75 6e 63 6f   NAME: read_unco
0d50: 6d 6d 69 74 74 65 64 0a 20 20 54 59 50 45 3a 20  mmitted.  TYPE: 
0d60: 46 4c 41 47 0a 20 20 41 52 47 3a 20 20 53 51 4c  FLAG.  ARG:  SQL
0d70: 49 54 45 5f 52 65 61 64 55 6e 63 6f 6d 6d 69 74  ITE_ReadUncommit
0d80: 0a 20 20 49 46 3a 20 20 20 21 64 65 66 69 6e 65  .  IF:   !define
0d90: 64 28 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 46 4c  d(SQLITE_OMIT_FL
0da0: 41 47 5f 50 52 41 47 4d 41 53 29 0a 0a 20 20 4e  AG_PRAGMAS)..  N
0db0: 41 4d 45 3a 20 72 65 63 75 72 73 69 76 65 5f 74  AME: recursive_t
0dc0: 72 69 67 67 65 72 73 0a 20 20 54 59 50 45 3a 20  riggers.  TYPE: 
0dd0: 46 4c 41 47 0a 20 20 41 52 47 3a 20 20 53 51 4c  FLAG.  ARG:  SQL
0de0: 49 54 45 5f 52 65 63 54 72 69 67 67 65 72 73 0a  ITE_RecTriggers.
0df0: 20 20 49 46 3a 20 20 20 21 64 65 66 69 6e 65 64    IF:   !defined
0e00: 28 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 46 4c 41  (SQLITE_OMIT_FLA
0e10: 47 5f 50 52 41 47 4d 41 53 29 0a 0a 20 20 4e 41  G_PRAGMAS)..  NA
0e20: 4d 45 3a 20 66 6f 72 65 69 67 6e 5f 6b 65 79 73  ME: foreign_keys
0e30: 0a 20 20 54 59 50 45 3a 20 46 4c 41 47 0a 20 20  .  TYPE: FLAG.  
0e40: 41 52 47 3a 20 20 53 51 4c 49 54 45 5f 46 6f 72  ARG:  SQLITE_For
0e50: 65 69 67 6e 4b 65 79 73 0a 20 20 49 46 3a 20 20  eignKeys.  IF:  
0e60: 20 21 64 65 66 69 6e 65 64 28 53 51 4c 49 54 45   !defined(SQLITE
0e70: 5f 4f 4d 49 54 5f 46 4c 41 47 5f 50 52 41 47 4d  _OMIT_FLAG_PRAGM
0e80: 41 53 29 0a 20 20 49 46 3a 20 20 20 21 64 65 66  AS).  IF:   !def
0e90: 69 6e 65 64 28 53 51 4c 49 54 45 5f 4f 4d 49 54  ined(SQLITE_OMIT
0ea0: 5f 46 4f 52 45 49 47 4e 5f 4b 45 59 29 20 26 26  _FOREIGN_KEY) &&
0eb0: 20 21 64 65 66 69 6e 65 64 28 53 51 4c 49 54 45   !defined(SQLITE
0ec0: 5f 4f 4d 49 54 5f 54 52 49 47 47 45 52 29 0a 0a  _OMIT_TRIGGER)..
0ed0: 20 20 4e 41 4d 45 3a 20 64 65 66 65 72 5f 66 6f    NAME: defer_fo
0ee0: 72 65 69 67 6e 5f 6b 65 79 73 0a 20 20 54 59 50  reign_keys.  TYP
0ef0: 45 3a 20 46 4c 41 47 0a 20 20 41 52 47 3a 20 20  E: FLAG.  ARG:  
0f00: 53 51 4c 49 54 45 5f 44 65 66 65 72 46 4b 73 0a  SQLITE_DeferFKs.
0f10: 20 20 49 46 3a 20 20 20 21 64 65 66 69 6e 65 64    IF:   !defined
0f20: 28 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 46 4c 41  (SQLITE_OMIT_FLA
0f30: 47 5f 50 52 41 47 4d 41 53 29 0a 20 20 49 46 3a  G_PRAGMAS).  IF:
0f40: 20 20 20 21 64 65 66 69 6e 65 64 28 53 51 4c 49     !defined(SQLI
0f50: 54 45 5f 4f 4d 49 54 5f 46 4f 52 45 49 47 4e 5f  TE_OMIT_FOREIGN_
0f60: 4b 45 59 29 20 26 26 20 21 64 65 66 69 6e 65 64  KEY) && !defined
0f70: 28 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 54 52 49  (SQLITE_OMIT_TRI
0f80: 47 47 45 52 29 0a 0a 20 20 4e 41 4d 45 3a 20 63  GGER)..  NAME: c
0f90: 65 6c 6c 5f 73 69 7a 65 5f 63 68 65 63 6b 0a 20  ell_size_check. 
0fa0: 20 54 59 50 45 3a 20 46 4c 41 47 0a 20 20 41 52   TYPE: FLAG.  AR
0fb0: 47 3a 20 20 53 51 4c 49 54 45 5f 43 65 6c 6c 53  G:  SQLITE_CellS
0fc0: 69 7a 65 43 6b 0a 0a 20 20 4e 41 4d 45 3a 20 64  izeCk..  NAME: d
0fd0: 65 66 61 75 6c 74 5f 63 61 63 68 65 5f 73 69 7a  efault_cache_siz
0fe0: 65 0a 20 20 46 4c 41 47 3a 20 4e 65 65 64 53 63  e.  FLAG: NeedSc
0ff0: 68 65 6d 61 20 52 65 73 75 6c 74 30 20 53 63 68  hema Result0 Sch
1000: 65 6d 61 52 65 71 20 4e 6f 43 6f 6c 75 6d 6e 73  emaReq NoColumns
1010: 31 0a 20 20 43 4f 4c 53 3a 20 63 61 63 68 65 5f  1.  COLS: cache_
1020: 73 69 7a 65 0a 20 20 49 46 3a 20 20 20 21 64 65  size.  IF:   !de
1030: 66 69 6e 65 64 28 53 51 4c 49 54 45 5f 4f 4d 49  fined(SQLITE_OMI
1040: 54 5f 50 41 47 45 52 5f 50 52 41 47 4d 41 53 29  T_PAGER_PRAGMAS)
1050: 20 26 26 20 21 64 65 66 69 6e 65 64 28 53 51 4c   && !defined(SQL
1060: 49 54 45 5f 4f 4d 49 54 5f 44 45 50 52 45 43 41  ITE_OMIT_DEPRECA
1070: 54 45 44 29 0a 0a 20 20 4e 41 4d 45 3a 20 70 61  TED)..  NAME: pa
1080: 67 65 5f 73 69 7a 65 0a 20 20 46 4c 41 47 3a 20  ge_size.  FLAG: 
1090: 52 65 73 75 6c 74 30 20 53 63 68 65 6d 61 52 65  Result0 SchemaRe
10a0: 71 20 4e 6f 43 6f 6c 75 6d 6e 73 31 0a 20 20 49  q NoColumns1.  I
10b0: 46 3a 20 20 20 21 64 65 66 69 6e 65 64 28 53 51  F:   !defined(SQ
10c0: 4c 49 54 45 5f 4f 4d 49 54 5f 50 41 47 45 52 5f  LITE_OMIT_PAGER_
10d0: 50 52 41 47 4d 41 53 29 0a 0a 20 20 4e 41 4d 45  PRAGMAS)..  NAME
10e0: 3a 20 73 65 63 75 72 65 5f 64 65 6c 65 74 65 0a  : secure_delete.
10f0: 20 20 46 4c 41 47 3a 20 52 65 73 75 6c 74 30 0a    FLAG: Result0.
1100: 20 20 49 46 3a 20 20 20 21 64 65 66 69 6e 65 64    IF:   !defined
1110: 28 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 50 41 47  (SQLITE_OMIT_PAG
1120: 45 52 5f 50 52 41 47 4d 41 53 29 0a 0a 20 20 4e  ER_PRAGMAS)..  N
1130: 41 4d 45 3a 20 70 61 67 65 5f 63 6f 75 6e 74 0a  AME: page_count.
1140: 20 20 46 4c 41 47 3a 20 4e 65 65 64 53 63 68 65    FLAG: NeedSche
1150: 6d 61 20 52 65 73 75 6c 74 30 20 53 63 68 65 6d  ma Result0 Schem
1160: 61 52 65 71 0a 20 20 49 46 3a 20 20 20 21 64 65  aReq.  IF:   !de
1170: 66 69 6e 65 64 28 53 51 4c 49 54 45 5f 4f 4d 49  fined(SQLITE_OMI
1180: 54 5f 50 41 47 45 52 5f 50 52 41 47 4d 41 53 29  T_PAGER_PRAGMAS)
1190: 0a 0a 20 20 4e 41 4d 45 3a 20 6d 61 78 5f 70 61  ..  NAME: max_pa
11a0: 67 65 5f 63 6f 75 6e 74 0a 20 20 54 59 50 45 3a  ge_count.  TYPE:
11b0: 20 50 41 47 45 5f 43 4f 55 4e 54 0a 20 20 46 4c   PAGE_COUNT.  FL
11c0: 41 47 3a 20 4e 65 65 64 53 63 68 65 6d 61 20 52  AG: NeedSchema R
11d0: 65 73 75 6c 74 30 20 53 63 68 65 6d 61 52 65 71  esult0 SchemaReq
11e0: 0a 20 20 49 46 3a 20 20 20 21 64 65 66 69 6e 65  .  IF:   !define
11f0: 64 28 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 50 41  d(SQLITE_OMIT_PA
1200: 47 45 52 5f 50 52 41 47 4d 41 53 29 0a 0a 20 20  GER_PRAGMAS)..  
1210: 4e 41 4d 45 3a 20 6c 6f 63 6b 69 6e 67 5f 6d 6f  NAME: locking_mo
1220: 64 65 0a 20 20 46 4c 41 47 3a 20 52 65 73 75 6c  de.  FLAG: Resul
1230: 74 30 20 53 63 68 65 6d 61 52 65 71 0a 20 20 49  t0 SchemaReq.  I
1240: 46 3a 20 20 20 21 64 65 66 69 6e 65 64 28 53 51  F:   !defined(SQ
1250: 4c 49 54 45 5f 4f 4d 49 54 5f 50 41 47 45 52 5f  LITE_OMIT_PAGER_
1260: 50 52 41 47 4d 41 53 29 0a 0a 20 20 4e 41 4d 45  PRAGMAS)..  NAME
1270: 3a 20 6a 6f 75 72 6e 61 6c 5f 6d 6f 64 65 0a 20  : journal_mode. 
1280: 20 46 4c 41 47 3a 20 4e 65 65 64 53 63 68 65 6d   FLAG: NeedSchem
1290: 61 20 52 65 73 75 6c 74 30 20 53 63 68 65 6d 61  a Result0 Schema
12a0: 52 65 71 0a 20 20 49 46 3a 20 20 20 21 64 65 66  Req.  IF:   !def
12b0: 69 6e 65 64 28 53 51 4c 49 54 45 5f 4f 4d 49 54  ined(SQLITE_OMIT
12c0: 5f 50 41 47 45 52 5f 50 52 41 47 4d 41 53 29 0a  _PAGER_PRAGMAS).
12d0: 0a 20 20 4e 41 4d 45 3a 20 6a 6f 75 72 6e 61 6c  .  NAME: journal
12e0: 5f 73 69 7a 65 5f 6c 69 6d 69 74 0a 20 20 46 4c  _size_limit.  FL
12f0: 41 47 3a 20 52 65 73 75 6c 74 30 20 53 63 68 65  AG: Result0 Sche
1300: 6d 61 52 65 71 0a 20 20 49 46 3a 20 20 20 21 64  maReq.  IF:   !d
1310: 65 66 69 6e 65 64 28 53 51 4c 49 54 45 5f 4f 4d  efined(SQLITE_OM
1320: 49 54 5f 50 41 47 45 52 5f 50 52 41 47 4d 41 53  IT_PAGER_PRAGMAS
1330: 29 0a 0a 20 20 4e 41 4d 45 3a 20 63 61 63 68 65  )..  NAME: cache
1340: 5f 73 69 7a 65 0a 20 20 46 4c 41 47 3a 20 4e 65  _size.  FLAG: Ne
1350: 65 64 53 63 68 65 6d 61 20 52 65 73 75 6c 74 30  edSchema Result0
1360: 20 53 63 68 65 6d 61 52 65 71 20 4e 6f 43 6f 6c   SchemaReq NoCol
1370: 75 6d 6e 73 31 0a 20 20 49 46 3a 20 20 20 21 64  umns1.  IF:   !d
1380: 65 66 69 6e 65 64 28 53 51 4c 49 54 45 5f 4f 4d  efined(SQLITE_OM
1390: 49 54 5f 50 41 47 45 52 5f 50 52 41 47 4d 41 53  IT_PAGER_PRAGMAS
13a0: 29 0a 0a 20 20 4e 41 4d 45 3a 20 6d 6d 61 70 5f  )..  NAME: mmap_
13b0: 73 69 7a 65 0a 20 20 49 46 3a 20 20 20 21 64 65  size.  IF:   !de
13c0: 66 69 6e 65 64 28 53 51 4c 49 54 45 5f 4f 4d 49  fined(SQLITE_OMI
13d0: 54 5f 50 41 47 45 52 5f 50 52 41 47 4d 41 53 29  T_PAGER_PRAGMAS)
13e0: 0a 0a 20 20 4e 41 4d 45 3a 20 61 75 74 6f 5f 76  ..  NAME: auto_v
13f0: 61 63 75 75 6d 0a 20 20 46 4c 41 47 3a 20 4e 65  acuum.  FLAG: Ne
1400: 65 64 53 63 68 65 6d 61 20 52 65 73 75 6c 74 30  edSchema Result0
1410: 20 53 63 68 65 6d 61 52 65 71 20 4e 6f 43 6f 6c   SchemaReq NoCol
1420: 75 6d 6e 73 31 0a 20 20 49 46 3a 20 20 20 21 64  umns1.  IF:   !d
1430: 65 66 69 6e 65 64 28 53 51 4c 49 54 45 5f 4f 4d  efined(SQLITE_OM
1440: 49 54 5f 41 55 54 4f 56 41 43 55 55 4d 29 0a 0a  IT_AUTOVACUUM)..
1450: 20 20 4e 41 4d 45 3a 20 69 6e 63 72 65 6d 65 6e    NAME: incremen
1460: 74 61 6c 5f 76 61 63 75 75 6d 0a 20 20 46 4c 41  tal_vacuum.  FLA
1470: 47 3a 20 4e 65 65 64 53 63 68 65 6d 61 20 4e 6f  G: NeedSchema No
1480: 43 6f 6c 75 6d 6e 73 0a 20 20 49 46 3a 20 20 20  Columns.  IF:   
1490: 21 64 65 66 69 6e 65 64 28 53 51 4c 49 54 45 5f  !defined(SQLITE_
14a0: 4f 4d 49 54 5f 41 55 54 4f 56 41 43 55 55 4d 29  OMIT_AUTOVACUUM)
14b0: 0a 0a 20 20 4e 41 4d 45 3a 20 74 65 6d 70 5f 73  ..  NAME: temp_s
14c0: 74 6f 72 65 0a 20 20 46 4c 41 47 3a 20 52 65 73  tore.  FLAG: Res
14d0: 75 6c 74 30 20 4e 6f 43 6f 6c 75 6d 6e 73 31 0a  ult0 NoColumns1.
14e0: 20 20 49 46 3a 20 20 20 21 64 65 66 69 6e 65 64    IF:   !defined
14f0: 28 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 50 41 47  (SQLITE_OMIT_PAG
1500: 45 52 5f 50 52 41 47 4d 41 53 29 0a 0a 20 20 4e  ER_PRAGMAS)..  N
1510: 41 4d 45 3a 20 74 65 6d 70 5f 73 74 6f 72 65 5f  AME: temp_store_
1520: 64 69 72 65 63 74 6f 72 79 0a 20 20 46 4c 41 47  directory.  FLAG
1530: 3a 20 4e 6f 43 6f 6c 75 6d 6e 73 31 0a 20 20 49  : NoColumns1.  I
1540: 46 3a 20 20 20 21 64 65 66 69 6e 65 64 28 53 51  F:   !defined(SQ
1550: 4c 49 54 45 5f 4f 4d 49 54 5f 50 41 47 45 52 5f  LITE_OMIT_PAGER_
1560: 50 52 41 47 4d 41 53 29 0a 0a 20 20 4e 41 4d 45  PRAGMAS)..  NAME
1570: 3a 20 64 61 74 61 5f 73 74 6f 72 65 5f 64 69 72  : data_store_dir
1580: 65 63 74 6f 72 79 0a 20 20 46 4c 41 47 3a 20 4e  ectory.  FLAG: N
1590: 6f 43 6f 6c 75 6d 6e 73 31 0a 20 20 49 46 3a 20  oColumns1.  IF: 
15a0: 20 20 21 64 65 66 69 6e 65 64 28 53 51 4c 49 54    !defined(SQLIT
15b0: 45 5f 4f 4d 49 54 5f 50 41 47 45 52 5f 50 52 41  E_OMIT_PAGER_PRA
15c0: 47 4d 41 53 29 20 26 26 20 53 51 4c 49 54 45 5f  GMAS) && SQLITE_
15d0: 4f 53 5f 57 49 4e 0a 0a 20 20 4e 41 4d 45 3a 20  OS_WIN..  NAME: 
15e0: 6c 6f 63 6b 5f 70 72 6f 78 79 5f 66 69 6c 65 0a  lock_proxy_file.
15f0: 20 20 46 4c 41 47 3a 20 4e 6f 43 6f 6c 75 6d 6e    FLAG: NoColumn
1600: 73 31 0a 20 20 49 46 3a 20 20 20 21 64 65 66 69  s1.  IF:   !defi
1610: 6e 65 64 28 53 51 4c 49 54 45 5f 4f 4d 49 54 5f  ned(SQLITE_OMIT_
1620: 50 41 47 45 52 5f 50 52 41 47 4d 41 53 29 20 26  PAGER_PRAGMAS) &
1630: 26 20 53 51 4c 49 54 45 5f 45 4e 41 42 4c 45 5f  & SQLITE_ENABLE_
1640: 4c 4f 43 4b 49 4e 47 5f 53 54 59 4c 45 0a 0a 20  LOCKING_STYLE.. 
1650: 20 4e 41 4d 45 3a 20 73 79 6e 63 68 72 6f 6e 6f   NAME: synchrono
1660: 75 73 0a 20 20 46 4c 41 47 3a 20 4e 65 65 64 53  us.  FLAG: NeedS
1670: 63 68 65 6d 61 20 52 65 73 75 6c 74 30 20 53 63  chema Result0 Sc
1680: 68 65 6d 61 52 65 71 20 4e 6f 43 6f 6c 75 6d 6e  hemaReq NoColumn
1690: 73 31 0a 20 20 49 46 3a 20 20 20 21 64 65 66 69  s1.  IF:   !defi
16a0: 6e 65 64 28 53 51 4c 49 54 45 5f 4f 4d 49 54 5f  ned(SQLITE_OMIT_
16b0: 50 41 47 45 52 5f 50 52 41 47 4d 41 53 29 0a 0a  PAGER_PRAGMAS)..
16c0: 20 20 4e 41 4d 45 3a 20 74 61 62 6c 65 5f 69 6e    NAME: table_in
16d0: 66 6f 0a 20 20 46 4c 41 47 3a 20 4e 65 65 64 53  fo.  FLAG: NeedS
16e0: 63 68 65 6d 61 20 52 65 73 75 6c 74 31 20 53 63  chema Result1 Sc
16f0: 68 65 6d 61 4f 70 74 0a 20 20 41 52 47 3a 20 20  hemaOpt.  ARG:  
1700: 30 0a 20 20 43 4f 4c 53 3a 20 63 69 64 20 6e 61  0.  COLS: cid na
1710: 6d 65 20 74 79 70 65 20 6e 6f 74 6e 75 6c 6c 20  me type notnull 
1720: 64 66 6c 74 5f 76 61 6c 75 65 20 70 6b 0a 20 20  dflt_value pk.  
1730: 49 46 3a 20 20 20 21 64 65 66 69 6e 65 64 28 53  IF:   !defined(S
1740: 51 4c 49 54 45 5f 4f 4d 49 54 5f 53 43 48 45 4d  QLITE_OMIT_SCHEM
1750: 41 5f 50 52 41 47 4d 41 53 29 0a 0a 20 20 4e 41  A_PRAGMAS)..  NA
1760: 4d 45 3a 20 74 61 62 6c 65 5f 78 69 6e 66 6f 0a  ME: table_xinfo.
1770: 20 20 54 59 50 45 3a 20 54 41 42 4c 45 5f 49 4e    TYPE: TABLE_IN
1780: 46 4f 0a 20 20 46 4c 41 47 3a 20 4e 65 65 64 53  FO.  FLAG: NeedS
1790: 63 68 65 6d 61 20 52 65 73 75 6c 74 31 20 53 63  chema Result1 Sc
17a0: 68 65 6d 61 4f 70 74 0a 20 20 41 52 47 3a 20 20  hemaOpt.  ARG:  
17b0: 31 0a 20 20 43 4f 4c 53 3a 20 63 69 64 20 6e 61  1.  COLS: cid na
17c0: 6d 65 20 74 79 70 65 20 6e 6f 74 6e 75 6c 6c 20  me type notnull 
17d0: 64 66 6c 74 5f 76 61 6c 75 65 20 70 6b 20 68 69  dflt_value pk hi
17e0: 64 64 65 6e 0a 20 20 49 46 3a 20 20 20 21 64 65  dden.  IF:   !de
17f0: 66 69 6e 65 64 28 53 51 4c 49 54 45 5f 4f 4d 49  fined(SQLITE_OMI
1800: 54 5f 53 43 48 45 4d 41 5f 50 52 41 47 4d 41 53  T_SCHEMA_PRAGMAS
1810: 29 0a 0a 20 20 4e 41 4d 45 3a 20 73 74 61 74 73  )..  NAME: stats
1820: 0a 20 20 46 4c 41 47 3a 20 4e 65 65 64 53 63 68  .  FLAG: NeedSch
1830: 65 6d 61 20 52 65 73 75 6c 74 30 20 53 63 68 65  ema Result0 Sche
1840: 6d 61 52 65 71 0a 20 20 43 4f 4c 53 3a 20 74 62  maReq.  COLS: tb
1850: 6c 20 69 64 78 20 77 64 74 68 20 68 67 68 74 20  l idx wdth hght 
1860: 66 6c 67 73 0a 20 20 49 46 3a 20 20 20 21 64 65  flgs.  IF:   !de
1870: 66 69 6e 65 64 28 53 51 4c 49 54 45 5f 4f 4d 49  fined(SQLITE_OMI
1880: 54 5f 53 43 48 45 4d 41 5f 50 52 41 47 4d 41 53  T_SCHEMA_PRAGMAS
1890: 29 20 26 26 20 64 65 66 69 6e 65 64 28 53 51 4c  ) && defined(SQL
18a0: 49 54 45 5f 44 45 42 55 47 29 0a 0a 20 20 4e 41  ITE_DEBUG)..  NA
18b0: 4d 45 3a 20 69 6e 64 65 78 5f 69 6e 66 6f 0a 20  ME: index_info. 
18c0: 20 54 59 50 45 3a 20 49 4e 44 45 58 5f 49 4e 46   TYPE: INDEX_INF
18d0: 4f 0a 20 20 41 52 47 3a 20 20 30 0a 20 20 46 4c  O.  ARG:  0.  FL
18e0: 41 47 3a 20 4e 65 65 64 53 63 68 65 6d 61 20 52  AG: NeedSchema R
18f0: 65 73 75 6c 74 31 20 53 63 68 65 6d 61 4f 70 74  esult1 SchemaOpt
1900: 0a 20 20 43 4f 4c 53 3a 20 73 65 71 6e 6f 20 63  .  COLS: seqno c
1910: 69 64 20 6e 61 6d 65 0a 20 20 49 46 3a 20 20 20  id name.  IF:   
1920: 21 64 65 66 69 6e 65 64 28 53 51 4c 49 54 45 5f  !defined(SQLITE_
1930: 4f 4d 49 54 5f 53 43 48 45 4d 41 5f 50 52 41 47  OMIT_SCHEMA_PRAG
1940: 4d 41 53 29 0a 0a 20 20 4e 41 4d 45 3a 20 69 6e  MAS)..  NAME: in
1950: 64 65 78 5f 78 69 6e 66 6f 0a 20 20 54 59 50 45  dex_xinfo.  TYPE
1960: 3a 20 49 4e 44 45 58 5f 49 4e 46 4f 0a 20 20 41  : INDEX_INFO.  A
1970: 52 47 3a 20 20 31 0a 20 20 46 4c 41 47 3a 20 4e  RG:  1.  FLAG: N
1980: 65 65 64 53 63 68 65 6d 61 20 52 65 73 75 6c 74  eedSchema Result
1990: 31 20 53 63 68 65 6d 61 4f 70 74 0a 20 20 43 4f  1 SchemaOpt.  CO
19a0: 4c 53 3a 20 73 65 71 6e 6f 20 63 69 64 20 6e 61  LS: seqno cid na
19b0: 6d 65 20 64 65 73 63 20 63 6f 6c 6c 20 6b 65 79  me desc coll key
19c0: 0a 20 20 49 46 3a 20 20 20 21 64 65 66 69 6e 65  .  IF:   !define
19d0: 64 28 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 53 43  d(SQLITE_OMIT_SC
19e0: 48 45 4d 41 5f 50 52 41 47 4d 41 53 29 0a 0a 20  HEMA_PRAGMAS).. 
19f0: 20 4e 41 4d 45 3a 20 69 6e 64 65 78 5f 6c 69 73   NAME: index_lis
1a00: 74 0a 20 20 46 4c 41 47 3a 20 4e 65 65 64 53 63  t.  FLAG: NeedSc
1a10: 68 65 6d 61 20 52 65 73 75 6c 74 31 20 53 63 68  hema Result1 Sch
1a20: 65 6d 61 4f 70 74 0a 20 20 43 4f 4c 53 3a 20 73  emaOpt.  COLS: s
1a30: 65 71 20 6e 61 6d 65 20 75 6e 69 71 75 65 20 6f  eq name unique o
1a40: 72 69 67 69 6e 20 70 61 72 74 69 61 6c 0a 20 20  rigin partial.  
1a50: 49 46 3a 20 20 20 21 64 65 66 69 6e 65 64 28 53  IF:   !defined(S
1a60: 51 4c 49 54 45 5f 4f 4d 49 54 5f 53 43 48 45 4d  QLITE_OMIT_SCHEM
1a70: 41 5f 50 52 41 47 4d 41 53 29 0a 0a 20 20 4e 41  A_PRAGMAS)..  NA
1a80: 4d 45 3a 20 64 61 74 61 62 61 73 65 5f 6c 69 73  ME: database_lis
1a90: 74 0a 20 20 46 4c 41 47 3a 20 4e 65 65 64 53 63  t.  FLAG: NeedSc
1aa0: 68 65 6d 61 20 52 65 73 75 6c 74 30 0a 20 20 43  hema Result0.  C
1ab0: 4f 4c 53 3a 20 73 65 71 20 6e 61 6d 65 20 66 69  OLS: seq name fi
1ac0: 6c 65 0a 20 20 49 46 3a 20 20 20 21 64 65 66 69  le.  IF:   !defi
1ad0: 6e 65 64 28 53 51 4c 49 54 45 5f 4f 4d 49 54 5f  ned(SQLITE_OMIT_
1ae0: 53 43 48 45 4d 41 5f 50 52 41 47 4d 41 53 29 0a  SCHEMA_PRAGMAS).
1af0: 0a 20 20 4e 41 4d 45 3a 20 66 75 6e 63 74 69 6f  .  NAME: functio
1b00: 6e 5f 6c 69 73 74 0a 20 20 46 4c 41 47 3a 20 52  n_list.  FLAG: R
1b10: 65 73 75 6c 74 30 0a 20 20 43 4f 4c 53 3a 20 6e  esult0.  COLS: n
1b20: 61 6d 65 20 62 75 69 6c 74 69 6e 0a 20 20 49 46  ame builtin.  IF
1b30: 3a 20 20 20 21 64 65 66 69 6e 65 64 28 53 51 4c  :   !defined(SQL
1b40: 49 54 45 5f 4f 4d 49 54 5f 53 43 48 45 4d 41 5f  ITE_OMIT_SCHEMA_
1b50: 50 52 41 47 4d 41 53 29 0a 20 20 49 46 3a 20 20  PRAGMAS).  IF:  
1b60: 20 64 65 66 69 6e 65 64 28 53 51 4c 49 54 45 5f   defined(SQLITE_
1b70: 49 4e 54 52 4f 53 50 45 43 54 49 4f 4e 5f 50 52  INTROSPECTION_PR
1b80: 41 47 4d 41 53 29 0a 0a 20 20 4e 41 4d 45 3a 20  AGMAS)..  NAME: 
1b90: 6d 6f 64 75 6c 65 5f 6c 69 73 74 0a 20 20 46 4c  module_list.  FL
1ba0: 41 47 3a 20 52 65 73 75 6c 74 30 0a 20 20 43 4f  AG: Result0.  CO
1bb0: 4c 53 3a 20 6e 61 6d 65 0a 20 20 49 46 3a 20 20  LS: name.  IF:  
1bc0: 20 21 64 65 66 69 6e 65 64 28 53 51 4c 49 54 45   !defined(SQLITE
1bd0: 5f 4f 4d 49 54 5f 53 43 48 45 4d 41 5f 50 52 41  _OMIT_SCHEMA_PRA
1be0: 47 4d 41 53 29 0a 20 20 49 46 3a 20 20 20 21 64  GMAS).  IF:   !d
1bf0: 65 66 69 6e 65 64 28 53 51 4c 49 54 45 5f 4f 4d  efined(SQLITE_OM
1c00: 49 54 5f 56 49 52 54 55 41 4c 54 41 42 4c 45 29  IT_VIRTUALTABLE)
1c10: 0a 20 20 49 46 3a 20 20 20 64 65 66 69 6e 65 64  .  IF:   defined
1c20: 28 53 51 4c 49 54 45 5f 49 4e 54 52 4f 53 50 45  (SQLITE_INTROSPE
1c30: 43 54 49 4f 4e 5f 50 52 41 47 4d 41 53 29 0a 0a  CTION_PRAGMAS)..
1c40: 20 20 4e 41 4d 45 3a 20 70 72 61 67 6d 61 5f 6c    NAME: pragma_l
1c50: 69 73 74 0a 20 20 46 4c 41 47 3a 20 52 65 73 75  ist.  FLAG: Resu
1c60: 6c 74 30 0a 20 20 43 4f 4c 53 3a 20 6e 61 6d 65  lt0.  COLS: name
1c70: 0a 20 20 49 46 3a 20 20 20 64 65 66 69 6e 65 64  .  IF:   defined
1c80: 28 53 51 4c 49 54 45 5f 49 4e 54 52 4f 53 50 45  (SQLITE_INTROSPE
1c90: 43 54 49 4f 4e 5f 50 52 41 47 4d 41 53 29 0a 0a  CTION_PRAGMAS)..
1ca0: 20 20 4e 41 4d 45 3a 20 63 6f 6c 6c 61 74 69 6f    NAME: collatio
1cb0: 6e 5f 6c 69 73 74 0a 20 20 46 4c 41 47 3a 20 52  n_list.  FLAG: R
1cc0: 65 73 75 6c 74 30 0a 20 20 43 4f 4c 53 3a 20 73  esult0.  COLS: s
1cd0: 65 71 20 6e 61 6d 65 0a 20 20 49 46 3a 20 20 20  eq name.  IF:   
1ce0: 21 64 65 66 69 6e 65 64 28 53 51 4c 49 54 45 5f  !defined(SQLITE_
1cf0: 4f 4d 49 54 5f 53 43 48 45 4d 41 5f 50 52 41 47  OMIT_SCHEMA_PRAG
1d00: 4d 41 53 29 0a 0a 20 20 4e 41 4d 45 3a 20 66 6f  MAS)..  NAME: fo
1d10: 72 65 69 67 6e 5f 6b 65 79 5f 6c 69 73 74 0a 20  reign_key_list. 
1d20: 20 46 4c 41 47 3a 20 4e 65 65 64 53 63 68 65 6d   FLAG: NeedSchem
1d30: 61 20 52 65 73 75 6c 74 31 20 53 63 68 65 6d 61  a Result1 Schema
1d40: 4f 70 74 0a 20 20 43 4f 4c 53 3a 20 69 64 20 73  Opt.  COLS: id s
1d50: 65 71 20 74 61 62 6c 65 20 66 72 6f 6d 20 74 6f  eq table from to
1d60: 20 6f 6e 5f 75 70 64 61 74 65 20 6f 6e 5f 64 65   on_update on_de
1d70: 6c 65 74 65 20 6d 61 74 63 68 0a 20 20 49 46 3a  lete match.  IF:
1d80: 20 20 20 21 64 65 66 69 6e 65 64 28 53 51 4c 49     !defined(SQLI
1d90: 54 45 5f 4f 4d 49 54 5f 46 4f 52 45 49 47 4e 5f  TE_OMIT_FOREIGN_
1da0: 4b 45 59 29 0a 0a 20 20 4e 41 4d 45 3a 20 66 6f  KEY)..  NAME: fo
1db0: 72 65 69 67 6e 5f 6b 65 79 5f 63 68 65 63 6b 0a  reign_key_check.
1dc0: 20 20 46 4c 41 47 3a 20 4e 65 65 64 53 63 68 65    FLAG: NeedSche
1dd0: 6d 61 20 52 65 73 75 6c 74 30 0a 20 20 43 4f 4c  ma Result0.  COL
1de0: 53 3a 20 74 61 62 6c 65 20 72 6f 77 69 64 20 70  S: table rowid p
1df0: 61 72 65 6e 74 20 66 6b 69 64 0a 20 20 49 46 3a  arent fkid.  IF:
1e00: 20 20 20 21 64 65 66 69 6e 65 64 28 53 51 4c 49     !defined(SQLI
1e10: 54 45 5f 4f 4d 49 54 5f 46 4f 52 45 49 47 4e 5f  TE_OMIT_FOREIGN_
1e20: 4b 45 59 29 20 26 26 20 21 64 65 66 69 6e 65 64  KEY) && !defined
1e30: 28 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 54 52 49  (SQLITE_OMIT_TRI
1e40: 47 47 45 52 29 0a 0a 20 20 4e 41 4d 45 3a 20 70  GGER)..  NAME: p
1e50: 61 72 73 65 72 5f 74 72 61 63 65 0a 20 20 54 59  arser_trace.  TY
1e60: 50 45 3a 20 46 4c 41 47 0a 20 20 41 52 47 3a 20  PE: FLAG.  ARG: 
1e70: 20 53 51 4c 49 54 45 5f 50 61 72 73 65 72 54 72   SQLITE_ParserTr
1e80: 61 63 65 0a 20 20 49 46 3a 20 20 20 21 64 65 66  ace.  IF:   !def
1e90: 69 6e 65 64 28 53 51 4c 49 54 45 5f 4f 4d 49 54  ined(SQLITE_OMIT
1ea0: 5f 46 4c 41 47 5f 50 52 41 47 4d 41 53 29 0a 20  _FLAG_PRAGMAS). 
1eb0: 20 49 46 3a 20 20 20 64 65 66 69 6e 65 64 28 53   IF:   defined(S
1ec0: 51 4c 49 54 45 5f 44 45 42 55 47 29 0a 0a 20 20  QLITE_DEBUG)..  
1ed0: 4e 41 4d 45 3a 20 63 61 73 65 5f 73 65 6e 73 69  NAME: case_sensi
1ee0: 74 69 76 65 5f 6c 69 6b 65 0a 20 20 46 4c 41 47  tive_like.  FLAG
1ef0: 3a 20 4e 6f 43 6f 6c 75 6d 6e 73 0a 20 20 49 46  : NoColumns.  IF
1f00: 3a 20 20 20 21 64 65 66 69 6e 65 64 28 53 51 4c  :   !defined(SQL
1f10: 49 54 45 5f 4f 4d 49 54 5f 43 41 53 45 5f 53 45  ITE_OMIT_CASE_SE
1f20: 4e 53 49 54 49 56 45 5f 4c 49 4b 45 5f 50 52 41  NSITIVE_LIKE_PRA
1f30: 47 4d 41 29 0a 0a 20 20 4e 41 4d 45 3a 20 69 6e  GMA)..  NAME: in
1f40: 74 65 67 72 69 74 79 5f 63 68 65 63 6b 0a 20 20  tegrity_check.  
1f50: 46 4c 41 47 3a 20 4e 65 65 64 53 63 68 65 6d 61  FLAG: NeedSchema
1f60: 20 52 65 73 75 6c 74 30 20 52 65 73 75 6c 74 31   Result0 Result1
1f70: 0a 20 20 49 46 3a 20 20 20 21 64 65 66 69 6e 65  .  IF:   !define
1f80: 64 28 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 49 4e  d(SQLITE_OMIT_IN
1f90: 54 45 47 52 49 54 59 5f 43 48 45 43 4b 29 0a 0a  TEGRITY_CHECK)..
1fa0: 20 20 4e 41 4d 45 3a 20 71 75 69 63 6b 5f 63 68    NAME: quick_ch
1fb0: 65 63 6b 0a 20 20 54 59 50 45 3a 20 49 4e 54 45  eck.  TYPE: INTE
1fc0: 47 52 49 54 59 5f 43 48 45 43 4b 0a 20 20 46 4c  GRITY_CHECK.  FL
1fd0: 41 47 3a 20 4e 65 65 64 53 63 68 65 6d 61 20 52  AG: NeedSchema R
1fe0: 65 73 75 6c 74 30 20 52 65 73 75 6c 74 31 0a 20  esult0 Result1. 
1ff0: 20 49 46 3a 20 20 20 21 64 65 66 69 6e 65 64 28   IF:   !defined(
2000: 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 49 4e 54 45  SQLITE_OMIT_INTE
2010: 47 52 49 54 59 5f 43 48 45 43 4b 29 0a 0a 20 20  GRITY_CHECK)..  
2020: 4e 41 4d 45 3a 20 65 6e 63 6f 64 69 6e 67 0a 20  NAME: encoding. 
2030: 20 46 4c 41 47 3a 20 52 65 73 75 6c 74 30 20 4e   FLAG: Result0 N
2040: 6f 43 6f 6c 75 6d 6e 73 31 0a 20 20 49 46 3a 20  oColumns1.  IF: 
2050: 20 20 21 64 65 66 69 6e 65 64 28 53 51 4c 49 54    !defined(SQLIT
2060: 45 5f 4f 4d 49 54 5f 55 54 46 31 36 29 0a 0a 20  E_OMIT_UTF16).. 
2070: 20 4e 41 4d 45 3a 20 73 63 68 65 6d 61 5f 76 65   NAME: schema_ve
2080: 72 73 69 6f 6e 0a 20 20 54 59 50 45 3a 20 48 45  rsion.  TYPE: HE
2090: 41 44 45 52 5f 56 41 4c 55 45 0a 20 20 41 52 47  ADER_VALUE.  ARG
20a0: 3a 20 20 42 54 52 45 45 5f 53 43 48 45 4d 41 5f  :  BTREE_SCHEMA_
20b0: 56 45 52 53 49 4f 4e 0a 20 20 46 4c 41 47 3a 20  VERSION.  FLAG: 
20c0: 4e 6f 43 6f 6c 75 6d 6e 73 31 20 52 65 73 75 6c  NoColumns1 Resul
20d0: 74 30 0a 20 20 49 46 3a 20 20 20 21 64 65 66 69  t0.  IF:   !defi
20e0: 6e 65 64 28 53 51 4c 49 54 45 5f 4f 4d 49 54 5f  ned(SQLITE_OMIT_
20f0: 53 43 48 45 4d 41 5f 56 45 52 53 49 4f 4e 5f 50  SCHEMA_VERSION_P
2100: 52 41 47 4d 41 53 29 0a 0a 20 20 4e 41 4d 45 3a  RAGMAS)..  NAME:
2110: 20 75 73 65 72 5f 76 65 72 73 69 6f 6e 0a 20 20   user_version.  
2120: 54 59 50 45 3a 20 48 45 41 44 45 52 5f 56 41 4c  TYPE: HEADER_VAL
2130: 55 45 0a 20 20 41 52 47 3a 20 20 42 54 52 45 45  UE.  ARG:  BTREE
2140: 5f 55 53 45 52 5f 56 45 52 53 49 4f 4e 0a 20 20  _USER_VERSION.  
2150: 46 4c 41 47 3a 20 4e 6f 43 6f 6c 75 6d 6e 73 31  FLAG: NoColumns1
2160: 20 52 65 73 75 6c 74 30 0a 20 20 49 46 3a 20 20   Result0.  IF:  
2170: 20 21 64 65 66 69 6e 65 64 28 53 51 4c 49 54 45   !defined(SQLITE
2180: 5f 4f 4d 49 54 5f 53 43 48 45 4d 41 5f 56 45 52  _OMIT_SCHEMA_VER
2190: 53 49 4f 4e 5f 50 52 41 47 4d 41 53 29 0a 0a 20  SION_PRAGMAS).. 
21a0: 20 4e 41 4d 45 3a 20 64 61 74 61 5f 76 65 72 73   NAME: data_vers
21b0: 69 6f 6e 0a 20 20 54 59 50 45 3a 20 48 45 41 44  ion.  TYPE: HEAD
21c0: 45 52 5f 56 41 4c 55 45 0a 20 20 41 52 47 3a 20  ER_VALUE.  ARG: 
21d0: 20 42 54 52 45 45 5f 44 41 54 41 5f 56 45 52 53   BTREE_DATA_VERS
21e0: 49 4f 4e 0a 20 20 46 4c 41 47 3a 20 52 65 61 64  ION.  FLAG: Read
21f0: 4f 6e 6c 79 20 52 65 73 75 6c 74 30 0a 20 20 49  Only Result0.  I
2200: 46 3a 20 20 20 21 64 65 66 69 6e 65 64 28 53 51  F:   !defined(SQ
2210: 4c 49 54 45 5f 4f 4d 49 54 5f 53 43 48 45 4d 41  LITE_OMIT_SCHEMA
2220: 5f 56 45 52 53 49 4f 4e 5f 50 52 41 47 4d 41 53  _VERSION_PRAGMAS
2230: 29 0a 0a 20 20 4e 41 4d 45 3a 20 66 72 65 65 6c  )..  NAME: freel
2240: 69 73 74 5f 63 6f 75 6e 74 0a 20 20 54 59 50 45  ist_count.  TYPE
2250: 3a 20 48 45 41 44 45 52 5f 56 41 4c 55 45 0a 20  : HEADER_VALUE. 
2260: 20 41 52 47 3a 20 20 42 54 52 45 45 5f 46 52 45   ARG:  BTREE_FRE
2270: 45 5f 50 41 47 45 5f 43 4f 55 4e 54 0a 20 20 46  E_PAGE_COUNT.  F
2280: 4c 41 47 3a 20 52 65 61 64 4f 6e 6c 79 20 52 65  LAG: ReadOnly Re
2290: 73 75 6c 74 30 0a 20 20 49 46 3a 20 20 20 21 64  sult0.  IF:   !d
22a0: 65 66 69 6e 65 64 28 53 51 4c 49 54 45 5f 4f 4d  efined(SQLITE_OM
22b0: 49 54 5f 53 43 48 45 4d 41 5f 56 45 52 53 49 4f  IT_SCHEMA_VERSIO
22c0: 4e 5f 50 52 41 47 4d 41 53 29 0a 0a 20 20 4e 41  N_PRAGMAS)..  NA
22d0: 4d 45 3a 20 61 70 70 6c 69 63 61 74 69 6f 6e 5f  ME: application_
22e0: 69 64 0a 20 20 54 59 50 45 3a 20 48 45 41 44 45  id.  TYPE: HEADE
22f0: 52 5f 56 41 4c 55 45 0a 20 20 41 52 47 3a 20 20  R_VALUE.  ARG:  
2300: 42 54 52 45 45 5f 41 50 50 4c 49 43 41 54 49 4f  BTREE_APPLICATIO
2310: 4e 5f 49 44 0a 20 20 46 4c 41 47 3a 20 4e 6f 43  N_ID.  FLAG: NoC
2320: 6f 6c 75 6d 6e 73 31 20 52 65 73 75 6c 74 30 0a  olumns1 Result0.
2330: 20 20 49 46 3a 20 20 20 21 64 65 66 69 6e 65 64    IF:   !defined
2340: 28 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 53 43 48  (SQLITE_OMIT_SCH
2350: 45 4d 41 5f 56 45 52 53 49 4f 4e 5f 50 52 41 47  EMA_VERSION_PRAG
2360: 4d 41 53 29 0a 0a 20 20 4e 41 4d 45 3a 20 63 6f  MAS)..  NAME: co
2370: 6d 70 69 6c 65 5f 6f 70 74 69 6f 6e 73 0a 20 20  mpile_options.  
2380: 46 4c 41 47 3a 20 52 65 73 75 6c 74 30 0a 20 20  FLAG: Result0.  
2390: 49 46 3a 20 20 20 21 64 65 66 69 6e 65 64 28 53  IF:   !defined(S
23a0: 51 4c 49 54 45 5f 4f 4d 49 54 5f 43 4f 4d 50 49  QLITE_OMIT_COMPI
23b0: 4c 45 4f 50 54 49 4f 4e 5f 44 49 41 47 53 29 0a  LEOPTION_DIAGS).
23c0: 0a 20 20 4e 41 4d 45 3a 20 77 61 6c 5f 63 68 65  .  NAME: wal_che
23d0: 63 6b 70 6f 69 6e 74 0a 20 20 46 4c 41 47 3a 20  ckpoint.  FLAG: 
23e0: 4e 65 65 64 53 63 68 65 6d 61 0a 20 20 43 4f 4c  NeedSchema.  COL
23f0: 53 3a 20 62 75 73 79 20 6c 6f 67 20 63 68 65 63  S: busy log chec
2400: 6b 70 6f 69 6e 74 65 64 0a 20 20 49 46 3a 20 20  kpointed.  IF:  
2410: 20 21 64 65 66 69 6e 65 64 28 53 51 4c 49 54 45   !defined(SQLITE
2420: 5f 4f 4d 49 54 5f 57 41 4c 29 0a 0a 20 20 4e 41  _OMIT_WAL)..  NA
2430: 4d 45 3a 20 77 61 6c 5f 61 75 74 6f 63 68 65 63  ME: wal_autochec
2440: 6b 70 6f 69 6e 74 0a 20 20 49 46 3a 20 20 20 21  kpoint.  IF:   !
2450: 64 65 66 69 6e 65 64 28 53 51 4c 49 54 45 5f 4f  defined(SQLITE_O
2460: 4d 49 54 5f 57 41 4c 29 0a 0a 20 20 4e 41 4d 45  MIT_WAL)..  NAME
2470: 3a 20 73 68 72 69 6e 6b 5f 6d 65 6d 6f 72 79 0a  : shrink_memory.
2480: 20 20 46 4c 41 47 3a 20 4e 6f 43 6f 6c 75 6d 6e    FLAG: NoColumn
2490: 73 0a 0a 20 20 4e 41 4d 45 3a 20 62 75 73 79 5f  s..  NAME: busy_
24a0: 74 69 6d 65 6f 75 74 0a 20 20 46 4c 41 47 3a 20  timeout.  FLAG: 
24b0: 52 65 73 75 6c 74 30 0a 20 20 43 4f 4c 53 3a 20  Result0.  COLS: 
24c0: 74 69 6d 65 6f 75 74 0a 0a 20 20 4e 41 4d 45 3a  timeout..  NAME:
24d0: 20 6c 6f 63 6b 5f 73 74 61 74 75 73 0a 20 20 46   lock_status.  F
24e0: 4c 41 47 3a 20 52 65 73 75 6c 74 30 0a 20 20 43  LAG: Result0.  C
24f0: 4f 4c 53 3a 20 64 61 74 61 62 61 73 65 20 73 74  OLS: database st
2500: 61 74 75 73 0a 20 20 49 46 3a 20 20 20 64 65 66  atus.  IF:   def
2510: 69 6e 65 64 28 53 51 4c 49 54 45 5f 44 45 42 55  ined(SQLITE_DEBU
2520: 47 29 20 7c 7c 20 64 65 66 69 6e 65 64 28 53 51  G) || defined(SQ
2530: 4c 49 54 45 5f 54 45 53 54 29 0a 0a 20 20 4e 41  LITE_TEST)..  NA
2540: 4d 45 3a 20 6b 65 79 0a 20 20 54 59 50 45 3a 20  ME: key.  TYPE: 
2550: 4b 45 59 0a 20 20 41 52 47 3a 20 20 30 0a 20 20  KEY.  ARG:  0.  
2560: 49 46 3a 20 20 20 64 65 66 69 6e 65 64 28 53 51  IF:   defined(SQ
2570: 4c 49 54 45 5f 48 41 53 5f 43 4f 44 45 43 29 0a  LITE_HAS_CODEC).
2580: 0a 20 20 4e 41 4d 45 3a 20 72 65 6b 65 79 0a 20  .  NAME: rekey. 
2590: 20 54 59 50 45 3a 20 4b 45 59 0a 20 20 41 52 47   TYPE: KEY.  ARG
25a0: 3a 20 20 31 0a 20 20 49 46 3a 20 20 20 64 65 66  :  1.  IF:   def
25b0: 69 6e 65 64 28 53 51 4c 49 54 45 5f 48 41 53 5f  ined(SQLITE_HAS_
25c0: 43 4f 44 45 43 29 0a 0a 20 20 4e 41 4d 45 3a 20  CODEC)..  NAME: 
25d0: 68 65 78 6b 65 79 0a 20 20 54 59 50 45 3a 20 4b  hexkey.  TYPE: K
25e0: 45 59 0a 20 20 41 52 47 3a 20 20 32 0a 20 20 49  EY.  ARG:  2.  I
25f0: 46 3a 20 20 20 64 65 66 69 6e 65 64 28 53 51 4c  F:   defined(SQL
2600: 49 54 45 5f 48 41 53 5f 43 4f 44 45 43 29 0a 0a  ITE_HAS_CODEC)..
2610: 20 20 4e 41 4d 45 3a 20 68 65 78 72 65 6b 65 79    NAME: hexrekey
2620: 0a 20 20 54 59 50 45 3a 20 4b 45 59 0a 20 20 41  .  TYPE: KEY.  A
2630: 52 47 3a 20 20 33 0a 20 20 49 46 3a 20 20 20 64  RG:  3.  IF:   d
2640: 65 66 69 6e 65 64 28 53 51 4c 49 54 45 5f 48 41  efined(SQLITE_HA
2650: 53 5f 43 4f 44 45 43 29 0a 0a 20 20 4e 41 4d 45  S_CODEC)..  NAME
2660: 3a 20 74 65 78 74 6b 65 79 0a 20 20 54 59 50 45  : textkey.  TYPE
2670: 3a 20 4b 45 59 0a 20 20 41 52 47 3a 20 20 34 0a  : KEY.  ARG:  4.
2680: 20 20 49 46 3a 20 20 20 64 65 66 69 6e 65 64 28    IF:   defined(
2690: 53 51 4c 49 54 45 5f 48 41 53 5f 43 4f 44 45 43  SQLITE_HAS_CODEC
26a0: 29 0a 0a 20 20 4e 41 4d 45 3a 20 74 65 78 74 72  )..  NAME: textr
26b0: 65 6b 65 79 0a 20 20 54 59 50 45 3a 20 4b 45 59  ekey.  TYPE: KEY
26c0: 0a 20 20 41 52 47 3a 20 20 35 0a 20 20 49 46 3a  .  ARG:  5.  IF:
26d0: 20 20 20 64 65 66 69 6e 65 64 28 53 51 4c 49 54     defined(SQLIT
26e0: 45 5f 48 41 53 5f 43 4f 44 45 43 29 0a 0a 20 20  E_HAS_CODEC)..  
26f0: 4e 41 4d 45 3a 20 61 63 74 69 76 61 74 65 5f 65  NAME: activate_e
2700: 78 74 65 6e 73 69 6f 6e 73 0a 20 20 49 46 3a 20  xtensions.  IF: 
2710: 20 20 64 65 66 69 6e 65 64 28 53 51 4c 49 54 45    defined(SQLITE
2720: 5f 48 41 53 5f 43 4f 44 45 43 29 20 7c 7c 20 64  _HAS_CODEC) || d
2730: 65 66 69 6e 65 64 28 53 51 4c 49 54 45 5f 45 4e  efined(SQLITE_EN
2740: 41 42 4c 45 5f 43 45 52 4f 44 29 0a 0a 20 20 4e  ABLE_CEROD)..  N
2750: 41 4d 45 3a 20 73 6f 66 74 5f 68 65 61 70 5f 6c  AME: soft_heap_l
2760: 69 6d 69 74 0a 20 20 46 4c 41 47 3a 20 52 65 73  imit.  FLAG: Res
2770: 75 6c 74 30 0a 0a 20 20 4e 41 4d 45 3a 20 74 68  ult0..  NAME: th
2780: 72 65 61 64 73 0a 20 20 46 4c 41 47 3a 20 52 65  reads.  FLAG: Re
2790: 73 75 6c 74 30 0a 0a 20 20 4e 41 4d 45 3a 20 6f  sult0..  NAME: o
27a0: 70 74 69 6d 69 7a 65 0a 20 20 46 4c 41 47 3a 20  ptimize.  FLAG: 
27b0: 52 65 73 75 6c 74 31 20 4e 65 65 64 53 63 68 65  Result1 NeedSche
27c0: 6d 61 0a 0a 20 20 4e 41 4d 45 3a 20 6c 65 67 61  ma..  NAME: lega
27d0: 63 79 5f 61 6c 74 65 72 5f 74 61 62 6c 65 0a 20  cy_alter_table. 
27e0: 20 54 59 50 45 3a 20 46 4c 41 47 0a 20 20 41 52   TYPE: FLAG.  AR
27f0: 47 3a 20 20 53 51 4c 49 54 45 5f 4c 65 67 61 63  G:  SQLITE_Legac
2800: 79 41 6c 74 65 72 0a 20 20 49 46 3a 20 20 20 21  yAlter.  IF:   !
2810: 64 65 66 69 6e 65 64 28 53 51 4c 49 54 45 5f 4f  defined(SQLITE_O
2820: 4d 49 54 5f 46 4c 41 47 5f 50 52 41 47 4d 41 53  MIT_FLAG_PRAGMAS
2830: 29 0a 7d 0a 0a 23 20 4f 70 65 6e 20 74 68 65 20  ).}..# Open the 
2840: 6f 75 74 70 75 74 20 66 69 6c 65 0a 23 0a 73 65  output file.#.se
2850: 74 20 64 65 73 74 66 69 6c 65 20 22 5b 66 69 6c  t destfile "[fil
2860: 65 20 64 69 72 20 5b 66 69 6c 65 20 64 69 72 20  e dir [file dir 
2870: 5b 66 69 6c 65 20 6e 6f 72 6d 61 6c 20 24 61 72  [file normal $ar
2880: 67 76 30 5d 5d 5d 2f 73 72 63 2f 70 72 61 67 6d  gv0]]]/src/pragm
2890: 61 2e 68 22 0a 70 75 74 73 20 22 4f 76 65 72 77  a.h".puts "Overw
28a0: 72 69 74 69 6e 67 20 24 64 65 73 74 66 69 6c 65  riting $destfile
28b0: 20 77 69 74 68 20 6e 65 77 20 70 72 61 67 6d 61   with new pragma
28c0: 20 74 61 62 6c 65 2e 2e 2e 22 0a 73 65 74 20 66   table...".set f
28d0: 64 20 5b 6f 70 65 6e 20 24 64 65 73 74 66 69 6c  d [open $destfil
28e0: 65 20 77 62 5d 0a 70 75 74 73 20 24 66 64 20 7b  e wb].puts $fd {
28f0: 2f 2a 20 44 4f 20 4e 4f 54 20 45 44 49 54 21 0a  /* DO NOT EDIT!.
2900: 2a 2a 20 54 68 69 73 20 66 69 6c 65 20 69 73 20  ** This file is 
2910: 61 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 67 65  automatically ge
2920: 6e 65 72 61 74 65 64 20 62 79 20 74 68 65 20 73  nerated by the s
2930: 63 72 69 70 74 20 61 74 0a 2a 2a 20 2e 2e 2f 74  cript at.** ../t
2940: 6f 6f 6c 2f 6d 6b 70 72 61 67 6d 61 74 61 62 2e  ool/mkpragmatab.
2950: 74 63 6c 2e 20 20 54 6f 20 75 70 64 61 74 65 20  tcl.  To update 
2960: 74 68 65 20 73 65 74 20 6f 66 20 70 72 61 67 6d  the set of pragm
2970: 61 73 2c 20 65 64 69 74 0a 2a 2a 20 74 68 61 74  as, edit.** that
2980: 20 73 63 72 69 70 74 20 61 6e 64 20 72 65 72 75   script and reru
2990: 6e 20 69 74 2e 0a 2a 2f 7d 0a 0a 23 20 50 61 72  n it..*/}..# Par
29a0: 73 65 20 74 68 65 20 50 52 41 47 4d 41 20 74 61  se the PRAGMA ta
29b0: 62 6c 65 20 61 62 6f 76 65 2e 0a 23 0a 73 65 74  ble above..#.set
29c0: 20 6e 61 6d 65 20 7b 7d 0a 73 65 74 20 74 79 70   name {}.set typ
29d0: 65 20 7b 7d 0a 73 65 74 20 69 66 20 7b 7d 0a 73  e {}.set if {}.s
29e0: 65 74 20 66 6c 61 67 73 20 7b 7d 0a 73 65 74 20  et flags {}.set 
29f0: 63 6f 6c 73 20 7b 7d 0a 73 65 74 20 63 6f 6c 73  cols {}.set cols
2a00: 5f 6c 69 73 74 20 7b 7d 0a 73 65 74 20 61 72 67  _list {}.set arg
2a10: 20 30 0a 70 72 6f 63 20 72 65 63 6f 72 64 5f 6f   0.proc record_o
2a20: 6e 65 20 7b 7d 20 7b 0a 20 20 67 6c 6f 62 61 6c  ne {} {.  global
2a30: 20 6e 61 6d 65 20 74 79 70 65 20 69 66 20 61 72   name type if ar
2a40: 67 20 61 6c 6c 62 79 6e 61 6d 65 20 74 79 70 65  g allbyname type
2a50: 62 79 69 66 20 66 6c 61 67 73 20 63 6f 6c 73 20  byif flags cols 
2a60: 61 6c 6c 5f 63 6f 6c 73 0a 20 20 67 6c 6f 62 61  all_cols.  globa
2a70: 6c 20 63 6f 6c 73 5f 6c 69 73 74 20 63 6f 6c 55  l cols_list colU
2a80: 73 65 64 42 79 0a 20 20 69 66 20 7b 24 6e 61 6d  sedBy.  if {$nam
2a90: 65 3d 3d 22 22 7d 20 72 65 74 75 72 6e 0a 20 20  e==""} return.  
2aa0: 69 66 20 7b 24 63 6f 6c 73 21 3d 22 22 7d 20 7b  if {$cols!=""} {
2ab0: 0a 20 20 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20  .    if {![info 
2ac0: 65 78 69 73 74 73 20 61 6c 6c 5f 63 6f 6c 73 28  exists all_cols(
2ad0: 24 63 6f 6c 73 29 5d 7d 20 7b 0a 20 20 20 20 20  $cols)]} {.     
2ae0: 20 73 65 74 20 61 6c 6c 5f 63 6f 6c 73 28 24 63   set all_cols($c
2af0: 6f 6c 73 29 20 31 0a 20 20 20 20 20 20 6c 61 70  ols) 1.      lap
2b00: 70 65 6e 64 20 63 6f 6c 73 5f 6c 69 73 74 20 24  pend cols_list $
2b10: 63 6f 6c 73 0a 20 20 20 20 7d 0a 20 20 20 20 73  cols.    }.    s
2b20: 65 74 20 63 78 20 24 63 6f 6c 73 0a 20 20 20 20  et cx $cols.    
2b30: 6c 61 70 70 65 6e 64 20 63 6f 6c 55 73 65 64 42  lappend colUsedB
2b40: 79 28 24 63 6f 6c 73 29 20 24 6e 61 6d 65 0a 20  y($cols) $name. 
2b50: 20 7d 20 65 6c 73 65 20 7b 0a 20 20 20 20 73 65   } else {.    se
2b60: 74 20 63 78 20 30 0a 20 20 7d 0a 20 20 73 65 74  t cx 0.  }.  set
2b70: 20 61 6c 6c 62 79 6e 61 6d 65 28 24 6e 61 6d 65   allbyname($name
2b80: 29 20 5b 6c 69 73 74 20 24 74 79 70 65 20 24 61  ) [list $type $a
2b90: 72 67 20 24 69 66 20 24 66 6c 61 67 73 20 24 63  rg $if $flags $c
2ba0: 6f 6c 73 5d 0a 20 20 73 65 74 20 6e 61 6d 65 20  ols].  set name 
2bb0: 7b 7d 0a 20 20 73 65 74 20 74 79 70 65 20 7b 7d  {}.  set type {}
2bc0: 0a 20 20 73 65 74 20 69 66 20 7b 7d 0a 20 20 73  .  set if {}.  s
2bd0: 65 74 20 66 6c 61 67 73 20 7b 7d 0a 20 20 73 65  et flags {}.  se
2be0: 74 20 63 6f 6c 73 20 7b 7d 0a 20 20 73 65 74 20  t cols {}.  set 
2bf0: 61 72 67 20 30 0a 7d 0a 66 6f 72 65 61 63 68 20  arg 0.}.foreach 
2c00: 6c 69 6e 65 20 5b 73 70 6c 69 74 20 24 70 72 61  line [split $pra
2c10: 67 6d 61 5f 64 65 66 20 5c 6e 5d 20 7b 0a 20 20  gma_def \n] {.  
2c20: 73 65 74 20 6c 69 6e 65 20 5b 73 74 72 69 6e 67  set line [string
2c30: 20 74 72 69 6d 20 24 6c 69 6e 65 5d 0a 20 20 69   trim $line].  i
2c40: 66 20 7b 24 6c 69 6e 65 3d 3d 22 22 7d 20 63 6f  f {$line==""} co
2c50: 6e 74 69 6e 75 65 0a 20 20 66 6f 72 65 61 63 68  ntinue.  foreach
2c60: 20 7b 69 64 20 76 61 6c 7d 20 5b 73 70 6c 69 74   {id val} [split
2c70: 20 24 6c 69 6e 65 20 3a 5d 20 62 72 65 61 6b 0a   $line :] break.
2c80: 20 20 73 65 74 20 76 61 6c 20 5b 73 74 72 69 6e    set val [strin
2c90: 67 20 74 72 69 6d 20 24 76 61 6c 5d 0a 20 20 69  g trim $val].  i
2ca0: 66 20 7b 24 69 64 3d 3d 22 4e 41 4d 45 22 7d 20  f {$id=="NAME"} 
2cb0: 7b 0a 20 20 20 20 72 65 63 6f 72 64 5f 6f 6e 65  {.    record_one
2cc0: 20 20 20 20 0a 20 20 20 20 73 65 74 20 6e 61 6d      .    set nam
2cd0: 65 20 24 76 61 6c 0a 20 20 20 20 73 65 74 20 74  e $val.    set t
2ce0: 79 70 65 20 5b 73 74 72 69 6e 67 20 74 6f 75 70  ype [string toup
2cf0: 70 65 72 20 24 76 61 6c 5d 0a 20 20 7d 20 65 6c  per $val].  } el
2d00: 73 65 69 66 20 7b 24 69 64 3d 3d 22 54 59 50 45  seif {$id=="TYPE
2d10: 22 7d 20 7b 0a 20 20 20 20 73 65 74 20 74 79 70  "} {.    set typ
2d20: 65 20 24 76 61 6c 0a 20 20 20 20 69 66 20 7b 24  e $val.    if {$
2d30: 74 79 70 65 3d 3d 22 46 4c 41 47 22 7d 20 7b 0a  type=="FLAG"} {.
2d40: 20 20 20 20 20 20 6c 61 70 70 65 6e 64 20 66 6c        lappend fl
2d50: 61 67 73 20 52 65 73 75 6c 74 30 20 4e 6f 43 6f  ags Result0 NoCo
2d60: 6c 75 6d 6e 73 31 0a 20 20 20 20 7d 0a 20 20 7d  lumns1.    }.  }
2d70: 20 65 6c 73 65 69 66 20 7b 24 69 64 3d 3d 22 41   elseif {$id=="A
2d80: 52 47 22 7d 20 7b 0a 20 20 20 20 73 65 74 20 61  RG"} {.    set a
2d90: 72 67 20 24 76 61 6c 0a 20 20 7d 20 65 6c 73 65  rg $val.  } else
2da0: 69 66 20 7b 24 69 64 3d 3d 22 43 4f 4c 53 22 7d  if {$id=="COLS"}
2db0: 20 7b 0a 20 20 20 20 73 65 74 20 63 6f 6c 73 20   {.    set cols 
2dc0: 24 76 61 6c 0a 20 20 7d 20 65 6c 73 65 69 66 20  $val.  } elseif 
2dd0: 7b 24 69 64 3d 3d 22 49 46 22 7d 20 7b 0a 20 20  {$id=="IF"} {.  
2de0: 20 20 6c 61 70 70 65 6e 64 20 69 66 20 24 76 61    lappend if $va
2df0: 6c 0a 20 20 7d 20 65 6c 73 65 69 66 20 7b 24 69  l.  } elseif {$i
2e00: 64 3d 3d 22 46 4c 41 47 22 7d 20 7b 0a 20 20 20  d=="FLAG"} {.   
2e10: 20 66 6f 72 65 61 63 68 20 74 65 72 6d 20 5b 73   foreach term [s
2e20: 70 6c 69 74 20 24 76 61 6c 5d 20 7b 0a 20 20 20  plit $val] {.   
2e30: 20 20 20 6c 61 70 70 65 6e 64 20 66 6c 61 67 73     lappend flags
2e40: 20 24 74 65 72 6d 0a 20 20 20 20 20 20 73 65 74   $term.      set
2e50: 20 61 6c 6c 66 6c 61 67 73 28 24 74 65 72 6d 29   allflags($term)
2e60: 20 31 0a 20 20 20 20 7d 0a 20 20 7d 20 65 6c 73   1.    }.  } els
2e70: 65 20 7b 0a 20 20 20 20 65 72 72 6f 72 20 22 62  e {.    error "b
2e80: 61 64 20 70 72 61 67 6d 61 5f 64 65 66 20 6c 69  ad pragma_def li
2e90: 6e 65 3a 20 24 6c 69 6e 65 22 0a 20 20 7d 0a 7d  ne: $line".  }.}
2ea0: 0a 72 65 63 6f 72 64 5f 6f 6e 65 0a 73 65 74 20  .record_one.set 
2eb0: 61 6c 6c 6e 61 6d 65 73 20 5b 6c 73 6f 72 74 20  allnames [lsort 
2ec0: 5b 61 72 72 61 79 20 6e 61 6d 65 73 20 61 6c 6c  [array names all
2ed0: 62 79 6e 61 6d 65 5d 5d 0a 0a 23 20 47 65 6e 65  byname]]..# Gene
2ee0: 72 61 74 65 20 23 64 65 66 69 6e 65 73 20 66 6f  rate #defines fo
2ef0: 72 20 61 6c 6c 20 70 72 61 67 6d 61 20 74 79 70  r all pragma typ
2f00: 65 20 6e 61 6d 65 73 2e 20 20 47 72 6f 75 70 20  e names.  Group 
2f10: 74 68 65 20 70 72 61 67 6d 61 73 20 74 68 61 74  the pragmas that
2f20: 20 61 72 65 0a 23 20 6f 6d 69 74 20 69 6e 20 64   are.# omit in d
2f30: 65 66 61 75 6c 74 20 62 75 69 6c 64 73 20 28 64  efault builds (d
2f40: 65 66 69 6e 65 64 28 53 51 4c 49 54 45 5f 44 45  efined(SQLITE_DE
2f50: 42 55 47 29 20 61 6e 64 20 64 65 66 69 6e 65 64  BUG) and defined
2f60: 28 53 51 4c 49 54 45 5f 48 41 53 5f 43 4f 44 45  (SQLITE_HAS_CODE
2f70: 43 29 29 0a 23 20 61 74 20 74 68 65 20 65 6e 64  C)).# at the end
2f80: 2e 0a 23 0a 70 75 74 73 20 24 66 64 20 22 5c 6e  ..#.puts $fd "\n
2f90: 2f 2a 20 54 68 65 20 76 61 72 69 6f 75 73 20 70  /* The various p
2fa0: 72 61 67 6d 61 20 74 79 70 65 73 20 2a 2f 22 0a  ragma types */".
2fb0: 73 65 74 20 70 6e 75 6d 20 30 0a 66 6f 72 65 61  set pnum 0.forea
2fc0: 63 68 20 6e 61 6d 65 20 24 61 6c 6c 6e 61 6d 65  ch name $allname
2fd0: 73 20 7b 0a 20 20 73 65 74 20 74 79 70 65 20 5b  s {.  set type [
2fe0: 6c 69 6e 64 65 78 20 24 61 6c 6c 62 79 6e 61 6d  lindex $allbynam
2ff0: 65 28 24 6e 61 6d 65 29 20 30 5d 0a 20 20 69 66  e($name) 0].  if
3000: 20 7b 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 73   {[info exists s
3010: 65 65 6e 74 79 70 65 28 24 74 79 70 65 29 5d 7d  eentype($type)]}
3020: 20 63 6f 6e 74 69 6e 75 65 0a 20 20 73 65 74 20   continue.  set 
3030: 69 66 20 5b 6c 69 6e 64 65 78 20 24 61 6c 6c 62  if [lindex $allb
3040: 79 6e 61 6d 65 28 24 6e 61 6d 65 29 20 32 5d 0a  yname($name) 2].
3050: 20 20 69 66 20 7b 5b 72 65 67 65 78 70 20 53 51    if {[regexp SQ
3060: 4c 49 54 45 5f 44 45 42 55 47 20 24 69 66 5d 20  LITE_DEBUG $if] 
3070: 7c 7c 20 5b 72 65 67 65 78 70 20 53 51 4c 49 54  || [regexp SQLIT
3080: 45 5f 48 41 53 5f 43 4f 44 45 43 20 24 69 66 5d  E_HAS_CODEC $if]
3090: 7d 20 63 6f 6e 74 69 6e 75 65 0a 20 20 73 65 74  } continue.  set
30a0: 20 73 65 65 6e 74 79 70 65 28 24 74 79 70 65 29   seentype($type)
30b0: 20 31 0a 20 20 70 75 74 73 20 24 66 64 20 5b 66   1.  puts $fd [f
30c0: 6f 72 6d 61 74 20 7b 23 64 65 66 69 6e 65 20 25  ormat {#define %
30d0: 2d 33 35 73 20 25 34 64 7d 20 50 72 61 67 54 79  -35s %4d} PragTy
30e0: 70 5f 24 74 79 70 65 20 24 70 6e 75 6d 5d 0a 20  p_$type $pnum]. 
30f0: 20 69 6e 63 72 20 70 6e 75 6d 0a 7d 0a 66 6f 72   incr pnum.}.for
3100: 65 61 63 68 20 6e 61 6d 65 20 24 61 6c 6c 6e 61  each name $allna
3110: 6d 65 73 20 7b 0a 20 20 73 65 74 20 74 79 70 65  mes {.  set type
3120: 20 5b 6c 69 6e 64 65 78 20 24 61 6c 6c 62 79 6e   [lindex $allbyn
3130: 61 6d 65 28 24 6e 61 6d 65 29 20 30 5d 0a 20 20  ame($name) 0].  
3140: 69 66 20 7b 5b 69 6e 66 6f 20 65 78 69 73 74 73  if {[info exists
3150: 20 73 65 65 6e 74 79 70 65 28 24 74 79 70 65 29   seentype($type)
3160: 5d 7d 20 63 6f 6e 74 69 6e 75 65 0a 20 20 73 65  ]} continue.  se
3170: 74 20 69 66 20 5b 6c 69 6e 64 65 78 20 24 61 6c  t if [lindex $al
3180: 6c 62 79 6e 61 6d 65 28 24 6e 61 6d 65 29 20 32  lbyname($name) 2
3190: 5d 0a 20 20 69 66 20 7b 5b 72 65 67 65 78 70 20  ].  if {[regexp 
31a0: 53 51 4c 49 54 45 5f 44 45 42 55 47 20 24 69 66  SQLITE_DEBUG $if
31b0: 5d 7d 20 63 6f 6e 74 69 6e 75 65 0a 20 20 73 65  ]} continue.  se
31c0: 74 20 73 65 65 6e 74 79 70 65 28 24 74 79 70 65  t seentype($type
31d0: 29 20 31 0a 20 20 70 75 74 73 20 24 66 64 20 5b  ) 1.  puts $fd [
31e0: 66 6f 72 6d 61 74 20 7b 23 64 65 66 69 6e 65 20  format {#define 
31f0: 25 2d 33 35 73 20 25 34 64 7d 20 50 72 61 67 54  %-35s %4d} PragT
3200: 79 70 5f 24 74 79 70 65 20 24 70 6e 75 6d 5d 0a  yp_$type $pnum].
3210: 20 20 69 6e 63 72 20 70 6e 75 6d 0a 7d 0a 66 6f    incr pnum.}.fo
3220: 72 65 61 63 68 20 6e 61 6d 65 20 24 61 6c 6c 6e  reach name $alln
3230: 61 6d 65 73 20 7b 0a 20 20 73 65 74 20 74 79 70  ames {.  set typ
3240: 65 20 5b 6c 69 6e 64 65 78 20 24 61 6c 6c 62 79  e [lindex $allby
3250: 6e 61 6d 65 28 24 6e 61 6d 65 29 20 30 5d 0a 20  name($name) 0]. 
3260: 20 69 66 20 7b 5b 69 6e 66 6f 20 65 78 69 73 74   if {[info exist
3270: 73 20 73 65 65 6e 74 79 70 65 28 24 74 79 70 65  s seentype($type
3280: 29 5d 7d 20 63 6f 6e 74 69 6e 75 65 0a 20 20 73  )]} continue.  s
3290: 65 74 20 73 65 65 6e 74 79 70 65 28 24 74 79 70  et seentype($typ
32a0: 65 29 20 31 0a 20 20 70 75 74 73 20 24 66 64 20  e) 1.  puts $fd 
32b0: 5b 66 6f 72 6d 61 74 20 7b 23 64 65 66 69 6e 65  [format {#define
32c0: 20 25 2d 33 35 73 20 25 34 64 7d 20 50 72 61 67   %-35s %4d} Prag
32d0: 54 79 70 5f 24 74 79 70 65 20 24 70 6e 75 6d 5d  Typ_$type $pnum]
32e0: 0a 20 20 69 6e 63 72 20 70 6e 75 6d 0a 7d 0a 0a  .  incr pnum.}..
32f0: 23 20 47 65 6e 65 72 61 74 65 20 23 64 65 66 69  # Generate #defi
3300: 6e 65 73 20 66 6f 72 20 66 6c 61 67 73 0a 23 0a  nes for flags.#.
3310: 70 75 74 73 20 24 66 64 20 22 5c 6e 2f 2a 20 50  puts $fd "\n/* P
3320: 72 6f 70 65 72 74 79 20 66 6c 61 67 73 20 61 73  roperty flags as
3330: 73 6f 63 69 61 74 65 64 20 77 69 74 68 20 76 61  sociated with va
3340: 72 69 6f 75 73 20 70 72 61 67 6d 61 2e 20 2a 2f  rious pragma. */
3350: 22 0a 73 65 74 20 66 76 20 31 0a 66 6f 72 65 61  ".set fv 1.forea
3360: 63 68 20 66 20 5b 6c 73 6f 72 74 20 5b 61 72 72  ch f [lsort [arr
3370: 61 79 20 6e 61 6d 65 73 20 61 6c 6c 66 6c 61 67  ay names allflag
3380: 73 5d 5d 20 7b 0a 20 20 70 75 74 73 20 24 66 64  s]] {.  puts $fd
3390: 20 5b 66 6f 72 6d 61 74 20 7b 23 64 65 66 69 6e   [format {#defin
33a0: 65 20 50 72 61 67 46 6c 67 5f 25 2d 31 30 73 20  e PragFlg_%-10s 
33b0: 30 78 25 30 32 78 20 2f 2a 20 25 73 20 2a 2f 7d  0x%02x /* %s */}
33c0: 20 5c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20   \.             
33d0: 24 66 20 24 66 76 20 24 66 6c 61 67 4d 65 61 6e  $f $fv $flagMean
33e0: 69 6e 67 28 24 66 29 5d 0a 20 20 73 65 74 20 66  ing($f)].  set f
33f0: 76 20 5b 65 78 70 72 20 7b 24 66 76 2a 32 7d 5d  v [expr {$fv*2}]
3400: 0a 7d 0a 0a 23 20 53 6f 72 74 20 74 68 65 20 63  .}..# Sort the c
3410: 6f 6c 75 6d 6e 20 6c 69 73 74 73 20 73 6f 20 74  olumn lists so t
3420: 68 61 74 20 6c 6f 6e 67 65 72 20 63 6f 6c 75 6d  hat longer colum
3430: 6e 20 6c 69 73 74 73 20 6f 63 63 75 72 20 66 69  n lists occur fi
3440: 72 73 74 0a 23 0a 70 72 6f 63 20 63 6f 6c 73 63  rst.#.proc colsc
3450: 6d 70 20 7b 61 20 62 7d 20 7b 0a 20 20 72 65 74  mp {a b} {.  ret
3460: 75 72 6e 20 5b 65 78 70 72 20 7b 5b 6c 6c 65 6e  urn [expr {[llen
3470: 67 74 68 20 24 62 5d 20 2d 20 5b 6c 6c 65 6e 67  gth $b] - [lleng
3480: 74 68 20 24 61 5d 7d 5d 0a 7d 0a 73 65 74 20 63  th $a]}].}.set c
3490: 6f 6c 73 5f 6c 69 73 74 20 5b 6c 73 6f 72 74 20  ols_list [lsort 
34a0: 2d 63 6f 6d 6d 61 6e 64 20 63 6f 6c 73 63 6d 70  -command colscmp
34b0: 20 24 63 6f 6c 73 5f 6c 69 73 74 5d 0a 0a 23 20   $cols_list]..# 
34c0: 47 65 6e 65 72 61 74 65 20 74 68 65 20 61 72 72  Generate the arr
34d0: 61 79 20 6f 66 20 63 6f 6c 75 6d 6e 20 6e 61 6d  ay of column nam
34e0: 65 73 20 75 73 65 64 20 62 79 20 70 72 61 67 6d  es used by pragm
34f0: 61 73 20 74 68 61 74 20 61 63 74 20 6c 69 6b 65  as that act like
3500: 0a 23 20 71 75 65 72 69 65 73 2e 0a 23 0a 70 75  .# queries..#.pu
3510: 74 73 20 24 66 64 20 22 5c 6e 2f 2a 20 4e 61 6d  ts $fd "\n/* Nam
3520: 65 73 20 6f 66 20 63 6f 6c 75 6d 6e 73 20 66 6f  es of columns fo
3530: 72 20 70 72 61 67 6d 61 73 20 74 68 61 74 20 72  r pragmas that r
3540: 65 74 75 72 6e 20 6d 75 6c 74 69 2d 63 6f 6c 75  eturn multi-colu
3550: 6d 6e 20 72 65 73 75 6c 74 22 0a 70 75 74 73 20  mn result".puts 
3560: 24 66 64 20 22 2a 2a 20 6f 72 20 74 68 61 74 20  $fd "** or that 
3570: 72 65 74 75 72 6e 20 73 69 6e 67 6c 65 2d 63 6f  return single-co
3580: 6c 75 6d 6e 20 72 65 73 75 6c 74 73 20 77 68 65  lumn results whe
3590: 72 65 20 74 68 65 20 6e 61 6d 65 20 6f 66 20 74  re the name of t
35a0: 68 65 22 0a 70 75 74 73 20 24 66 64 20 22 2a 2a  he".puts $fd "**
35b0: 20 72 65 73 75 6c 74 20 63 6f 6c 75 6d 6e 20 69   result column i
35c0: 73 20 64 69 66 66 65 72 65 6e 74 20 66 72 6f 6d  s different from
35d0: 20 74 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65   the name of the
35e0: 20 70 72 61 67 6d 61 5c 6e 2a 2f 22 0a 70 75 74   pragma\n*/".put
35f0: 73 20 24 66 64 20 22 73 74 61 74 69 63 20 63 6f  s $fd "static co
3600: 6e 73 74 20 63 68 61 72 20 2a 63 6f 6e 73 74 20  nst char *const 
3610: 70 72 61 67 43 4e 61 6d 65 5c 5b 5c 5d 20 3d 20  pragCName\[\] = 
3620: 7b 22 0a 73 65 74 20 6f 66 66 73 65 74 20 30 0a  {".set offset 0.
3630: 73 65 74 20 61 6c 6c 63 6f 6c 6c 69 73 74 20 7b  set allcollist {
3640: 7d 0a 66 6f 72 65 61 63 68 20 63 6f 6c 73 20 24  }.foreach cols $
3650: 63 6f 6c 73 5f 6c 69 73 74 20 7b 0a 20 20 73 65  cols_list {.  se
3660: 74 20 6e 20 5b 6c 6c 65 6e 67 74 68 20 24 63 6f  t n [llength $co
3670: 6c 73 5d 0a 20 20 73 65 74 20 6c 69 6d 69 74 20  ls].  set limit 
3680: 5b 65 78 70 72 20 7b 5b 6c 6c 65 6e 67 74 68 20  [expr {[llength 
3690: 24 61 6c 6c 63 6f 6c 6c 69 73 74 5d 20 2d 20 24  $allcollist] - $
36a0: 6e 7d 5d 0a 20 20 66 6f 72 20 7b 73 65 74 20 69  n}].  for {set i
36b0: 20 30 7d 20 7b 24 69 3c 24 6c 69 6d 69 74 7d 20   0} {$i<$limit} 
36c0: 7b 69 6e 63 72 20 69 7d 20 7b 0a 20 20 20 20 73  {incr i} {.    s
36d0: 65 74 20 73 75 62 6c 69 73 74 20 5b 6c 72 61 6e  et sublist [lran
36e0: 67 65 20 24 61 6c 6c 63 6f 6c 6c 69 73 74 20 24  ge $allcollist $
36f0: 69 20 5b 65 78 70 72 20 7b 24 69 2b 24 6e 2d 31  i [expr {$i+$n-1
3700: 7d 5d 5d 0a 20 20 20 20 69 66 20 7b 24 73 75 62  }]].    if {$sub
3710: 6c 69 73 74 3d 3d 24 63 6f 6c 73 7d 20 7b 0a 20  list==$cols} {. 
3720: 20 20 20 20 20 70 75 74 73 20 24 66 64 20 5b 66       puts $fd [f
3730: 6f 72 6d 61 74 20 22 25 32 37 73 2f 2a 20 24 63  ormat "%27s/* $c
3740: 6f 6c 55 73 65 64 42 79 28 24 63 6f 6c 73 29 20  olUsedBy($cols) 
3750: 72 65 75 73 65 73 20 24 69 20 2a 2f 22 20 22 22  reuses $i */" ""
3760: 5d 0a 20 20 20 20 20 20 73 65 74 20 63 6f 6c 73  ].      set cols
3770: 5f 6f 66 66 73 65 74 28 24 63 6f 6c 73 29 20 24  _offset($cols) $
3780: 69 0a 20 20 20 20 20 20 62 72 65 61 6b 0a 20 20  i.      break.  
3790: 20 20 7d 0a 20 20 7d 0a 20 20 69 66 20 7b 24 69    }.  }.  if {$i
37a0: 3c 24 6c 69 6d 69 74 7d 20 63 6f 6e 74 69 6e 75  <$limit} continu
37b0: 65 0a 20 20 73 65 74 20 63 6f 6c 73 5f 6f 66 66  e.  set cols_off
37c0: 73 65 74 28 24 63 6f 6c 73 29 20 24 6f 66 66 73  set($cols) $offs
37d0: 65 74 0a 20 20 73 65 74 20 75 62 20 22 20 2f 2a  et.  set ub " /*
37e0: 20 55 73 65 64 20 62 79 3a 20 24 63 6f 6c 55 73   Used by: $colUs
37f0: 65 64 42 79 28 24 63 6f 6c 73 29 20 2a 2f 22 0a  edBy($cols) */".
3800: 20 20 66 6f 72 65 61 63 68 20 63 20 24 63 6f 6c    foreach c $col
3810: 73 20 7b 0a 20 20 20 20 6c 61 70 70 65 6e 64 20  s {.    lappend 
3820: 61 6c 6c 63 6f 6c 6c 69 73 74 20 24 63 0a 20 20  allcollist $c.  
3830: 20 20 70 75 74 73 20 24 66 64 20 5b 66 6f 72 6d    puts $fd [form
3840: 61 74 20 22 20 20 2f 2a 20 25 33 64 20 2a 2f 20  at "  /* %3d */ 
3850: 25 2d 31 34 73 25 73 22 20 24 6f 66 66 73 65 74  %-14s%s" $offset
3860: 20 5c 22 24 63 5c 22 2c 20 24 75 62 5d 0a 20 20   \"$c\", $ub].  
3870: 20 20 73 65 74 20 75 62 20 22 22 0a 20 20 20 20    set ub "".    
3880: 69 6e 63 72 20 6f 66 66 73 65 74 0a 20 20 7d 0a  incr offset.  }.
3890: 7d 0a 70 75 74 73 20 24 66 64 20 22 5c 31 37 35  }.puts $fd "\175
38a0: 3b 22 0a 0a 23 20 47 65 6e 65 72 61 74 65 20 74  ;"..# Generate t
38b0: 68 65 20 6c 6f 6f 6b 75 70 20 74 61 62 6c 65 0a  he lookup table.
38c0: 23 0a 70 75 74 73 20 24 66 64 20 22 5c 6e 2f 2a  #.puts $fd "\n/*
38d0: 20 44 65 66 69 6e 69 74 69 6f 6e 73 20 6f 66 20   Definitions of 
38e0: 61 6c 6c 20 62 75 69 6c 74 2d 69 6e 20 70 72 61  all built-in pra
38f0: 67 6d 61 73 20 2a 2f 22 0a 70 75 74 73 20 24 66  gmas */".puts $f
3900: 64 20 22 74 79 70 65 64 65 66 20 73 74 72 75 63  d "typedef struc
3910: 74 20 50 72 61 67 6d 61 4e 61 6d 65 20 5c 31 37  t PragmaName \17
3920: 33 22 0a 70 75 74 73 20 24 66 64 20 22 20 20 63  3".puts $fd "  c
3930: 6f 6e 73 74 20 63 68 61 72 20 2a 63 6f 6e 73 74  onst char *const
3940: 20 7a 4e 61 6d 65 3b 20 2f 2a 20 4e 61 6d 65 20   zName; /* Name 
3950: 6f 66 20 70 72 61 67 6d 61 20 2a 2f 22 0a 70 75  of pragma */".pu
3960: 74 73 20 24 66 64 20 22 20 20 75 38 20 65 50 72  ts $fd "  u8 ePr
3970: 61 67 54 79 70 3b 20 20 20 20 20 20 20 20 20 20  agTyp;          
3980: 20 20 20 2f 2a 20 50 72 61 67 54 79 70 5f 58 58     /* PragTyp_XX
3990: 58 20 76 61 6c 75 65 20 2a 2f 22 0a 70 75 74 73  X value */".puts
39a0: 20 24 66 64 20 22 20 20 75 38 20 6d 50 72 61 67   $fd "  u8 mPrag
39b0: 46 6c 67 3b 20 20 20 20 20 20 20 20 20 20 20 20  Flg;            
39c0: 20 2f 2a 20 5a 65 72 6f 20 6f 72 20 6d 6f 72 65   /* Zero or more
39d0: 20 50 72 61 67 46 6c 67 5f 58 58 58 20 76 61 6c   PragFlg_XXX val
39e0: 75 65 73 20 2a 2f 22 0a 70 75 74 73 20 24 66 64  ues */".puts $fd
39f0: 20 7b 20 20 75 38 20 69 50 72 61 67 43 4e 61 6d   {  u8 iPragCNam
3a00: 65 3b 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20  e;           /* 
3a10: 53 74 61 72 74 20 6f 66 20 63 6f 6c 75 6d 6e 20  Start of column 
3a20: 6e 61 6d 65 73 20 69 6e 20 70 72 61 67 43 4e 61  names in pragCNa
3a30: 6d 65 5b 5d 20 2a 2f 7d 0a 70 75 74 73 20 24 66  me[] */}.puts $f
3a40: 64 20 22 20 20 75 38 20 6e 50 72 61 67 43 4e 61  d "  u8 nPragCNa
3a50: 6d 65 3b 20 20 20 20 20 20 20 20 20 20 5c 0a 2f  me;          \./
3a60: 2a 20 4e 75 6d 20 6f 66 20 63 6f 6c 20 6e 61 6d  * Num of col nam
3a70: 65 73 2e 20 30 20 6d 65 61 6e 73 20 75 73 65 20  es. 0 means use 
3a80: 70 72 61 67 6d 61 20 6e 61 6d 65 20 2a 2f 22 0a  pragma name */".
3a90: 70 75 74 73 20 24 66 64 20 22 20 20 75 36 34 20  puts $fd "  u64 
3aa0: 69 41 72 67 3b 20 20 20 20 20 20 20 20 20 20 20  iArg;           
3ab0: 20 20 20 20 20 2f 2a 20 45 78 74 72 61 20 61 72       /* Extra ar
3ac0: 67 75 6d 65 6e 74 20 2a 2f 22 0a 70 75 74 73 20  gument */".puts 
3ad0: 24 66 64 20 22 5c 31 37 35 20 50 72 61 67 6d 61  $fd "\175 Pragma
3ae0: 4e 61 6d 65 3b 22 0a 70 75 74 73 20 24 66 64 20  Name;".puts $fd 
3af0: 22 73 74 61 74 69 63 20 63 6f 6e 73 74 20 50 72  "static const Pr
3b00: 61 67 6d 61 4e 61 6d 65 20 61 50 72 61 67 6d 61  agmaName aPragma
3b10: 4e 61 6d 65 5c 5b 5c 5d 20 3d 20 5c 31 37 33 22  Name\[\] = \173"
3b20: 0a 0a 73 65 74 20 63 75 72 72 65 6e 74 5f 69 66  ..set current_if
3b30: 20 7b 7d 0a 73 65 74 20 73 70 61 63 65 72 20 5b   {}.set spacer [
3b40: 66 6f 72 6d 61 74 20 7b 20 20 20 20 25 32 36 73  format {    %26s
3b50: 20 7d 20 7b 7d 5d 0a 66 6f 72 65 61 63 68 20 6e   } {}].foreach n
3b60: 61 6d 65 20 24 61 6c 6c 6e 61 6d 65 73 20 7b 0a  ame $allnames {.
3b70: 20 20 66 6f 72 65 61 63 68 20 7b 74 79 70 65 20    foreach {type 
3b80: 61 72 67 20 69 66 20 66 6c 61 67 20 63 78 7d 20  arg if flag cx} 
3b90: 24 61 6c 6c 62 79 6e 61 6d 65 28 24 6e 61 6d 65  $allbyname($name
3ba0: 29 20 62 72 65 61 6b 0a 20 20 69 66 20 7b 24 63  ) break.  if {$c
3bb0: 78 3d 3d 30 20 7c 7c 20 24 63 78 3d 3d 22 22 7d  x==0 || $cx==""}
3bc0: 20 7b 0a 20 20 20 20 73 65 74 20 63 79 20 30 0a   {.    set cy 0.
3bd0: 20 20 20 20 73 65 74 20 6e 78 20 30 0a 20 20 7d      set nx 0.  }
3be0: 20 65 6c 73 65 20 7b 0a 20 20 20 20 73 65 74 20   else {.    set 
3bf0: 63 79 20 24 63 6f 6c 73 5f 6f 66 66 73 65 74 28  cy $cols_offset(
3c00: 24 63 78 29 0a 20 20 20 20 73 65 74 20 6e 78 20  $cx).    set nx 
3c10: 5b 6c 6c 65 6e 67 74 68 20 24 63 78 5d 0a 20 20  [llength $cx].  
3c20: 7d 0a 20 20 69 66 20 7b 24 69 66 21 3d 24 63 75  }.  if {$if!=$cu
3c30: 72 72 65 6e 74 5f 69 66 7d 20 7b 0a 20 20 20 20  rrent_if} {.    
3c40: 69 66 20 7b 24 63 75 72 72 65 6e 74 5f 69 66 21  if {$current_if!
3c50: 3d 22 22 7d 20 7b 0a 20 20 20 20 20 20 66 6f 72  =""} {.      for
3c60: 65 61 63 68 20 74 68 69 73 5f 69 66 20 24 63 75  each this_if $cu
3c70: 72 72 65 6e 74 5f 69 66 20 7b 0a 20 20 20 20 20  rrent_if {.     
3c80: 20 20 20 70 75 74 73 20 24 66 64 20 22 23 65 6e     puts $fd "#en
3c90: 64 69 66 22 0a 20 20 20 20 20 20 7d 0a 20 20 20  dif".      }.   
3ca0: 20 7d 0a 20 20 20 20 73 65 74 20 63 75 72 72 65   }.    set curre
3cb0: 6e 74 5f 69 66 20 24 69 66 0a 20 20 20 20 69 66  nt_if $if.    if
3cc0: 20 7b 24 63 75 72 72 65 6e 74 5f 69 66 21 3d 22   {$current_if!="
3cd0: 22 7d 20 7b 0a 20 20 20 20 20 20 66 6f 72 65 61  "} {.      forea
3ce0: 63 68 20 74 68 69 73 5f 69 66 20 24 63 75 72 72  ch this_if $curr
3cf0: 65 6e 74 5f 69 66 20 7b 0a 20 20 20 20 20 20 20  ent_if {.       
3d00: 20 70 75 74 73 20 24 66 64 20 22 23 69 66 20 24   puts $fd "#if $
3d10: 74 68 69 73 5f 69 66 22 0a 20 20 20 20 20 20 7d  this_if".      }
3d20: 0a 20 20 20 20 7d 0a 20 20 7d 0a 20 20 73 65 74  .    }.  }.  set
3d30: 20 74 79 70 65 78 20 5b 66 6f 72 6d 61 74 20 50   typex [format P
3d40: 72 61 67 54 79 70 5f 25 2d 32 33 73 20 24 74 79  ragTyp_%-23s $ty
3d50: 70 65 2c 5d 0a 20 20 69 66 20 7b 24 66 6c 61 67  pe,].  if {$flag
3d60: 3d 3d 22 22 7d 20 7b 0a 20 20 20 20 73 65 74 20  ==""} {.    set 
3d70: 66 6c 61 67 78 20 22 30 22 0a 20 20 7d 20 65 6c  flagx "0".  } el
3d80: 73 65 20 7b 0a 20 20 20 20 73 65 74 20 66 6c 61  se {.    set fla
3d90: 67 78 20 50 72 61 67 46 6c 67 5f 5b 6a 6f 69 6e  gx PragFlg_[join
3da0: 20 24 66 6c 61 67 20 7b 7c 50 72 61 67 46 6c 67   $flag {|PragFlg
3db0: 5f 7d 5d 0a 20 20 7d 0a 20 20 70 75 74 73 20 24  _}].  }.  puts $
3dc0: 66 64 20 22 20 5c 31 37 33 2f 2a 20 7a 4e 61 6d  fd " \173/* zNam
3dd0: 65 3a 20 20 20 20 20 2a 2f 20 5c 22 24 6e 61 6d  e:     */ \"$nam
3de0: 65 5c 22 2c 22 0a 20 20 70 75 74 73 20 24 66 64  e\",".  puts $fd
3df0: 20 22 20 20 2f 2a 20 65 50 72 61 67 54 79 70 3a   "  /* ePragTyp:
3e00: 20 20 2a 2f 20 50 72 61 67 54 79 70 5f 24 74 79    */ PragTyp_$ty
3e10: 70 65 2c 22 0a 20 20 70 75 74 73 20 24 66 64 20  pe,".  puts $fd 
3e20: 22 20 20 2f 2a 20 65 50 72 61 67 46 6c 67 3a 20  "  /* ePragFlg: 
3e30: 20 2a 2f 20 24 66 6c 61 67 78 2c 22 0a 20 20 70   */ $flagx,".  p
3e40: 75 74 73 20 24 66 64 20 22 20 20 2f 2a 20 43 6f  uts $fd "  /* Co
3e50: 6c 4e 61 6d 65 73 3a 20 20 2a 2f 20 24 63 79 2c  lNames:  */ $cy,
3e60: 20 24 6e 78 2c 22 0a 20 20 70 75 74 73 20 24 66   $nx,".  puts $f
3e70: 64 20 22 20 20 2f 2a 20 69 41 72 67 3a 20 20 20  d "  /* iArg:   
3e80: 20 20 20 2a 2f 20 24 61 72 67 20 5c 31 37 35 2c     */ $arg \175,
3e90: 22 0a 7d 0a 69 66 20 7b 24 63 75 72 72 65 6e 74  ".}.if {$current
3ea0: 5f 69 66 21 3d 22 22 7d 20 7b 0a 20 20 66 6f 72  _if!=""} {.  for
3eb0: 65 61 63 68 20 74 68 69 73 5f 69 66 20 24 63 75  each this_if $cu
3ec0: 72 72 65 6e 74 5f 69 66 20 7b 0a 20 20 20 20 70  rrent_if {.    p
3ed0: 75 74 73 20 24 66 64 20 22 23 65 6e 64 69 66 22  uts $fd "#endif"
3ee0: 0a 20 20 7d 0a 7d 0a 70 75 74 73 20 24 66 64 20  .  }.}.puts $fd 
3ef0: 22 5c 31 37 35 3b 22 0a 0a 23 20 63 6f 75 6e 74  "\175;"..# count
3f00: 20 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 70   the number of p
3f10: 72 61 67 6d 61 73 2c 20 66 6f 72 20 69 6e 66 6f  ragmas, for info
3f20: 72 6d 61 74 69 6f 6e 20 70 75 72 70 6f 73 65 73  rmation purposes
3f30: 0a 23 0a 73 65 74 20 61 6c 6c 63 6e 74 20 30 0a  .#.set allcnt 0.
3f40: 73 65 74 20 64 66 6c 74 63 6e 74 20 30 0a 66 6f  set dfltcnt 0.fo
3f50: 72 65 61 63 68 20 6e 61 6d 65 20 24 61 6c 6c 6e  reach name $alln
3f60: 61 6d 65 73 20 7b 0a 20 20 69 6e 63 72 20 61 6c  ames {.  incr al
3f70: 6c 63 6e 74 0a 20 20 73 65 74 20 69 66 20 5b 6c  lcnt.  set if [l
3f80: 69 6e 64 65 78 20 24 61 6c 6c 62 79 6e 61 6d 65  index $allbyname
3f90: 28 24 6e 61 6d 65 29 20 32 5d 0a 20 20 69 66 20  ($name) 2].  if 
3fa0: 7b 5b 72 65 67 65 78 70 20 7b 5e 64 65 66 69 6e  {[regexp {^defin
3fb0: 65 64 7d 20 24 69 66 5d 20 7c 7c 20 5b 72 65 67  ed} $if] || [reg
3fc0: 65 78 70 20 7b 5b 5e 21 5d 64 65 66 69 6e 65 64  exp {[^!]defined
3fd0: 7d 20 24 69 66 5d 7d 20 63 6f 6e 74 69 6e 75 65  } $if]} continue
3fe0: 0a 20 20 69 6e 63 72 20 64 66 6c 74 63 6e 74 0a  .  incr dfltcnt.
3ff0: 7d 0a 70 75 74 73 20 24 66 64 20 22 2f 2a 20 4e  }.puts $fd "/* N
4000: 75 6d 62 65 72 20 6f 66 20 70 72 61 67 6d 61 73  umber of pragmas
4010: 3a 20 24 64 66 6c 74 63 6e 74 20 6f 6e 20 62 79  : $dfltcnt on by
4020: 20 64 65 66 61 75 6c 74 2c 20 24 61 6c 6c 63 6e   default, $allcn
4030: 74 20 74 6f 74 61 6c 2e 20 2a 2f 22 0a           t total. */".