/ Hex Artifact Content
Login

Artifact b8c2663222cdd9431c40716db42aee451ad38f91b3c91c53d1512ce3de00d6c3:


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 6e 6f 6f 70  G)..  NAME: noop
0c30: 5f 75 70 64 61 74 65 0a 20 20 54 59 50 45 3a 20  _update.  TYPE: 
0c40: 46 4c 41 47 0a 20 20 41 52 47 3a 20 20 53 51 4c  FLAG.  ARG:  SQL
0c50: 49 54 45 5f 4e 6f 6f 70 55 70 64 61 74 65 0a 20  ITE_NoopUpdate. 
0c60: 20 49 46 3a 20 20 20 21 64 65 66 69 6e 65 64 28   IF:   !defined(
0c70: 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 46 4c 41 47  SQLITE_OMIT_FLAG
0c80: 5f 50 52 41 47 4d 41 53 29 0a 20 20 49 46 3a 20  _PRAGMAS).  IF: 
0c90: 20 20 64 65 66 69 6e 65 64 28 53 51 4c 49 54 45    defined(SQLITE
0ca0: 5f 45 4e 41 42 4c 45 5f 4e 4f 4f 50 5f 55 50 44  _ENABLE_NOOP_UPD
0cb0: 41 54 45 29 0a 0a 20 20 4e 41 4d 45 3a 20 69 67  ATE)..  NAME: ig
0cc0: 6e 6f 72 65 5f 63 68 65 63 6b 5f 63 6f 6e 73 74  nore_check_const
0cd0: 72 61 69 6e 74 73 0a 20 20 54 59 50 45 3a 20 46  raints.  TYPE: F
0ce0: 4c 41 47 0a 20 20 41 52 47 3a 20 20 53 51 4c 49  LAG.  ARG:  SQLI
0cf0: 54 45 5f 49 67 6e 6f 72 65 43 68 65 63 6b 73 0a  TE_IgnoreChecks.
0d00: 20 20 49 46 3a 20 20 20 21 64 65 66 69 6e 65 64    IF:   !defined
0d10: 28 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 46 4c 41  (SQLITE_OMIT_FLA
0d20: 47 5f 50 52 41 47 4d 41 53 29 0a 20 20 49 46 3a  G_PRAGMAS).  IF:
0d30: 20 20 20 21 64 65 66 69 6e 65 64 28 53 51 4c 49     !defined(SQLI
0d40: 54 45 5f 4f 4d 49 54 5f 43 48 45 43 4b 29 0a 0a  TE_OMIT_CHECK)..
0d50: 20 20 4e 41 4d 45 3a 20 77 72 69 74 61 62 6c 65    NAME: writable
0d60: 5f 73 63 68 65 6d 61 0a 20 20 54 59 50 45 3a 20  _schema.  TYPE: 
0d70: 46 4c 41 47 0a 20 20 41 52 47 3a 20 20 53 51 4c  FLAG.  ARG:  SQL
0d80: 49 54 45 5f 57 72 69 74 65 53 63 68 65 6d 61 7c  ITE_WriteSchema|
0d90: 53 51 4c 49 54 45 5f 4e 6f 53 63 68 65 6d 61 45  SQLITE_NoSchemaE
0da0: 72 72 6f 72 0a 20 20 49 46 3a 20 20 20 21 64 65  rror.  IF:   !de
0db0: 66 69 6e 65 64 28 53 51 4c 49 54 45 5f 4f 4d 49  fined(SQLITE_OMI
0dc0: 54 5f 46 4c 41 47 5f 50 52 41 47 4d 41 53 29 0a  T_FLAG_PRAGMAS).
0dd0: 0a 20 20 4e 41 4d 45 3a 20 72 65 61 64 5f 75 6e  .  NAME: read_un
0de0: 63 6f 6d 6d 69 74 74 65 64 0a 20 20 54 59 50 45  committed.  TYPE
0df0: 3a 20 46 4c 41 47 0a 20 20 41 52 47 3a 20 20 53  : FLAG.  ARG:  S
0e00: 51 4c 49 54 45 5f 52 65 61 64 55 6e 63 6f 6d 6d  QLITE_ReadUncomm
0e10: 69 74 0a 20 20 49 46 3a 20 20 20 21 64 65 66 69  it.  IF:   !defi
0e20: 6e 65 64 28 53 51 4c 49 54 45 5f 4f 4d 49 54 5f  ned(SQLITE_OMIT_
0e30: 46 4c 41 47 5f 50 52 41 47 4d 41 53 29 0a 0a 20  FLAG_PRAGMAS).. 
0e40: 20 4e 41 4d 45 3a 20 72 65 63 75 72 73 69 76 65   NAME: recursive
0e50: 5f 74 72 69 67 67 65 72 73 0a 20 20 54 59 50 45  _triggers.  TYPE
0e60: 3a 20 46 4c 41 47 0a 20 20 41 52 47 3a 20 20 53  : FLAG.  ARG:  S
0e70: 51 4c 49 54 45 5f 52 65 63 54 72 69 67 67 65 72  QLITE_RecTrigger
0e80: 73 0a 20 20 49 46 3a 20 20 20 21 64 65 66 69 6e  s.  IF:   !defin
0e90: 65 64 28 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 46  ed(SQLITE_OMIT_F
0ea0: 4c 41 47 5f 50 52 41 47 4d 41 53 29 0a 0a 20 20  LAG_PRAGMAS)..  
0eb0: 4e 41 4d 45 3a 20 66 6f 72 65 69 67 6e 5f 6b 65  NAME: foreign_ke
0ec0: 79 73 0a 20 20 54 59 50 45 3a 20 46 4c 41 47 0a  ys.  TYPE: FLAG.
0ed0: 20 20 41 52 47 3a 20 20 53 51 4c 49 54 45 5f 46    ARG:  SQLITE_F
0ee0: 6f 72 65 69 67 6e 4b 65 79 73 0a 20 20 49 46 3a  oreignKeys.  IF:
0ef0: 20 20 20 21 64 65 66 69 6e 65 64 28 53 51 4c 49     !defined(SQLI
0f00: 54 45 5f 4f 4d 49 54 5f 46 4c 41 47 5f 50 52 41  TE_OMIT_FLAG_PRA
0f10: 47 4d 41 53 29 0a 20 20 49 46 3a 20 20 20 21 64  GMAS).  IF:   !d
0f20: 65 66 69 6e 65 64 28 53 51 4c 49 54 45 5f 4f 4d  efined(SQLITE_OM
0f30: 49 54 5f 46 4f 52 45 49 47 4e 5f 4b 45 59 29 20  IT_FOREIGN_KEY) 
0f40: 26 26 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 54 52 49 47 47 45 52 29  TE_OMIT_TRIGGER)
0f60: 0a 0a 20 20 4e 41 4d 45 3a 20 64 65 66 65 72 5f  ..  NAME: defer_
0f70: 66 6f 72 65 69 67 6e 5f 6b 65 79 73 0a 20 20 54  foreign_keys.  T
0f80: 59 50 45 3a 20 46 4c 41 47 0a 20 20 41 52 47 3a  YPE: FLAG.  ARG:
0f90: 20 20 53 51 4c 49 54 45 5f 44 65 66 65 72 46 4b    SQLITE_DeferFK
0fa0: 73 0a 20 20 49 46 3a 20 20 20 21 64 65 66 69 6e  s.  IF:   !defin
0fb0: 65 64 28 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 46  ed(SQLITE_OMIT_F
0fc0: 4c 41 47 5f 50 52 41 47 4d 41 53 29 0a 20 20 49  LAG_PRAGMAS).  I
0fd0: 46 3a 20 20 20 21 64 65 66 69 6e 65 64 28 53 51  F:   !defined(SQ
0fe0: 4c 49 54 45 5f 4f 4d 49 54 5f 46 4f 52 45 49 47  LITE_OMIT_FOREIG
0ff0: 4e 5f 4b 45 59 29 20 26 26 20 21 64 65 66 69 6e  N_KEY) && !defin
1000: 65 64 28 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 54  ed(SQLITE_OMIT_T
1010: 52 49 47 47 45 52 29 0a 0a 20 20 4e 41 4d 45 3a  RIGGER)..  NAME:
1020: 20 63 65 6c 6c 5f 73 69 7a 65 5f 63 68 65 63 6b   cell_size_check
1030: 0a 20 20 54 59 50 45 3a 20 46 4c 41 47 0a 20 20  .  TYPE: FLAG.  
1040: 41 52 47 3a 20 20 53 51 4c 49 54 45 5f 43 65 6c  ARG:  SQLITE_Cel
1050: 6c 53 69 7a 65 43 6b 0a 0a 20 20 4e 41 4d 45 3a  lSizeCk..  NAME:
1060: 20 64 65 66 61 75 6c 74 5f 63 61 63 68 65 5f 73   default_cache_s
1070: 69 7a 65 0a 20 20 46 4c 41 47 3a 20 4e 65 65 64  ize.  FLAG: Need
1080: 53 63 68 65 6d 61 20 52 65 73 75 6c 74 30 20 53  Schema Result0 S
1090: 63 68 65 6d 61 52 65 71 20 4e 6f 43 6f 6c 75 6d  chemaReq NoColum
10a0: 6e 73 31 0a 20 20 43 4f 4c 53 3a 20 63 61 63 68  ns1.  COLS: cach
10b0: 65 5f 73 69 7a 65 0a 20 20 49 46 3a 20 20 20 21  e_size.  IF:   !
10c0: 64 65 66 69 6e 65 64 28 53 51 4c 49 54 45 5f 4f  defined(SQLITE_O
10d0: 4d 49 54 5f 50 41 47 45 52 5f 50 52 41 47 4d 41  MIT_PAGER_PRAGMA
10e0: 53 29 20 26 26 20 21 64 65 66 69 6e 65 64 28 53  S) && !defined(S
10f0: 51 4c 49 54 45 5f 4f 4d 49 54 5f 44 45 50 52 45  QLITE_OMIT_DEPRE
1100: 43 41 54 45 44 29 0a 0a 20 20 4e 41 4d 45 3a 20  CATED)..  NAME: 
1110: 70 61 67 65 5f 73 69 7a 65 0a 20 20 46 4c 41 47  page_size.  FLAG
1120: 3a 20 52 65 73 75 6c 74 30 20 53 63 68 65 6d 61  : Result0 Schema
1130: 52 65 71 20 4e 6f 43 6f 6c 75 6d 6e 73 31 0a 20  Req NoColumns1. 
1140: 20 49 46 3a 20 20 20 21 64 65 66 69 6e 65 64 28   IF:   !defined(
1150: 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 50 41 47 45  SQLITE_OMIT_PAGE
1160: 52 5f 50 52 41 47 4d 41 53 29 0a 0a 20 20 4e 41  R_PRAGMAS)..  NA
1170: 4d 45 3a 20 73 65 63 75 72 65 5f 64 65 6c 65 74  ME: secure_delet
1180: 65 0a 20 20 46 4c 41 47 3a 20 52 65 73 75 6c 74  e.  FLAG: Result
1190: 30 0a 20 20 49 46 3a 20 20 20 21 64 65 66 69 6e  0.  IF:   !defin
11a0: 65 64 28 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 50  ed(SQLITE_OMIT_P
11b0: 41 47 45 52 5f 50 52 41 47 4d 41 53 29 0a 0a 20  AGER_PRAGMAS).. 
11c0: 20 4e 41 4d 45 3a 20 70 61 67 65 5f 63 6f 75 6e   NAME: page_coun
11d0: 74 0a 20 20 46 4c 41 47 3a 20 4e 65 65 64 53 63  t.  FLAG: NeedSc
11e0: 68 65 6d 61 20 52 65 73 75 6c 74 30 20 53 63 68  hema Result0 Sch
11f0: 65 6d 61 52 65 71 0a 20 20 49 46 3a 20 20 20 21  emaReq.  IF:   !
1200: 64 65 66 69 6e 65 64 28 53 51 4c 49 54 45 5f 4f  defined(SQLITE_O
1210: 4d 49 54 5f 50 41 47 45 52 5f 50 52 41 47 4d 41  MIT_PAGER_PRAGMA
1220: 53 29 0a 0a 20 20 4e 41 4d 45 3a 20 6d 61 78 5f  S)..  NAME: max_
1230: 70 61 67 65 5f 63 6f 75 6e 74 0a 20 20 54 59 50  page_count.  TYP
1240: 45 3a 20 50 41 47 45 5f 43 4f 55 4e 54 0a 20 20  E: PAGE_COUNT.  
1250: 46 4c 41 47 3a 20 4e 65 65 64 53 63 68 65 6d 61  FLAG: NeedSchema
1260: 20 52 65 73 75 6c 74 30 20 53 63 68 65 6d 61 52   Result0 SchemaR
1270: 65 71 0a 20 20 49 46 3a 20 20 20 21 64 65 66 69  eq.  IF:   !defi
1280: 6e 65 64 28 53 51 4c 49 54 45 5f 4f 4d 49 54 5f  ned(SQLITE_OMIT_
1290: 50 41 47 45 52 5f 50 52 41 47 4d 41 53 29 0a 0a  PAGER_PRAGMAS)..
12a0: 20 20 4e 41 4d 45 3a 20 6c 6f 63 6b 69 6e 67 5f    NAME: locking_
12b0: 6d 6f 64 65 0a 20 20 46 4c 41 47 3a 20 52 65 73  mode.  FLAG: Res
12c0: 75 6c 74 30 20 53 63 68 65 6d 61 52 65 71 0a 20  ult0 SchemaReq. 
12d0: 20 49 46 3a 20 20 20 21 64 65 66 69 6e 65 64 28   IF:   !defined(
12e0: 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 50 41 47 45  SQLITE_OMIT_PAGE
12f0: 52 5f 50 52 41 47 4d 41 53 29 0a 0a 20 20 4e 41  R_PRAGMAS)..  NA
1300: 4d 45 3a 20 6a 6f 75 72 6e 61 6c 5f 6d 6f 64 65  ME: journal_mode
1310: 0a 20 20 46 4c 41 47 3a 20 4e 65 65 64 53 63 68  .  FLAG: NeedSch
1320: 65 6d 61 20 52 65 73 75 6c 74 30 20 53 63 68 65  ema Result0 Sche
1330: 6d 61 52 65 71 0a 20 20 49 46 3a 20 20 20 21 64  maReq.  IF:   !d
1340: 65 66 69 6e 65 64 28 53 51 4c 49 54 45 5f 4f 4d  efined(SQLITE_OM
1350: 49 54 5f 50 41 47 45 52 5f 50 52 41 47 4d 41 53  IT_PAGER_PRAGMAS
1360: 29 0a 0a 20 20 4e 41 4d 45 3a 20 6a 6f 75 72 6e  )..  NAME: journ
1370: 61 6c 5f 73 69 7a 65 5f 6c 69 6d 69 74 0a 20 20  al_size_limit.  
1380: 46 4c 41 47 3a 20 52 65 73 75 6c 74 30 20 53 63  FLAG: Result0 Sc
1390: 68 65 6d 61 52 65 71 0a 20 20 49 46 3a 20 20 20  hemaReq.  IF:   
13a0: 21 64 65 66 69 6e 65 64 28 53 51 4c 49 54 45 5f  !defined(SQLITE_
13b0: 4f 4d 49 54 5f 50 41 47 45 52 5f 50 52 41 47 4d  OMIT_PAGER_PRAGM
13c0: 41 53 29 0a 0a 20 20 4e 41 4d 45 3a 20 63 61 63  AS)..  NAME: cac
13d0: 68 65 5f 73 69 7a 65 0a 20 20 46 4c 41 47 3a 20  he_size.  FLAG: 
13e0: 4e 65 65 64 53 63 68 65 6d 61 20 52 65 73 75 6c  NeedSchema Resul
13f0: 74 30 20 53 63 68 65 6d 61 52 65 71 20 4e 6f 43  t0 SchemaReq NoC
1400: 6f 6c 75 6d 6e 73 31 0a 20 20 49 46 3a 20 20 20  olumns1.  IF:   
1410: 21 64 65 66 69 6e 65 64 28 53 51 4c 49 54 45 5f  !defined(SQLITE_
1420: 4f 4d 49 54 5f 50 41 47 45 52 5f 50 52 41 47 4d  OMIT_PAGER_PRAGM
1430: 41 53 29 0a 0a 20 20 4e 41 4d 45 3a 20 6d 6d 61  AS)..  NAME: mma
1440: 70 5f 73 69 7a 65 0a 20 20 49 46 3a 20 20 20 21  p_size.  IF:   !
1450: 64 65 66 69 6e 65 64 28 53 51 4c 49 54 45 5f 4f  defined(SQLITE_O
1460: 4d 49 54 5f 50 41 47 45 52 5f 50 52 41 47 4d 41  MIT_PAGER_PRAGMA
1470: 53 29 0a 0a 20 20 4e 41 4d 45 3a 20 61 75 74 6f  S)..  NAME: auto
1480: 5f 76 61 63 75 75 6d 0a 20 20 46 4c 41 47 3a 20  _vacuum.  FLAG: 
1490: 4e 65 65 64 53 63 68 65 6d 61 20 52 65 73 75 6c  NeedSchema Resul
14a0: 74 30 20 53 63 68 65 6d 61 52 65 71 20 4e 6f 43  t0 SchemaReq NoC
14b0: 6f 6c 75 6d 6e 73 31 0a 20 20 49 46 3a 20 20 20  olumns1.  IF:   
14c0: 21 64 65 66 69 6e 65 64 28 53 51 4c 49 54 45 5f  !defined(SQLITE_
14d0: 4f 4d 49 54 5f 41 55 54 4f 56 41 43 55 55 4d 29  OMIT_AUTOVACUUM)
14e0: 0a 0a 20 20 4e 41 4d 45 3a 20 69 6e 63 72 65 6d  ..  NAME: increm
14f0: 65 6e 74 61 6c 5f 76 61 63 75 75 6d 0a 20 20 46  ental_vacuum.  F
1500: 4c 41 47 3a 20 4e 65 65 64 53 63 68 65 6d 61 20  LAG: NeedSchema 
1510: 4e 6f 43 6f 6c 75 6d 6e 73 0a 20 20 49 46 3a 20  NoColumns.  IF: 
1520: 20 20 21 64 65 66 69 6e 65 64 28 53 51 4c 49 54    !defined(SQLIT
1530: 45 5f 4f 4d 49 54 5f 41 55 54 4f 56 41 43 55 55  E_OMIT_AUTOVACUU
1540: 4d 29 0a 0a 20 20 4e 41 4d 45 3a 20 74 65 6d 70  M)..  NAME: temp
1550: 5f 73 74 6f 72 65 0a 20 20 46 4c 41 47 3a 20 52  _store.  FLAG: R
1560: 65 73 75 6c 74 30 20 4e 6f 43 6f 6c 75 6d 6e 73  esult0 NoColumns
1570: 31 0a 20 20 49 46 3a 20 20 20 21 64 65 66 69 6e  1.  IF:   !defin
1580: 65 64 28 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 50  ed(SQLITE_OMIT_P
1590: 41 47 45 52 5f 50 52 41 47 4d 41 53 29 0a 0a 20  AGER_PRAGMAS).. 
15a0: 20 4e 41 4d 45 3a 20 74 65 6d 70 5f 73 74 6f 72   NAME: temp_stor
15b0: 65 5f 64 69 72 65 63 74 6f 72 79 0a 20 20 46 4c  e_directory.  FL
15c0: 41 47 3a 20 4e 6f 43 6f 6c 75 6d 6e 73 31 0a 20  AG: NoColumns1. 
15d0: 20 49 46 3a 20 20 20 21 64 65 66 69 6e 65 64 28   IF:   !defined(
15e0: 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 50 41 47 45  SQLITE_OMIT_PAGE
15f0: 52 5f 50 52 41 47 4d 41 53 29 0a 0a 20 20 4e 41  R_PRAGMAS)..  NA
1600: 4d 45 3a 20 64 61 74 61 5f 73 74 6f 72 65 5f 64  ME: data_store_d
1610: 69 72 65 63 74 6f 72 79 0a 20 20 46 4c 41 47 3a  irectory.  FLAG:
1620: 20 4e 6f 43 6f 6c 75 6d 6e 73 31 0a 20 20 49 46   NoColumns1.  IF
1630: 3a 20 20 20 21 64 65 66 69 6e 65 64 28 53 51 4c  :   !defined(SQL
1640: 49 54 45 5f 4f 4d 49 54 5f 50 41 47 45 52 5f 50  ITE_OMIT_PAGER_P
1650: 52 41 47 4d 41 53 29 20 26 26 20 53 51 4c 49 54  RAGMAS) && SQLIT
1660: 45 5f 4f 53 5f 57 49 4e 0a 0a 20 20 4e 41 4d 45  E_OS_WIN..  NAME
1670: 3a 20 6c 6f 63 6b 5f 70 72 6f 78 79 5f 66 69 6c  : lock_proxy_fil
1680: 65 0a 20 20 46 4c 41 47 3a 20 4e 6f 43 6f 6c 75  e.  FLAG: NoColu
1690: 6d 6e 73 31 0a 20 20 49 46 3a 20 20 20 21 64 65  mns1.  IF:   !de
16a0: 66 69 6e 65 64 28 53 51 4c 49 54 45 5f 4f 4d 49  fined(SQLITE_OMI
16b0: 54 5f 50 41 47 45 52 5f 50 52 41 47 4d 41 53 29  T_PAGER_PRAGMAS)
16c0: 20 26 26 20 53 51 4c 49 54 45 5f 45 4e 41 42 4c   && SQLITE_ENABL
16d0: 45 5f 4c 4f 43 4b 49 4e 47 5f 53 54 59 4c 45 0a  E_LOCKING_STYLE.
16e0: 0a 20 20 4e 41 4d 45 3a 20 73 79 6e 63 68 72 6f  .  NAME: synchro
16f0: 6e 6f 75 73 0a 20 20 46 4c 41 47 3a 20 4e 65 65  nous.  FLAG: Nee
1700: 64 53 63 68 65 6d 61 20 52 65 73 75 6c 74 30 20  dSchema Result0 
1710: 53 63 68 65 6d 61 52 65 71 20 4e 6f 43 6f 6c 75  SchemaReq NoColu
1720: 6d 6e 73 31 0a 20 20 49 46 3a 20 20 20 21 64 65  mns1.  IF:   !de
1730: 66 69 6e 65 64 28 53 51 4c 49 54 45 5f 4f 4d 49  fined(SQLITE_OMI
1740: 54 5f 50 41 47 45 52 5f 50 52 41 47 4d 41 53 29  T_PAGER_PRAGMAS)
1750: 0a 0a 20 20 4e 41 4d 45 3a 20 74 61 62 6c 65 5f  ..  NAME: table_
1760: 69 6e 66 6f 0a 20 20 46 4c 41 47 3a 20 4e 65 65  info.  FLAG: Nee
1770: 64 53 63 68 65 6d 61 20 52 65 73 75 6c 74 31 20  dSchema Result1 
1780: 53 63 68 65 6d 61 4f 70 74 0a 20 20 41 52 47 3a  SchemaOpt.  ARG:
1790: 20 20 30 0a 20 20 43 4f 4c 53 3a 20 63 69 64 20    0.  COLS: cid 
17a0: 6e 61 6d 65 20 74 79 70 65 20 6e 6f 74 6e 75 6c  name type notnul
17b0: 6c 20 64 66 6c 74 5f 76 61 6c 75 65 20 70 6b 0a  l dflt_value pk.
17c0: 20 20 49 46 3a 20 20 20 21 64 65 66 69 6e 65 64    IF:   !defined
17d0: 28 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 53 43 48  (SQLITE_OMIT_SCH
17e0: 45 4d 41 5f 50 52 41 47 4d 41 53 29 0a 0a 20 20  EMA_PRAGMAS)..  
17f0: 4e 41 4d 45 3a 20 74 61 62 6c 65 5f 78 69 6e 66  NAME: table_xinf
1800: 6f 0a 20 20 54 59 50 45 3a 20 54 41 42 4c 45 5f  o.  TYPE: TABLE_
1810: 49 4e 46 4f 0a 20 20 46 4c 41 47 3a 20 4e 65 65  INFO.  FLAG: Nee
1820: 64 53 63 68 65 6d 61 20 52 65 73 75 6c 74 31 20  dSchema Result1 
1830: 53 63 68 65 6d 61 4f 70 74 0a 20 20 41 52 47 3a  SchemaOpt.  ARG:
1840: 20 20 31 0a 20 20 43 4f 4c 53 3a 20 63 69 64 20    1.  COLS: cid 
1850: 6e 61 6d 65 20 74 79 70 65 20 6e 6f 74 6e 75 6c  name type notnul
1860: 6c 20 64 66 6c 74 5f 76 61 6c 75 65 20 70 6b 20  l dflt_value pk 
1870: 68 69 64 64 65 6e 0a 20 20 49 46 3a 20 20 20 21  hidden.  IF:   !
1880: 64 65 66 69 6e 65 64 28 53 51 4c 49 54 45 5f 4f  defined(SQLITE_O
1890: 4d 49 54 5f 53 43 48 45 4d 41 5f 50 52 41 47 4d  MIT_SCHEMA_PRAGM
18a0: 41 53 29 0a 0a 20 20 4e 41 4d 45 3a 20 73 74 61  AS)..  NAME: sta
18b0: 74 73 0a 20 20 46 4c 41 47 3a 20 4e 65 65 64 53  ts.  FLAG: NeedS
18c0: 63 68 65 6d 61 20 52 65 73 75 6c 74 30 20 53 63  chema Result0 Sc
18d0: 68 65 6d 61 52 65 71 0a 20 20 43 4f 4c 53 3a 20  hemaReq.  COLS: 
18e0: 74 62 6c 20 69 64 78 20 77 64 74 68 20 68 67 68  tbl idx wdth hgh
18f0: 74 20 66 6c 67 73 0a 20 20 49 46 3a 20 20 20 21  t flgs.  IF:   !
1900: 64 65 66 69 6e 65 64 28 53 51 4c 49 54 45 5f 4f  defined(SQLITE_O
1910: 4d 49 54 5f 53 43 48 45 4d 41 5f 50 52 41 47 4d  MIT_SCHEMA_PRAGM
1920: 41 53 29 20 26 26 20 64 65 66 69 6e 65 64 28 53  AS) && defined(S
1930: 51 4c 49 54 45 5f 44 45 42 55 47 29 0a 0a 20 20  QLITE_DEBUG)..  
1940: 4e 41 4d 45 3a 20 69 6e 64 65 78 5f 69 6e 66 6f  NAME: index_info
1950: 0a 20 20 54 59 50 45 3a 20 49 4e 44 45 58 5f 49  .  TYPE: INDEX_I
1960: 4e 46 4f 0a 20 20 41 52 47 3a 20 20 30 0a 20 20  NFO.  ARG:  0.  
1970: 46 4c 41 47 3a 20 4e 65 65 64 53 63 68 65 6d 61  FLAG: NeedSchema
1980: 20 52 65 73 75 6c 74 31 20 53 63 68 65 6d 61 4f   Result1 SchemaO
1990: 70 74 0a 20 20 43 4f 4c 53 3a 20 73 65 71 6e 6f  pt.  COLS: seqno
19a0: 20 63 69 64 20 6e 61 6d 65 0a 20 20 49 46 3a 20   cid name.  IF: 
19b0: 20 20 21 64 65 66 69 6e 65 64 28 53 51 4c 49 54    !defined(SQLIT
19c0: 45 5f 4f 4d 49 54 5f 53 43 48 45 4d 41 5f 50 52  E_OMIT_SCHEMA_PR
19d0: 41 47 4d 41 53 29 0a 0a 20 20 4e 41 4d 45 3a 20  AGMAS)..  NAME: 
19e0: 69 6e 64 65 78 5f 78 69 6e 66 6f 0a 20 20 54 59  index_xinfo.  TY
19f0: 50 45 3a 20 49 4e 44 45 58 5f 49 4e 46 4f 0a 20  PE: INDEX_INFO. 
1a00: 20 41 52 47 3a 20 20 31 0a 20 20 46 4c 41 47 3a   ARG:  1.  FLAG:
1a10: 20 4e 65 65 64 53 63 68 65 6d 61 20 52 65 73 75   NeedSchema Resu
1a20: 6c 74 31 20 53 63 68 65 6d 61 4f 70 74 0a 20 20  lt1 SchemaOpt.  
1a30: 43 4f 4c 53 3a 20 73 65 71 6e 6f 20 63 69 64 20  COLS: seqno cid 
1a40: 6e 61 6d 65 20 64 65 73 63 20 63 6f 6c 6c 20 6b  name desc coll k
1a50: 65 79 0a 20 20 49 46 3a 20 20 20 21 64 65 66 69  ey.  IF:   !defi
1a60: 6e 65 64 28 53 51 4c 49 54 45 5f 4f 4d 49 54 5f  ned(SQLITE_OMIT_
1a70: 53 43 48 45 4d 41 5f 50 52 41 47 4d 41 53 29 0a  SCHEMA_PRAGMAS).
1a80: 0a 20 20 4e 41 4d 45 3a 20 69 6e 64 65 78 5f 6c  .  NAME: index_l
1a90: 69 73 74 0a 20 20 46 4c 41 47 3a 20 4e 65 65 64  ist.  FLAG: Need
1aa0: 53 63 68 65 6d 61 20 52 65 73 75 6c 74 31 20 53  Schema Result1 S
1ab0: 63 68 65 6d 61 4f 70 74 0a 20 20 43 4f 4c 53 3a  chemaOpt.  COLS:
1ac0: 20 73 65 71 20 6e 61 6d 65 20 75 6e 69 71 75 65   seq name unique
1ad0: 20 6f 72 69 67 69 6e 20 70 61 72 74 69 61 6c 0a   origin partial.
1ae0: 20 20 49 46 3a 20 20 20 21 64 65 66 69 6e 65 64    IF:   !defined
1af0: 28 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 53 43 48  (SQLITE_OMIT_SCH
1b00: 45 4d 41 5f 50 52 41 47 4d 41 53 29 0a 0a 20 20  EMA_PRAGMAS)..  
1b10: 4e 41 4d 45 3a 20 64 61 74 61 62 61 73 65 5f 6c  NAME: database_l
1b20: 69 73 74 0a 20 20 46 4c 41 47 3a 20 4e 65 65 64  ist.  FLAG: Need
1b30: 53 63 68 65 6d 61 20 52 65 73 75 6c 74 30 0a 20  Schema Result0. 
1b40: 20 43 4f 4c 53 3a 20 73 65 71 20 6e 61 6d 65 20   COLS: seq name 
1b50: 66 69 6c 65 0a 20 20 49 46 3a 20 20 20 21 64 65  file.  IF:   !de
1b60: 66 69 6e 65 64 28 53 51 4c 49 54 45 5f 4f 4d 49  fined(SQLITE_OMI
1b70: 54 5f 53 43 48 45 4d 41 5f 50 52 41 47 4d 41 53  T_SCHEMA_PRAGMAS
1b80: 29 0a 0a 20 20 4e 41 4d 45 3a 20 66 75 6e 63 74  )..  NAME: funct
1b90: 69 6f 6e 5f 6c 69 73 74 0a 20 20 46 4c 41 47 3a  ion_list.  FLAG:
1ba0: 20 52 65 73 75 6c 74 30 0a 20 20 43 4f 4c 53 3a   Result0.  COLS:
1bb0: 20 6e 61 6d 65 20 62 75 69 6c 74 69 6e 0a 20 20   name builtin.  
1bc0: 49 46 3a 20 20 20 21 64 65 66 69 6e 65 64 28 53  IF:   !defined(S
1bd0: 51 4c 49 54 45 5f 4f 4d 49 54 5f 53 43 48 45 4d  QLITE_OMIT_SCHEM
1be0: 41 5f 50 52 41 47 4d 41 53 29 0a 20 20 49 46 3a  A_PRAGMAS).  IF:
1bf0: 20 20 20 64 65 66 69 6e 65 64 28 53 51 4c 49 54     defined(SQLIT
1c00: 45 5f 49 4e 54 52 4f 53 50 45 43 54 49 4f 4e 5f  E_INTROSPECTION_
1c10: 50 52 41 47 4d 41 53 29 0a 0a 20 20 4e 41 4d 45  PRAGMAS)..  NAME
1c20: 3a 20 6d 6f 64 75 6c 65 5f 6c 69 73 74 0a 20 20  : module_list.  
1c30: 46 4c 41 47 3a 20 52 65 73 75 6c 74 30 0a 20 20  FLAG: Result0.  
1c40: 43 4f 4c 53 3a 20 6e 61 6d 65 0a 20 20 49 46 3a  COLS: name.  IF:
1c50: 20 20 20 21 64 65 66 69 6e 65 64 28 53 51 4c 49     !defined(SQLI
1c60: 54 45 5f 4f 4d 49 54 5f 53 43 48 45 4d 41 5f 50  TE_OMIT_SCHEMA_P
1c70: 52 41 47 4d 41 53 29 0a 20 20 49 46 3a 20 20 20  RAGMAS).  IF:   
1c80: 21 64 65 66 69 6e 65 64 28 53 51 4c 49 54 45 5f  !defined(SQLITE_
1c90: 4f 4d 49 54 5f 56 49 52 54 55 41 4c 54 41 42 4c  OMIT_VIRTUALTABL
1ca0: 45 29 0a 20 20 49 46 3a 20 20 20 64 65 66 69 6e  E).  IF:   defin
1cb0: 65 64 28 53 51 4c 49 54 45 5f 49 4e 54 52 4f 53  ed(SQLITE_INTROS
1cc0: 50 45 43 54 49 4f 4e 5f 50 52 41 47 4d 41 53 29  PECTION_PRAGMAS)
1cd0: 0a 0a 20 20 4e 41 4d 45 3a 20 70 72 61 67 6d 61  ..  NAME: pragma
1ce0: 5f 6c 69 73 74 0a 20 20 46 4c 41 47 3a 20 52 65  _list.  FLAG: Re
1cf0: 73 75 6c 74 30 0a 20 20 43 4f 4c 53 3a 20 6e 61  sult0.  COLS: na
1d00: 6d 65 0a 20 20 49 46 3a 20 20 20 64 65 66 69 6e  me.  IF:   defin
1d10: 65 64 28 53 51 4c 49 54 45 5f 49 4e 54 52 4f 53  ed(SQLITE_INTROS
1d20: 50 45 43 54 49 4f 4e 5f 50 52 41 47 4d 41 53 29  PECTION_PRAGMAS)
1d30: 0a 0a 20 20 4e 41 4d 45 3a 20 63 6f 6c 6c 61 74  ..  NAME: collat
1d40: 69 6f 6e 5f 6c 69 73 74 0a 20 20 46 4c 41 47 3a  ion_list.  FLAG:
1d50: 20 52 65 73 75 6c 74 30 0a 20 20 43 4f 4c 53 3a   Result0.  COLS:
1d60: 20 73 65 71 20 6e 61 6d 65 0a 20 20 49 46 3a 20   seq name.  IF: 
1d70: 20 20 21 64 65 66 69 6e 65 64 28 53 51 4c 49 54    !defined(SQLIT
1d80: 45 5f 4f 4d 49 54 5f 53 43 48 45 4d 41 5f 50 52  E_OMIT_SCHEMA_PR
1d90: 41 47 4d 41 53 29 0a 0a 20 20 4e 41 4d 45 3a 20  AGMAS)..  NAME: 
1da0: 66 6f 72 65 69 67 6e 5f 6b 65 79 5f 6c 69 73 74  foreign_key_list
1db0: 0a 20 20 46 4c 41 47 3a 20 4e 65 65 64 53 63 68  .  FLAG: NeedSch
1dc0: 65 6d 61 20 52 65 73 75 6c 74 31 20 53 63 68 65  ema Result1 Sche
1dd0: 6d 61 4f 70 74 0a 20 20 43 4f 4c 53 3a 20 69 64  maOpt.  COLS: id
1de0: 20 73 65 71 20 74 61 62 6c 65 20 66 72 6f 6d 20   seq table from 
1df0: 74 6f 20 6f 6e 5f 75 70 64 61 74 65 20 6f 6e 5f  to on_update on_
1e00: 64 65 6c 65 74 65 20 6d 61 74 63 68 0a 20 20 49  delete match.  I
1e10: 46 3a 20 20 20 21 64 65 66 69 6e 65 64 28 53 51  F:   !defined(SQ
1e20: 4c 49 54 45 5f 4f 4d 49 54 5f 46 4f 52 45 49 47  LITE_OMIT_FOREIG
1e30: 4e 5f 4b 45 59 29 0a 0a 20 20 4e 41 4d 45 3a 20  N_KEY)..  NAME: 
1e40: 66 6f 72 65 69 67 6e 5f 6b 65 79 5f 63 68 65 63  foreign_key_chec
1e50: 6b 0a 20 20 46 4c 41 47 3a 20 4e 65 65 64 53 63  k.  FLAG: NeedSc
1e60: 68 65 6d 61 20 52 65 73 75 6c 74 30 0a 20 20 43  hema Result0.  C
1e70: 4f 4c 53 3a 20 74 61 62 6c 65 20 72 6f 77 69 64  OLS: table rowid
1e80: 20 70 61 72 65 6e 74 20 66 6b 69 64 0a 20 20 49   parent fkid.  I
1e90: 46 3a 20 20 20 21 64 65 66 69 6e 65 64 28 53 51  F:   !defined(SQ
1ea0: 4c 49 54 45 5f 4f 4d 49 54 5f 46 4f 52 45 49 47  LITE_OMIT_FOREIG
1eb0: 4e 5f 4b 45 59 29 20 26 26 20 21 64 65 66 69 6e  N_KEY) && !defin
1ec0: 65 64 28 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 54  ed(SQLITE_OMIT_T
1ed0: 52 49 47 47 45 52 29 0a 0a 20 20 4e 41 4d 45 3a  RIGGER)..  NAME:
1ee0: 20 70 61 72 73 65 72 5f 74 72 61 63 65 0a 20 20   parser_trace.  
1ef0: 54 59 50 45 3a 20 46 4c 41 47 0a 20 20 41 52 47  TYPE: FLAG.  ARG
1f00: 3a 20 20 53 51 4c 49 54 45 5f 50 61 72 73 65 72  :  SQLITE_Parser
1f10: 54 72 61 63 65 0a 20 20 49 46 3a 20 20 20 21 64  Trace.  IF:   !d
1f20: 65 66 69 6e 65 64 28 53 51 4c 49 54 45 5f 4f 4d  efined(SQLITE_OM
1f30: 49 54 5f 46 4c 41 47 5f 50 52 41 47 4d 41 53 29  IT_FLAG_PRAGMAS)
1f40: 0a 20 20 49 46 3a 20 20 20 64 65 66 69 6e 65 64  .  IF:   defined
1f50: 28 53 51 4c 49 54 45 5f 44 45 42 55 47 29 0a 0a  (SQLITE_DEBUG)..
1f60: 20 20 4e 41 4d 45 3a 20 63 61 73 65 5f 73 65 6e    NAME: case_sen
1f70: 73 69 74 69 76 65 5f 6c 69 6b 65 0a 20 20 46 4c  sitive_like.  FL
1f80: 41 47 3a 20 4e 6f 43 6f 6c 75 6d 6e 73 0a 0a 20  AG: NoColumns.. 
1f90: 20 4e 41 4d 45 3a 20 69 6e 74 65 67 72 69 74 79   NAME: integrity
1fa0: 5f 63 68 65 63 6b 0a 20 20 46 4c 41 47 3a 20 4e  _check.  FLAG: N
1fb0: 65 65 64 53 63 68 65 6d 61 20 52 65 73 75 6c 74  eedSchema Result
1fc0: 30 20 52 65 73 75 6c 74 31 0a 20 20 49 46 3a 20  0 Result1.  IF: 
1fd0: 20 20 21 64 65 66 69 6e 65 64 28 53 51 4c 49 54    !defined(SQLIT
1fe0: 45 5f 4f 4d 49 54 5f 49 4e 54 45 47 52 49 54 59  E_OMIT_INTEGRITY
1ff0: 5f 43 48 45 43 4b 29 0a 0a 20 20 4e 41 4d 45 3a  _CHECK)..  NAME:
2000: 20 71 75 69 63 6b 5f 63 68 65 63 6b 0a 20 20 54   quick_check.  T
2010: 59 50 45 3a 20 49 4e 54 45 47 52 49 54 59 5f 43  YPE: INTEGRITY_C
2020: 48 45 43 4b 0a 20 20 46 4c 41 47 3a 20 4e 65 65  HECK.  FLAG: Nee
2030: 64 53 63 68 65 6d 61 20 52 65 73 75 6c 74 30 20  dSchema Result0 
2040: 52 65 73 75 6c 74 31 0a 20 20 49 46 3a 20 20 20  Result1.  IF:   
2050: 21 64 65 66 69 6e 65 64 28 53 51 4c 49 54 45 5f  !defined(SQLITE_
2060: 4f 4d 49 54 5f 49 4e 54 45 47 52 49 54 59 5f 43  OMIT_INTEGRITY_C
2070: 48 45 43 4b 29 0a 0a 20 20 4e 41 4d 45 3a 20 65  HECK)..  NAME: e
2080: 6e 63 6f 64 69 6e 67 0a 20 20 46 4c 41 47 3a 20  ncoding.  FLAG: 
2090: 52 65 73 75 6c 74 30 20 4e 6f 43 6f 6c 75 6d 6e  Result0 NoColumn
20a0: 73 31 0a 20 20 49 46 3a 20 20 20 21 64 65 66 69  s1.  IF:   !defi
20b0: 6e 65 64 28 53 51 4c 49 54 45 5f 4f 4d 49 54 5f  ned(SQLITE_OMIT_
20c0: 55 54 46 31 36 29 0a 0a 20 20 4e 41 4d 45 3a 20  UTF16)..  NAME: 
20d0: 73 63 68 65 6d 61 5f 76 65 72 73 69 6f 6e 0a 20  schema_version. 
20e0: 20 54 59 50 45 3a 20 48 45 41 44 45 52 5f 56 41   TYPE: HEADER_VA
20f0: 4c 55 45 0a 20 20 41 52 47 3a 20 20 42 54 52 45  LUE.  ARG:  BTRE
2100: 45 5f 53 43 48 45 4d 41 5f 56 45 52 53 49 4f 4e  E_SCHEMA_VERSION
2110: 0a 20 20 46 4c 41 47 3a 20 4e 6f 43 6f 6c 75 6d  .  FLAG: NoColum
2120: 6e 73 31 20 52 65 73 75 6c 74 30 0a 20 20 49 46  ns1 Result0.  IF
2130: 3a 20 20 20 21 64 65 66 69 6e 65 64 28 53 51 4c  :   !defined(SQL
2140: 49 54 45 5f 4f 4d 49 54 5f 53 43 48 45 4d 41 5f  ITE_OMIT_SCHEMA_
2150: 56 45 52 53 49 4f 4e 5f 50 52 41 47 4d 41 53 29  VERSION_PRAGMAS)
2160: 0a 0a 20 20 4e 41 4d 45 3a 20 75 73 65 72 5f 76  ..  NAME: user_v
2170: 65 72 73 69 6f 6e 0a 20 20 54 59 50 45 3a 20 48  ersion.  TYPE: H
2180: 45 41 44 45 52 5f 56 41 4c 55 45 0a 20 20 41 52  EADER_VALUE.  AR
2190: 47 3a 20 20 42 54 52 45 45 5f 55 53 45 52 5f 56  G:  BTREE_USER_V
21a0: 45 52 53 49 4f 4e 0a 20 20 46 4c 41 47 3a 20 4e  ERSION.  FLAG: N
21b0: 6f 43 6f 6c 75 6d 6e 73 31 20 52 65 73 75 6c 74  oColumns1 Result
21c0: 30 0a 20 20 49 46 3a 20 20 20 21 64 65 66 69 6e  0.  IF:   !defin
21d0: 65 64 28 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 53  ed(SQLITE_OMIT_S
21e0: 43 48 45 4d 41 5f 56 45 52 53 49 4f 4e 5f 50 52  CHEMA_VERSION_PR
21f0: 41 47 4d 41 53 29 0a 0a 20 20 4e 41 4d 45 3a 20  AGMAS)..  NAME: 
2200: 64 61 74 61 5f 76 65 72 73 69 6f 6e 0a 20 20 54  data_version.  T
2210: 59 50 45 3a 20 48 45 41 44 45 52 5f 56 41 4c 55  YPE: HEADER_VALU
2220: 45 0a 20 20 41 52 47 3a 20 20 42 54 52 45 45 5f  E.  ARG:  BTREE_
2230: 44 41 54 41 5f 56 45 52 53 49 4f 4e 0a 20 20 46  DATA_VERSION.  F
2240: 4c 41 47 3a 20 52 65 61 64 4f 6e 6c 79 20 52 65  LAG: ReadOnly Re
2250: 73 75 6c 74 30 0a 20 20 49 46 3a 20 20 20 21 64  sult0.  IF:   !d
2260: 65 66 69 6e 65 64 28 53 51 4c 49 54 45 5f 4f 4d  efined(SQLITE_OM
2270: 49 54 5f 53 43 48 45 4d 41 5f 56 45 52 53 49 4f  IT_SCHEMA_VERSIO
2280: 4e 5f 50 52 41 47 4d 41 53 29 0a 0a 20 20 4e 41  N_PRAGMAS)..  NA
2290: 4d 45 3a 20 66 72 65 65 6c 69 73 74 5f 63 6f 75  ME: freelist_cou
22a0: 6e 74 0a 20 20 54 59 50 45 3a 20 48 45 41 44 45  nt.  TYPE: HEADE
22b0: 52 5f 56 41 4c 55 45 0a 20 20 41 52 47 3a 20 20  R_VALUE.  ARG:  
22c0: 42 54 52 45 45 5f 46 52 45 45 5f 50 41 47 45 5f  BTREE_FREE_PAGE_
22d0: 43 4f 55 4e 54 0a 20 20 46 4c 41 47 3a 20 52 65  COUNT.  FLAG: Re
22e0: 61 64 4f 6e 6c 79 20 52 65 73 75 6c 74 30 0a 20  adOnly Result0. 
22f0: 20 49 46 3a 20 20 20 21 64 65 66 69 6e 65 64 28   IF:   !defined(
2300: 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 53 43 48 45  SQLITE_OMIT_SCHE
2310: 4d 41 5f 56 45 52 53 49 4f 4e 5f 50 52 41 47 4d  MA_VERSION_PRAGM
2320: 41 53 29 0a 0a 20 20 4e 41 4d 45 3a 20 61 70 70  AS)..  NAME: app
2330: 6c 69 63 61 74 69 6f 6e 5f 69 64 0a 20 20 54 59  lication_id.  TY
2340: 50 45 3a 20 48 45 41 44 45 52 5f 56 41 4c 55 45  PE: HEADER_VALUE
2350: 0a 20 20 41 52 47 3a 20 20 42 54 52 45 45 5f 41  .  ARG:  BTREE_A
2360: 50 50 4c 49 43 41 54 49 4f 4e 5f 49 44 0a 20 20  PPLICATION_ID.  
2370: 46 4c 41 47 3a 20 4e 6f 43 6f 6c 75 6d 6e 73 31  FLAG: NoColumns1
2380: 20 52 65 73 75 6c 74 30 0a 20 20 49 46 3a 20 20   Result0.  IF:  
2390: 20 21 64 65 66 69 6e 65 64 28 53 51 4c 49 54 45   !defined(SQLITE
23a0: 5f 4f 4d 49 54 5f 53 43 48 45 4d 41 5f 56 45 52  _OMIT_SCHEMA_VER
23b0: 53 49 4f 4e 5f 50 52 41 47 4d 41 53 29 0a 0a 20  SION_PRAGMAS).. 
23c0: 20 4e 41 4d 45 3a 20 63 6f 6d 70 69 6c 65 5f 6f   NAME: compile_o
23d0: 70 74 69 6f 6e 73 0a 20 20 46 4c 41 47 3a 20 52  ptions.  FLAG: R
23e0: 65 73 75 6c 74 30 0a 20 20 49 46 3a 20 20 20 21  esult0.  IF:   !
23f0: 64 65 66 69 6e 65 64 28 53 51 4c 49 54 45 5f 4f  defined(SQLITE_O
2400: 4d 49 54 5f 43 4f 4d 50 49 4c 45 4f 50 54 49 4f  MIT_COMPILEOPTIO
2410: 4e 5f 44 49 41 47 53 29 0a 0a 20 20 4e 41 4d 45  N_DIAGS)..  NAME
2420: 3a 20 77 61 6c 5f 63 68 65 63 6b 70 6f 69 6e 74  : wal_checkpoint
2430: 0a 20 20 46 4c 41 47 3a 20 4e 65 65 64 53 63 68  .  FLAG: NeedSch
2440: 65 6d 61 0a 20 20 43 4f 4c 53 3a 20 62 75 73 79  ema.  COLS: busy
2450: 20 6c 6f 67 20 63 68 65 63 6b 70 6f 69 6e 74 65   log checkpointe
2460: 64 0a 20 20 49 46 3a 20 20 20 21 64 65 66 69 6e  d.  IF:   !defin
2470: 65 64 28 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 57  ed(SQLITE_OMIT_W
2480: 41 4c 29 0a 0a 20 20 4e 41 4d 45 3a 20 77 61 6c  AL)..  NAME: wal
2490: 5f 61 75 74 6f 63 68 65 63 6b 70 6f 69 6e 74 0a  _autocheckpoint.
24a0: 20 20 49 46 3a 20 20 20 21 64 65 66 69 6e 65 64    IF:   !defined
24b0: 28 53 51 4c 49 54 45 5f 4f 4d 49 54 5f 57 41 4c  (SQLITE_OMIT_WAL
24c0: 29 0a 0a 20 20 4e 41 4d 45 3a 20 73 68 72 69 6e  )..  NAME: shrin
24d0: 6b 5f 6d 65 6d 6f 72 79 0a 20 20 46 4c 41 47 3a  k_memory.  FLAG:
24e0: 20 4e 6f 43 6f 6c 75 6d 6e 73 0a 0a 20 20 4e 41   NoColumns..  NA
24f0: 4d 45 3a 20 62 75 73 79 5f 74 69 6d 65 6f 75 74  ME: busy_timeout
2500: 0a 20 20 46 4c 41 47 3a 20 52 65 73 75 6c 74 30  .  FLAG: Result0
2510: 0a 20 20 43 4f 4c 53 3a 20 74 69 6d 65 6f 75 74  .  COLS: timeout
2520: 0a 0a 20 20 4e 41 4d 45 3a 20 6c 6f 63 6b 5f 73  ..  NAME: lock_s
2530: 74 61 74 75 73 0a 20 20 46 4c 41 47 3a 20 52 65  tatus.  FLAG: Re
2540: 73 75 6c 74 30 0a 20 20 43 4f 4c 53 3a 20 64 61  sult0.  COLS: da
2550: 74 61 62 61 73 65 20 73 74 61 74 75 73 0a 20 20  tabase status.  
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 44 45 42 55 47 29 20 7c 7c 20 64  LITE_DEBUG) || d
2580: 65 66 69 6e 65 64 28 53 51 4c 49 54 45 5f 54 45  efined(SQLITE_TE
2590: 53 54 29 0a 0a 20 20 4e 41 4d 45 3a 20 6b 65 79  ST)..  NAME: key
25a0: 0a 20 20 54 59 50 45 3a 20 4b 45 59 0a 20 20 41  .  TYPE: KEY.  A
25b0: 52 47 3a 20 20 30 0a 20 20 49 46 3a 20 20 20 64  RG:  0.  IF:   d
25c0: 65 66 69 6e 65 64 28 53 51 4c 49 54 45 5f 48 41  efined(SQLITE_HA
25d0: 53 5f 43 4f 44 45 43 29 0a 0a 20 20 4e 41 4d 45  S_CODEC)..  NAME
25e0: 3a 20 72 65 6b 65 79 0a 20 20 54 59 50 45 3a 20  : rekey.  TYPE: 
25f0: 4b 45 59 0a 20 20 41 52 47 3a 20 20 31 0a 20 20  KEY.  ARG:  1.  
2600: 49 46 3a 20 20 20 64 65 66 69 6e 65 64 28 53 51  IF:   defined(SQ
2610: 4c 49 54 45 5f 48 41 53 5f 43 4f 44 45 43 29 0a  LITE_HAS_CODEC).
2620: 0a 20 20 4e 41 4d 45 3a 20 68 65 78 6b 65 79 0a  .  NAME: hexkey.
2630: 20 20 54 59 50 45 3a 20 48 45 58 4b 45 59 0a 20    TYPE: HEXKEY. 
2640: 20 41 52 47 3a 20 20 32 0a 20 20 49 46 3a 20 20   ARG:  2.  IF:  
2650: 20 64 65 66 69 6e 65 64 28 53 51 4c 49 54 45 5f   defined(SQLITE_
2660: 48 41 53 5f 43 4f 44 45 43 29 0a 0a 20 20 4e 41  HAS_CODEC)..  NA
2670: 4d 45 3a 20 68 65 78 72 65 6b 65 79 0a 20 20 54  ME: hexrekey.  T
2680: 59 50 45 3a 20 48 45 58 4b 45 59 0a 20 20 41 52  YPE: HEXKEY.  AR
2690: 47 3a 20 20 33 0a 20 20 49 46 3a 20 20 20 64 65  G:  3.  IF:   de
26a0: 66 69 6e 65 64 28 53 51 4c 49 54 45 5f 48 41 53  fined(SQLITE_HAS
26b0: 5f 43 4f 44 45 43 29 0a 0a 20 20 4e 41 4d 45 3a  _CODEC)..  NAME:
26c0: 20 74 65 78 74 6b 65 79 0a 20 20 54 59 50 45 3a   textkey.  TYPE:
26d0: 20 4b 45 59 0a 20 20 41 52 47 3a 20 20 34 0a 20   KEY.  ARG:  4. 
26e0: 20 49 46 3a 20 20 20 64 65 66 69 6e 65 64 28 53   IF:   defined(S
26f0: 51 4c 49 54 45 5f 48 41 53 5f 43 4f 44 45 43 29  QLITE_HAS_CODEC)
2700: 0a 0a 20 20 4e 41 4d 45 3a 20 74 65 78 74 72 65  ..  NAME: textre
2710: 6b 65 79 0a 20 20 54 59 50 45 3a 20 4b 45 59 0a  key.  TYPE: KEY.
2720: 20 20 41 52 47 3a 20 20 35 0a 20 20 49 46 3a 20    ARG:  5.  IF: 
2730: 20 20 64 65 66 69 6e 65 64 28 53 51 4c 49 54 45    defined(SQLITE
2740: 5f 48 41 53 5f 43 4f 44 45 43 29 0a 0a 20 20 4e  _HAS_CODEC)..  N
2750: 41 4d 45 3a 20 61 63 74 69 76 61 74 65 5f 65 78  AME: activate_ex
2760: 74 65 6e 73 69 6f 6e 73 0a 20 20 49 46 3a 20 20  tensions.  IF:  
2770: 20 64 65 66 69 6e 65 64 28 53 51 4c 49 54 45 5f   defined(SQLITE_
2780: 48 41 53 5f 43 4f 44 45 43 29 20 7c 7c 20 64 65  HAS_CODEC) || de
2790: 66 69 6e 65 64 28 53 51 4c 49 54 45 5f 45 4e 41  fined(SQLITE_ENA
27a0: 42 4c 45 5f 43 45 52 4f 44 29 0a 0a 20 20 4e 41  BLE_CEROD)..  NA
27b0: 4d 45 3a 20 73 6f 66 74 5f 68 65 61 70 5f 6c 69  ME: soft_heap_li
27c0: 6d 69 74 0a 20 20 46 4c 41 47 3a 20 52 65 73 75  mit.  FLAG: Resu
27d0: 6c 74 30 0a 0a 20 20 4e 41 4d 45 3a 20 74 68 72  lt0..  NAME: thr
27e0: 65 61 64 73 0a 20 20 46 4c 41 47 3a 20 52 65 73  eads.  FLAG: Res
27f0: 75 6c 74 30 0a 0a 20 20 4e 41 4d 45 3a 20 6f 70  ult0..  NAME: op
2800: 74 69 6d 69 7a 65 0a 20 20 46 4c 41 47 3a 20 52  timize.  FLAG: R
2810: 65 73 75 6c 74 31 20 4e 65 65 64 53 63 68 65 6d  esult1 NeedSchem
2820: 61 0a 0a 20 20 4e 41 4d 45 3a 20 6c 65 67 61 63  a..  NAME: legac
2830: 79 5f 61 6c 74 65 72 5f 74 61 62 6c 65 0a 20 20  y_alter_table.  
2840: 54 59 50 45 3a 20 46 4c 41 47 0a 20 20 41 52 47  TYPE: FLAG.  ARG
2850: 3a 20 20 53 51 4c 49 54 45 5f 4c 65 67 61 63 79  :  SQLITE_Legacy
2860: 41 6c 74 65 72 0a 20 20 49 46 3a 20 20 20 21 64  Alter.  IF:   !d
2870: 65 66 69 6e 65 64 28 53 51 4c 49 54 45 5f 4f 4d  efined(SQLITE_OM
2880: 49 54 5f 46 4c 41 47 5f 50 52 41 47 4d 41 53 29  IT_FLAG_PRAGMAS)
2890: 0a 7d 0a 0a 23 20 4f 70 65 6e 20 74 68 65 20 6f  .}..# Open the o
28a0: 75 74 70 75 74 20 66 69 6c 65 0a 23 0a 73 65 74  utput file.#.set
28b0: 20 64 65 73 74 66 69 6c 65 20 22 5b 66 69 6c 65   destfile "[file
28c0: 20 64 69 72 20 5b 66 69 6c 65 20 64 69 72 20 5b   dir [file dir [
28d0: 66 69 6c 65 20 6e 6f 72 6d 61 6c 20 24 61 72 67  file normal $arg
28e0: 76 30 5d 5d 5d 2f 73 72 63 2f 70 72 61 67 6d 61  v0]]]/src/pragma
28f0: 2e 68 22 0a 70 75 74 73 20 22 4f 76 65 72 77 72  .h".puts "Overwr
2900: 69 74 69 6e 67 20 24 64 65 73 74 66 69 6c 65 20  iting $destfile 
2910: 77 69 74 68 20 6e 65 77 20 70 72 61 67 6d 61 20  with new pragma 
2920: 74 61 62 6c 65 2e 2e 2e 22 0a 73 65 74 20 66 64  table...".set fd
2930: 20 5b 6f 70 65 6e 20 24 64 65 73 74 66 69 6c 65   [open $destfile
2940: 20 77 62 5d 0a 70 75 74 73 20 24 66 64 20 7b 2f   wb].puts $fd {/
2950: 2a 20 44 4f 20 4e 4f 54 20 45 44 49 54 21 0a 2a  * DO NOT EDIT!.*
2960: 2a 20 54 68 69 73 20 66 69 6c 65 20 69 73 20 61  * This file is a
2970: 75 74 6f 6d 61 74 69 63 61 6c 6c 79 20 67 65 6e  utomatically gen
2980: 65 72 61 74 65 64 20 62 79 20 74 68 65 20 73 63  erated by the sc
2990: 72 69 70 74 20 61 74 0a 2a 2a 20 2e 2e 2f 74 6f  ript at.** ../to
29a0: 6f 6c 2f 6d 6b 70 72 61 67 6d 61 74 61 62 2e 74  ol/mkpragmatab.t
29b0: 63 6c 2e 20 20 54 6f 20 75 70 64 61 74 65 20 74  cl.  To update t
29c0: 68 65 20 73 65 74 20 6f 66 20 70 72 61 67 6d 61  he set of pragma
29d0: 73 2c 20 65 64 69 74 0a 2a 2a 20 74 68 61 74 20  s, edit.** that 
29e0: 73 63 72 69 70 74 20 61 6e 64 20 72 65 72 75 6e  script and rerun
29f0: 20 69 74 2e 0a 2a 2f 7d 0a 0a 23 20 50 61 72 73   it..*/}..# Pars
2a00: 65 20 74 68 65 20 50 52 41 47 4d 41 20 74 61 62  e the PRAGMA tab
2a10: 6c 65 20 61 62 6f 76 65 2e 0a 23 0a 73 65 74 20  le above..#.set 
2a20: 6e 61 6d 65 20 7b 7d 0a 73 65 74 20 74 79 70 65  name {}.set type
2a30: 20 7b 7d 0a 73 65 74 20 69 66 20 7b 7d 0a 73 65   {}.set if {}.se
2a40: 74 20 66 6c 61 67 73 20 7b 7d 0a 73 65 74 20 63  t flags {}.set c
2a50: 6f 6c 73 20 7b 7d 0a 73 65 74 20 63 6f 6c 73 5f  ols {}.set cols_
2a60: 6c 69 73 74 20 7b 7d 0a 73 65 74 20 61 72 67 20  list {}.set arg 
2a70: 30 0a 70 72 6f 63 20 72 65 63 6f 72 64 5f 6f 6e  0.proc record_on
2a80: 65 20 7b 7d 20 7b 0a 20 20 67 6c 6f 62 61 6c 20  e {} {.  global 
2a90: 6e 61 6d 65 20 74 79 70 65 20 69 66 20 61 72 67  name type if arg
2aa0: 20 61 6c 6c 62 79 6e 61 6d 65 20 74 79 70 65 62   allbyname typeb
2ab0: 79 69 66 20 66 6c 61 67 73 20 63 6f 6c 73 20 61  yif flags cols a
2ac0: 6c 6c 5f 63 6f 6c 73 0a 20 20 67 6c 6f 62 61 6c  ll_cols.  global
2ad0: 20 63 6f 6c 73 5f 6c 69 73 74 20 63 6f 6c 55 73   cols_list colUs
2ae0: 65 64 42 79 0a 20 20 69 66 20 7b 24 6e 61 6d 65  edBy.  if {$name
2af0: 3d 3d 22 22 7d 20 72 65 74 75 72 6e 0a 20 20 69  ==""} return.  i
2b00: 66 20 7b 24 63 6f 6c 73 21 3d 22 22 7d 20 7b 0a  f {$cols!=""} {.
2b10: 20 20 20 20 69 66 20 7b 21 5b 69 6e 66 6f 20 65      if {![info e
2b20: 78 69 73 74 73 20 61 6c 6c 5f 63 6f 6c 73 28 24  xists all_cols($
2b30: 63 6f 6c 73 29 5d 7d 20 7b 0a 20 20 20 20 20 20  cols)]} {.      
2b40: 73 65 74 20 61 6c 6c 5f 63 6f 6c 73 28 24 63 6f  set all_cols($co
2b50: 6c 73 29 20 31 0a 20 20 20 20 20 20 6c 61 70 70  ls) 1.      lapp
2b60: 65 6e 64 20 63 6f 6c 73 5f 6c 69 73 74 20 24 63  end cols_list $c
2b70: 6f 6c 73 0a 20 20 20 20 7d 0a 20 20 20 20 73 65  ols.    }.    se
2b80: 74 20 63 78 20 24 63 6f 6c 73 0a 20 20 20 20 6c  t cx $cols.    l
2b90: 61 70 70 65 6e 64 20 63 6f 6c 55 73 65 64 42 79  append colUsedBy
2ba0: 28 24 63 6f 6c 73 29 20 24 6e 61 6d 65 0a 20 20  ($cols) $name.  
2bb0: 7d 20 65 6c 73 65 20 7b 0a 20 20 20 20 73 65 74  } else {.    set
2bc0: 20 63 78 20 30 0a 20 20 7d 0a 20 20 73 65 74 20   cx 0.  }.  set 
2bd0: 61 6c 6c 62 79 6e 61 6d 65 28 24 6e 61 6d 65 29  allbyname($name)
2be0: 20 5b 6c 69 73 74 20 24 74 79 70 65 20 24 61 72   [list $type $ar
2bf0: 67 20 24 69 66 20 24 66 6c 61 67 73 20 24 63 6f  g $if $flags $co
2c00: 6c 73 5d 0a 20 20 73 65 74 20 6e 61 6d 65 20 7b  ls].  set name {
2c10: 7d 0a 20 20 73 65 74 20 74 79 70 65 20 7b 7d 0a  }.  set type {}.
2c20: 20 20 73 65 74 20 69 66 20 7b 7d 0a 20 20 73 65    set if {}.  se
2c30: 74 20 66 6c 61 67 73 20 7b 7d 0a 20 20 73 65 74  t flags {}.  set
2c40: 20 63 6f 6c 73 20 7b 7d 0a 20 20 73 65 74 20 61   cols {}.  set a
2c50: 72 67 20 30 0a 7d 0a 66 6f 72 65 61 63 68 20 6c  rg 0.}.foreach l
2c60: 69 6e 65 20 5b 73 70 6c 69 74 20 24 70 72 61 67  ine [split $prag
2c70: 6d 61 5f 64 65 66 20 5c 6e 5d 20 7b 0a 20 20 73  ma_def \n] {.  s
2c80: 65 74 20 6c 69 6e 65 20 5b 73 74 72 69 6e 67 20  et line [string 
2c90: 74 72 69 6d 20 24 6c 69 6e 65 5d 0a 20 20 69 66  trim $line].  if
2ca0: 20 7b 24 6c 69 6e 65 3d 3d 22 22 7d 20 63 6f 6e   {$line==""} con
2cb0: 74 69 6e 75 65 0a 20 20 66 6f 72 65 61 63 68 20  tinue.  foreach 
2cc0: 7b 69 64 20 76 61 6c 7d 20 5b 73 70 6c 69 74 20  {id val} [split 
2cd0: 24 6c 69 6e 65 20 3a 5d 20 62 72 65 61 6b 0a 20  $line :] break. 
2ce0: 20 73 65 74 20 76 61 6c 20 5b 73 74 72 69 6e 67   set val [string
2cf0: 20 74 72 69 6d 20 24 76 61 6c 5d 0a 20 20 69 66   trim $val].  if
2d00: 20 7b 24 69 64 3d 3d 22 4e 41 4d 45 22 7d 20 7b   {$id=="NAME"} {
2d10: 0a 20 20 20 20 72 65 63 6f 72 64 5f 6f 6e 65 20  .    record_one 
2d20: 20 20 20 0a 20 20 20 20 73 65 74 20 6e 61 6d 65     .    set name
2d30: 20 24 76 61 6c 0a 20 20 20 20 73 65 74 20 74 79   $val.    set ty
2d40: 70 65 20 5b 73 74 72 69 6e 67 20 74 6f 75 70 70  pe [string toupp
2d50: 65 72 20 24 76 61 6c 5d 0a 20 20 7d 20 65 6c 73  er $val].  } els
2d60: 65 69 66 20 7b 24 69 64 3d 3d 22 54 59 50 45 22  eif {$id=="TYPE"
2d70: 7d 20 7b 0a 20 20 20 20 73 65 74 20 74 79 70 65  } {.    set type
2d80: 20 24 76 61 6c 0a 20 20 20 20 69 66 20 7b 24 74   $val.    if {$t
2d90: 79 70 65 3d 3d 22 46 4c 41 47 22 7d 20 7b 0a 20  ype=="FLAG"} {. 
2da0: 20 20 20 20 20 6c 61 70 70 65 6e 64 20 66 6c 61       lappend fla
2db0: 67 73 20 52 65 73 75 6c 74 30 20 4e 6f 43 6f 6c  gs Result0 NoCol
2dc0: 75 6d 6e 73 31 0a 20 20 20 20 7d 0a 20 20 7d 20  umns1.    }.  } 
2dd0: 65 6c 73 65 69 66 20 7b 24 69 64 3d 3d 22 41 52  elseif {$id=="AR
2de0: 47 22 7d 20 7b 0a 20 20 20 20 73 65 74 20 61 72  G"} {.    set ar
2df0: 67 20 24 76 61 6c 0a 20 20 7d 20 65 6c 73 65 69  g $val.  } elsei
2e00: 66 20 7b 24 69 64 3d 3d 22 43 4f 4c 53 22 7d 20  f {$id=="COLS"} 
2e10: 7b 0a 20 20 20 20 73 65 74 20 63 6f 6c 73 20 24  {.    set cols $
2e20: 76 61 6c 0a 20 20 7d 20 65 6c 73 65 69 66 20 7b  val.  } elseif {
2e30: 24 69 64 3d 3d 22 49 46 22 7d 20 7b 0a 20 20 20  $id=="IF"} {.   
2e40: 20 6c 61 70 70 65 6e 64 20 69 66 20 24 76 61 6c   lappend if $val
2e50: 0a 20 20 7d 20 65 6c 73 65 69 66 20 7b 24 69 64  .  } elseif {$id
2e60: 3d 3d 22 46 4c 41 47 22 7d 20 7b 0a 20 20 20 20  =="FLAG"} {.    
2e70: 66 6f 72 65 61 63 68 20 74 65 72 6d 20 5b 73 70  foreach term [sp
2e80: 6c 69 74 20 24 76 61 6c 5d 20 7b 0a 20 20 20 20  lit $val] {.    
2e90: 20 20 6c 61 70 70 65 6e 64 20 66 6c 61 67 73 20    lappend flags 
2ea0: 24 74 65 72 6d 0a 20 20 20 20 20 20 73 65 74 20  $term.      set 
2eb0: 61 6c 6c 66 6c 61 67 73 28 24 74 65 72 6d 29 20  allflags($term) 
2ec0: 31 0a 20 20 20 20 7d 0a 20 20 7d 20 65 6c 73 65  1.    }.  } else
2ed0: 20 7b 0a 20 20 20 20 65 72 72 6f 72 20 22 62 61   {.    error "ba
2ee0: 64 20 70 72 61 67 6d 61 5f 64 65 66 20 6c 69 6e  d pragma_def lin
2ef0: 65 3a 20 24 6c 69 6e 65 22 0a 20 20 7d 0a 7d 0a  e: $line".  }.}.
2f00: 72 65 63 6f 72 64 5f 6f 6e 65 0a 73 65 74 20 61  record_one.set a
2f10: 6c 6c 6e 61 6d 65 73 20 5b 6c 73 6f 72 74 20 5b  llnames [lsort [
2f20: 61 72 72 61 79 20 6e 61 6d 65 73 20 61 6c 6c 62  array names allb
2f30: 79 6e 61 6d 65 5d 5d 0a 0a 23 20 47 65 6e 65 72  yname]]..# Gener
2f40: 61 74 65 20 23 64 65 66 69 6e 65 73 20 66 6f 72  ate #defines for
2f50: 20 61 6c 6c 20 70 72 61 67 6d 61 20 74 79 70 65   all pragma type
2f60: 20 6e 61 6d 65 73 2e 20 20 47 72 6f 75 70 20 74   names.  Group t
2f70: 68 65 20 70 72 61 67 6d 61 73 20 74 68 61 74 20  he pragmas that 
2f80: 61 72 65 0a 23 20 6f 6d 69 74 20 69 6e 20 64 65  are.# omit in de
2f90: 66 61 75 6c 74 20 62 75 69 6c 64 73 20 28 64 65  fault builds (de
2fa0: 66 69 6e 65 64 28 53 51 4c 49 54 45 5f 44 45 42  fined(SQLITE_DEB
2fb0: 55 47 29 20 61 6e 64 20 64 65 66 69 6e 65 64 28  UG) and defined(
2fc0: 53 51 4c 49 54 45 5f 48 41 53 5f 43 4f 44 45 43  SQLITE_HAS_CODEC
2fd0: 29 29 0a 23 20 61 74 20 74 68 65 20 65 6e 64 2e  )).# at the end.
2fe0: 0a 23 0a 70 75 74 73 20 24 66 64 20 22 5c 6e 2f  .#.puts $fd "\n/
2ff0: 2a 20 54 68 65 20 76 61 72 69 6f 75 73 20 70 72  * The various pr
3000: 61 67 6d 61 20 74 79 70 65 73 20 2a 2f 22 0a 73  agma types */".s
3010: 65 74 20 70 6e 75 6d 20 30 0a 66 6f 72 65 61 63  et pnum 0.foreac
3020: 68 20 6e 61 6d 65 20 24 61 6c 6c 6e 61 6d 65 73  h name $allnames
3030: 20 7b 0a 20 20 73 65 74 20 74 79 70 65 20 5b 6c   {.  set type [l
3040: 69 6e 64 65 78 20 24 61 6c 6c 62 79 6e 61 6d 65  index $allbyname
3050: 28 24 6e 61 6d 65 29 20 30 5d 0a 20 20 69 66 20  ($name) 0].  if 
3060: 7b 5b 69 6e 66 6f 20 65 78 69 73 74 73 20 73 65  {[info exists se
3070: 65 6e 74 79 70 65 28 24 74 79 70 65 29 5d 7d 20  entype($type)]} 
3080: 63 6f 6e 74 69 6e 75 65 0a 20 20 73 65 74 20 69  continue.  set i
3090: 66 20 5b 6c 69 6e 64 65 78 20 24 61 6c 6c 62 79  f [lindex $allby
30a0: 6e 61 6d 65 28 24 6e 61 6d 65 29 20 32 5d 0a 20  name($name) 2]. 
30b0: 20 69 66 20 7b 5b 72 65 67 65 78 70 20 53 51 4c   if {[regexp SQL
30c0: 49 54 45 5f 44 45 42 55 47 20 24 69 66 5d 20 7c  ITE_DEBUG $if] |
30d0: 7c 20 5b 72 65 67 65 78 70 20 53 51 4c 49 54 45  | [regexp SQLITE
30e0: 5f 48 41 53 5f 43 4f 44 45 43 20 24 69 66 5d 7d  _HAS_CODEC $if]}
30f0: 20 63 6f 6e 74 69 6e 75 65 0a 20 20 73 65 74 20   continue.  set 
3100: 73 65 65 6e 74 79 70 65 28 24 74 79 70 65 29 20  seentype($type) 
3110: 31 0a 20 20 70 75 74 73 20 24 66 64 20 5b 66 6f  1.  puts $fd [fo
3120: 72 6d 61 74 20 7b 23 64 65 66 69 6e 65 20 25 2d  rmat {#define %-
3130: 33 35 73 20 25 34 64 7d 20 50 72 61 67 54 79 70  35s %4d} PragTyp
3140: 5f 24 74 79 70 65 20 24 70 6e 75 6d 5d 0a 20 20  _$type $pnum].  
3150: 69 6e 63 72 20 70 6e 75 6d 0a 7d 0a 66 6f 72 65  incr pnum.}.fore
3160: 61 63 68 20 6e 61 6d 65 20 24 61 6c 6c 6e 61 6d  ach name $allnam
3170: 65 73 20 7b 0a 20 20 73 65 74 20 74 79 70 65 20  es {.  set type 
3180: 5b 6c 69 6e 64 65 78 20 24 61 6c 6c 62 79 6e 61  [lindex $allbyna
3190: 6d 65 28 24 6e 61 6d 65 29 20 30 5d 0a 20 20 69  me($name) 0].  i
31a0: 66 20 7b 5b 69 6e 66 6f 20 65 78 69 73 74 73 20  f {[info exists 
31b0: 73 65 65 6e 74 79 70 65 28 24 74 79 70 65 29 5d  seentype($type)]
31c0: 7d 20 63 6f 6e 74 69 6e 75 65 0a 20 20 73 65 74  } continue.  set
31d0: 20 69 66 20 5b 6c 69 6e 64 65 78 20 24 61 6c 6c   if [lindex $all
31e0: 62 79 6e 61 6d 65 28 24 6e 61 6d 65 29 20 32 5d  byname($name) 2]
31f0: 0a 20 20 69 66 20 7b 5b 72 65 67 65 78 70 20 53  .  if {[regexp S
3200: 51 4c 49 54 45 5f 44 45 42 55 47 20 24 69 66 5d  QLITE_DEBUG $if]
3210: 7d 20 63 6f 6e 74 69 6e 75 65 0a 20 20 73 65 74  } continue.  set
3220: 20 73 65 65 6e 74 79 70 65 28 24 74 79 70 65 29   seentype($type)
3230: 20 31 0a 20 20 70 75 74 73 20 24 66 64 20 5b 66   1.  puts $fd [f
3240: 6f 72 6d 61 74 20 7b 23 64 65 66 69 6e 65 20 25  ormat {#define %
3250: 2d 33 35 73 20 25 34 64 7d 20 50 72 61 67 54 79  -35s %4d} PragTy
3260: 70 5f 24 74 79 70 65 20 24 70 6e 75 6d 5d 0a 20  p_$type $pnum]. 
3270: 20 69 6e 63 72 20 70 6e 75 6d 0a 7d 0a 66 6f 72   incr pnum.}.for
3280: 65 61 63 68 20 6e 61 6d 65 20 24 61 6c 6c 6e 61  each name $allna
3290: 6d 65 73 20 7b 0a 20 20 73 65 74 20 74 79 70 65  mes {.  set type
32a0: 20 5b 6c 69 6e 64 65 78 20 24 61 6c 6c 62 79 6e   [lindex $allbyn
32b0: 61 6d 65 28 24 6e 61 6d 65 29 20 30 5d 0a 20 20  ame($name) 0].  
32c0: 69 66 20 7b 5b 69 6e 66 6f 20 65 78 69 73 74 73  if {[info exists
32d0: 20 73 65 65 6e 74 79 70 65 28 24 74 79 70 65 29   seentype($type)
32e0: 5d 7d 20 63 6f 6e 74 69 6e 75 65 0a 20 20 73 65  ]} continue.  se
32f0: 74 20 73 65 65 6e 74 79 70 65 28 24 74 79 70 65  t seentype($type
3300: 29 20 31 0a 20 20 70 75 74 73 20 24 66 64 20 5b  ) 1.  puts $fd [
3310: 66 6f 72 6d 61 74 20 7b 23 64 65 66 69 6e 65 20  format {#define 
3320: 25 2d 33 35 73 20 25 34 64 7d 20 50 72 61 67 54  %-35s %4d} PragT
3330: 79 70 5f 24 74 79 70 65 20 24 70 6e 75 6d 5d 0a  yp_$type $pnum].
3340: 20 20 69 6e 63 72 20 70 6e 75 6d 0a 7d 0a 0a 23    incr pnum.}..#
3350: 20 47 65 6e 65 72 61 74 65 20 23 64 65 66 69 6e   Generate #defin
3360: 65 73 20 66 6f 72 20 66 6c 61 67 73 0a 23 0a 70  es for flags.#.p
3370: 75 74 73 20 24 66 64 20 22 5c 6e 2f 2a 20 50 72  uts $fd "\n/* Pr
3380: 6f 70 65 72 74 79 20 66 6c 61 67 73 20 61 73 73  operty flags ass
3390: 6f 63 69 61 74 65 64 20 77 69 74 68 20 76 61 72  ociated with var
33a0: 69 6f 75 73 20 70 72 61 67 6d 61 2e 20 2a 2f 22  ious pragma. */"
33b0: 0a 73 65 74 20 66 76 20 31 0a 66 6f 72 65 61 63  .set fv 1.foreac
33c0: 68 20 66 20 5b 6c 73 6f 72 74 20 5b 61 72 72 61  h f [lsort [arra
33d0: 79 20 6e 61 6d 65 73 20 61 6c 6c 66 6c 61 67 73  y names allflags
33e0: 5d 5d 20 7b 0a 20 20 70 75 74 73 20 24 66 64 20  ]] {.  puts $fd 
33f0: 5b 66 6f 72 6d 61 74 20 7b 23 64 65 66 69 6e 65  [format {#define
3400: 20 50 72 61 67 46 6c 67 5f 25 2d 31 30 73 20 30   PragFlg_%-10s 0
3410: 78 25 30 32 78 20 2f 2a 20 25 73 20 2a 2f 7d 20  x%02x /* %s */} 
3420: 5c 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 24  \.             $
3430: 66 20 24 66 76 20 24 66 6c 61 67 4d 65 61 6e 69  f $fv $flagMeani
3440: 6e 67 28 24 66 29 5d 0a 20 20 73 65 74 20 66 76  ng($f)].  set fv
3450: 20 5b 65 78 70 72 20 7b 24 66 76 2a 32 7d 5d 0a   [expr {$fv*2}].
3460: 7d 0a 0a 23 20 53 6f 72 74 20 74 68 65 20 63 6f  }..# Sort the co
3470: 6c 75 6d 6e 20 6c 69 73 74 73 20 73 6f 20 74 68  lumn lists so th
3480: 61 74 20 6c 6f 6e 67 65 72 20 63 6f 6c 75 6d 6e  at longer column
3490: 20 6c 69 73 74 73 20 6f 63 63 75 72 20 66 69 72   lists occur fir
34a0: 73 74 0a 23 0a 70 72 6f 63 20 63 6f 6c 73 63 6d  st.#.proc colscm
34b0: 70 20 7b 61 20 62 7d 20 7b 0a 20 20 72 65 74 75  p {a b} {.  retu
34c0: 72 6e 20 5b 65 78 70 72 20 7b 5b 6c 6c 65 6e 67  rn [expr {[lleng
34d0: 74 68 20 24 62 5d 20 2d 20 5b 6c 6c 65 6e 67 74  th $b] - [llengt
34e0: 68 20 24 61 5d 7d 5d 0a 7d 0a 73 65 74 20 63 6f  h $a]}].}.set co
34f0: 6c 73 5f 6c 69 73 74 20 5b 6c 73 6f 72 74 20 2d  ls_list [lsort -
3500: 63 6f 6d 6d 61 6e 64 20 63 6f 6c 73 63 6d 70 20  command colscmp 
3510: 24 63 6f 6c 73 5f 6c 69 73 74 5d 0a 0a 23 20 47  $cols_list]..# G
3520: 65 6e 65 72 61 74 65 20 74 68 65 20 61 72 72 61  enerate the arra
3530: 79 20 6f 66 20 63 6f 6c 75 6d 6e 20 6e 61 6d 65  y of column name
3540: 73 20 75 73 65 64 20 62 79 20 70 72 61 67 6d 61  s used by pragma
3550: 73 20 74 68 61 74 20 61 63 74 20 6c 69 6b 65 0a  s that act like.
3560: 23 20 71 75 65 72 69 65 73 2e 0a 23 0a 70 75 74  # queries..#.put
3570: 73 20 24 66 64 20 22 5c 6e 2f 2a 20 4e 61 6d 65  s $fd "\n/* Name
3580: 73 20 6f 66 20 63 6f 6c 75 6d 6e 73 20 66 6f 72  s of columns for
3590: 20 70 72 61 67 6d 61 73 20 74 68 61 74 20 72 65   pragmas that re
35a0: 74 75 72 6e 20 6d 75 6c 74 69 2d 63 6f 6c 75 6d  turn multi-colum
35b0: 6e 20 72 65 73 75 6c 74 22 0a 70 75 74 73 20 24  n result".puts $
35c0: 66 64 20 22 2a 2a 20 6f 72 20 74 68 61 74 20 72  fd "** or that r
35d0: 65 74 75 72 6e 20 73 69 6e 67 6c 65 2d 63 6f 6c  eturn single-col
35e0: 75 6d 6e 20 72 65 73 75 6c 74 73 20 77 68 65 72  umn results wher
35f0: 65 20 74 68 65 20 6e 61 6d 65 20 6f 66 20 74 68  e the name of th
3600: 65 22 0a 70 75 74 73 20 24 66 64 20 22 2a 2a 20  e".puts $fd "** 
3610: 72 65 73 75 6c 74 20 63 6f 6c 75 6d 6e 20 69 73  result column is
3620: 20 64 69 66 66 65 72 65 6e 74 20 66 72 6f 6d 20   different from 
3630: 74 68 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20  the name of the 
3640: 70 72 61 67 6d 61 5c 6e 2a 2f 22 0a 70 75 74 73  pragma\n*/".puts
3650: 20 24 66 64 20 22 73 74 61 74 69 63 20 63 6f 6e   $fd "static con
3660: 73 74 20 63 68 61 72 20 2a 63 6f 6e 73 74 20 70  st char *const p
3670: 72 61 67 43 4e 61 6d 65 5c 5b 5c 5d 20 3d 20 7b  ragCName\[\] = {
3680: 22 0a 73 65 74 20 6f 66 66 73 65 74 20 30 0a 73  ".set offset 0.s
3690: 65 74 20 61 6c 6c 63 6f 6c 6c 69 73 74 20 7b 7d  et allcollist {}
36a0: 0a 66 6f 72 65 61 63 68 20 63 6f 6c 73 20 24 63  .foreach cols $c
36b0: 6f 6c 73 5f 6c 69 73 74 20 7b 0a 20 20 73 65 74  ols_list {.  set
36c0: 20 6e 20 5b 6c 6c 65 6e 67 74 68 20 24 63 6f 6c   n [llength $col
36d0: 73 5d 0a 20 20 73 65 74 20 6c 69 6d 69 74 20 5b  s].  set limit [
36e0: 65 78 70 72 20 7b 5b 6c 6c 65 6e 67 74 68 20 24  expr {[llength $
36f0: 61 6c 6c 63 6f 6c 6c 69 73 74 5d 20 2d 20 24 6e  allcollist] - $n
3700: 7d 5d 0a 20 20 66 6f 72 20 7b 73 65 74 20 69 20  }].  for {set i 
3710: 30 7d 20 7b 24 69 3c 24 6c 69 6d 69 74 7d 20 7b  0} {$i<$limit} {
3720: 69 6e 63 72 20 69 7d 20 7b 0a 20 20 20 20 73 65  incr i} {.    se
3730: 74 20 73 75 62 6c 69 73 74 20 5b 6c 72 61 6e 67  t sublist [lrang
3740: 65 20 24 61 6c 6c 63 6f 6c 6c 69 73 74 20 24 69  e $allcollist $i
3750: 20 5b 65 78 70 72 20 7b 24 69 2b 24 6e 2d 31 7d   [expr {$i+$n-1}
3760: 5d 5d 0a 20 20 20 20 69 66 20 7b 24 73 75 62 6c  ]].    if {$subl
3770: 69 73 74 3d 3d 24 63 6f 6c 73 7d 20 7b 0a 20 20  ist==$cols} {.  
3780: 20 20 20 20 70 75 74 73 20 24 66 64 20 5b 66 6f      puts $fd [fo
3790: 72 6d 61 74 20 22 25 32 37 73 2f 2a 20 24 63 6f  rmat "%27s/* $co
37a0: 6c 55 73 65 64 42 79 28 24 63 6f 6c 73 29 20 72  lUsedBy($cols) r
37b0: 65 75 73 65 73 20 24 69 20 2a 2f 22 20 22 22 5d  euses $i */" ""]
37c0: 0a 20 20 20 20 20 20 73 65 74 20 63 6f 6c 73 5f  .      set cols_
37d0: 6f 66 66 73 65 74 28 24 63 6f 6c 73 29 20 24 69  offset($cols) $i
37e0: 0a 20 20 20 20 20 20 62 72 65 61 6b 0a 20 20 20  .      break.   
37f0: 20 7d 0a 20 20 7d 0a 20 20 69 66 20 7b 24 69 3c   }.  }.  if {$i<
3800: 24 6c 69 6d 69 74 7d 20 63 6f 6e 74 69 6e 75 65  $limit} continue
3810: 0a 20 20 73 65 74 20 63 6f 6c 73 5f 6f 66 66 73  .  set cols_offs
3820: 65 74 28 24 63 6f 6c 73 29 20 24 6f 66 66 73 65  et($cols) $offse
3830: 74 0a 20 20 73 65 74 20 75 62 20 22 20 2f 2a 20  t.  set ub " /* 
3840: 55 73 65 64 20 62 79 3a 20 24 63 6f 6c 55 73 65  Used by: $colUse
3850: 64 42 79 28 24 63 6f 6c 73 29 20 2a 2f 22 0a 20  dBy($cols) */". 
3860: 20 66 6f 72 65 61 63 68 20 63 20 24 63 6f 6c 73   foreach c $cols
3870: 20 7b 0a 20 20 20 20 6c 61 70 70 65 6e 64 20 61   {.    lappend a
3880: 6c 6c 63 6f 6c 6c 69 73 74 20 24 63 0a 20 20 20  llcollist $c.   
3890: 20 70 75 74 73 20 24 66 64 20 5b 66 6f 72 6d 61   puts $fd [forma
38a0: 74 20 22 20 20 2f 2a 20 25 33 64 20 2a 2f 20 25  t "  /* %3d */ %
38b0: 2d 31 34 73 25 73 22 20 24 6f 66 66 73 65 74 20  -14s%s" $offset 
38c0: 5c 22 24 63 5c 22 2c 20 24 75 62 5d 0a 20 20 20  \"$c\", $ub].   
38d0: 20 73 65 74 20 75 62 20 22 22 0a 20 20 20 20 69   set ub "".    i
38e0: 6e 63 72 20 6f 66 66 73 65 74 0a 20 20 7d 0a 7d  ncr offset.  }.}
38f0: 0a 70 75 74 73 20 24 66 64 20 22 5c 31 37 35 3b  .puts $fd "\175;
3900: 22 0a 0a 23 20 47 65 6e 65 72 61 74 65 20 74 68  "..# Generate th
3910: 65 20 6c 6f 6f 6b 75 70 20 74 61 62 6c 65 0a 23  e lookup table.#
3920: 0a 70 75 74 73 20 24 66 64 20 22 5c 6e 2f 2a 20  .puts $fd "\n/* 
3930: 44 65 66 69 6e 69 74 69 6f 6e 73 20 6f 66 20 61  Definitions of a
3940: 6c 6c 20 62 75 69 6c 74 2d 69 6e 20 70 72 61 67  ll built-in prag
3950: 6d 61 73 20 2a 2f 22 0a 70 75 74 73 20 24 66 64  mas */".puts $fd
3960: 20 22 74 79 70 65 64 65 66 20 73 74 72 75 63 74   "typedef struct
3970: 20 50 72 61 67 6d 61 4e 61 6d 65 20 5c 31 37 33   PragmaName \173
3980: 22 0a 70 75 74 73 20 24 66 64 20 22 20 20 63 6f  ".puts $fd "  co
3990: 6e 73 74 20 63 68 61 72 20 2a 63 6f 6e 73 74 20  nst char *const 
39a0: 7a 4e 61 6d 65 3b 20 2f 2a 20 4e 61 6d 65 20 6f  zName; /* Name o
39b0: 66 20 70 72 61 67 6d 61 20 2a 2f 22 0a 70 75 74  f pragma */".put
39c0: 73 20 24 66 64 20 22 20 20 75 38 20 65 50 72 61  s $fd "  u8 ePra
39d0: 67 54 79 70 3b 20 20 20 20 20 20 20 20 20 20 20  gTyp;           
39e0: 20 20 2f 2a 20 50 72 61 67 54 79 70 5f 58 58 58    /* PragTyp_XXX
39f0: 20 76 61 6c 75 65 20 2a 2f 22 0a 70 75 74 73 20   value */".puts 
3a00: 24 66 64 20 22 20 20 75 38 20 6d 50 72 61 67 46  $fd "  u8 mPragF
3a10: 6c 67 3b 20 20 20 20 20 20 20 20 20 20 20 20 20  lg;             
3a20: 2f 2a 20 5a 65 72 6f 20 6f 72 20 6d 6f 72 65 20  /* Zero or more 
3a30: 50 72 61 67 46 6c 67 5f 58 58 58 20 76 61 6c 75  PragFlg_XXX valu
3a40: 65 73 20 2a 2f 22 0a 70 75 74 73 20 24 66 64 20  es */".puts $fd 
3a50: 7b 20 20 75 38 20 69 50 72 61 67 43 4e 61 6d 65  {  u8 iPragCName
3a60: 3b 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20 53  ;           /* S
3a70: 74 61 72 74 20 6f 66 20 63 6f 6c 75 6d 6e 20 6e  tart of column n
3a80: 61 6d 65 73 20 69 6e 20 70 72 61 67 43 4e 61 6d  ames in pragCNam
3a90: 65 5b 5d 20 2a 2f 7d 0a 70 75 74 73 20 24 66 64  e[] */}.puts $fd
3aa0: 20 22 20 20 75 38 20 6e 50 72 61 67 43 4e 61 6d   "  u8 nPragCNam
3ab0: 65 3b 20 20 20 20 20 20 20 20 20 20 5c 0a 2f 2a  e;          \./*
3ac0: 20 4e 75 6d 20 6f 66 20 63 6f 6c 20 6e 61 6d 65   Num of col name
3ad0: 73 2e 20 30 20 6d 65 61 6e 73 20 75 73 65 20 70  s. 0 means use p
3ae0: 72 61 67 6d 61 20 6e 61 6d 65 20 2a 2f 22 0a 70  ragma name */".p
3af0: 75 74 73 20 24 66 64 20 22 20 20 75 36 34 20 69  uts $fd "  u64 i
3b00: 41 72 67 3b 20 20 20 20 20 20 20 20 20 20 20 20  Arg;            
3b10: 20 20 20 20 2f 2a 20 45 78 74 72 61 20 61 72 67      /* Extra arg
3b20: 75 6d 65 6e 74 20 2a 2f 22 0a 70 75 74 73 20 24  ument */".puts $
3b30: 66 64 20 22 5c 31 37 35 20 50 72 61 67 6d 61 4e  fd "\175 PragmaN
3b40: 61 6d 65 3b 22 0a 70 75 74 73 20 24 66 64 20 22  ame;".puts $fd "
3b50: 73 74 61 74 69 63 20 63 6f 6e 73 74 20 50 72 61  static const Pra
3b60: 67 6d 61 4e 61 6d 65 20 61 50 72 61 67 6d 61 4e  gmaName aPragmaN
3b70: 61 6d 65 5c 5b 5c 5d 20 3d 20 5c 31 37 33 22 0a  ame\[\] = \173".
3b80: 0a 73 65 74 20 63 75 72 72 65 6e 74 5f 69 66 20  .set current_if 
3b90: 7b 7d 0a 73 65 74 20 73 70 61 63 65 72 20 5b 66  {}.set spacer [f
3ba0: 6f 72 6d 61 74 20 7b 20 20 20 20 25 32 36 73 20  ormat {    %26s 
3bb0: 7d 20 7b 7d 5d 0a 66 6f 72 65 61 63 68 20 6e 61  } {}].foreach na
3bc0: 6d 65 20 24 61 6c 6c 6e 61 6d 65 73 20 7b 0a 20  me $allnames {. 
3bd0: 20 66 6f 72 65 61 63 68 20 7b 74 79 70 65 20 61   foreach {type a
3be0: 72 67 20 69 66 20 66 6c 61 67 20 63 78 7d 20 24  rg if flag cx} $
3bf0: 61 6c 6c 62 79 6e 61 6d 65 28 24 6e 61 6d 65 29  allbyname($name)
3c00: 20 62 72 65 61 6b 0a 20 20 69 66 20 7b 24 63 78   break.  if {$cx
3c10: 3d 3d 30 20 7c 7c 20 24 63 78 3d 3d 22 22 7d 20  ==0 || $cx==""} 
3c20: 7b 0a 20 20 20 20 73 65 74 20 63 79 20 30 0a 20  {.    set cy 0. 
3c30: 20 20 20 73 65 74 20 6e 78 20 30 0a 20 20 7d 20     set nx 0.  } 
3c40: 65 6c 73 65 20 7b 0a 20 20 20 20 73 65 74 20 63  else {.    set c
3c50: 79 20 24 63 6f 6c 73 5f 6f 66 66 73 65 74 28 24  y $cols_offset($
3c60: 63 78 29 0a 20 20 20 20 73 65 74 20 6e 78 20 5b  cx).    set nx [
3c70: 6c 6c 65 6e 67 74 68 20 24 63 78 5d 0a 20 20 7d  llength $cx].  }
3c80: 0a 20 20 69 66 20 7b 24 69 66 21 3d 24 63 75 72  .  if {$if!=$cur
3c90: 72 65 6e 74 5f 69 66 7d 20 7b 0a 20 20 20 20 69  rent_if} {.    i
3ca0: 66 20 7b 24 63 75 72 72 65 6e 74 5f 69 66 21 3d  f {$current_if!=
3cb0: 22 22 7d 20 7b 0a 20 20 20 20 20 20 66 6f 72 65  ""} {.      fore
3cc0: 61 63 68 20 74 68 69 73 5f 69 66 20 24 63 75 72  ach this_if $cur
3cd0: 72 65 6e 74 5f 69 66 20 7b 0a 20 20 20 20 20 20  rent_if {.      
3ce0: 20 20 70 75 74 73 20 24 66 64 20 22 23 65 6e 64    puts $fd "#end
3cf0: 69 66 22 0a 20 20 20 20 20 20 7d 0a 20 20 20 20  if".      }.    
3d00: 7d 0a 20 20 20 20 73 65 74 20 63 75 72 72 65 6e  }.    set curren
3d10: 74 5f 69 66 20 24 69 66 0a 20 20 20 20 69 66 20  t_if $if.    if 
3d20: 7b 24 63 75 72 72 65 6e 74 5f 69 66 21 3d 22 22  {$current_if!=""
3d30: 7d 20 7b 0a 20 20 20 20 20 20 66 6f 72 65 61 63  } {.      foreac
3d40: 68 20 74 68 69 73 5f 69 66 20 24 63 75 72 72 65  h this_if $curre
3d50: 6e 74 5f 69 66 20 7b 0a 20 20 20 20 20 20 20 20  nt_if {.        
3d60: 70 75 74 73 20 24 66 64 20 22 23 69 66 20 24 74  puts $fd "#if $t
3d70: 68 69 73 5f 69 66 22 0a 20 20 20 20 20 20 7d 0a  his_if".      }.
3d80: 20 20 20 20 7d 0a 20 20 7d 0a 20 20 73 65 74 20      }.  }.  set 
3d90: 74 79 70 65 78 20 5b 66 6f 72 6d 61 74 20 50 72  typex [format Pr
3da0: 61 67 54 79 70 5f 25 2d 32 33 73 20 24 74 79 70  agTyp_%-23s $typ
3db0: 65 2c 5d 0a 20 20 69 66 20 7b 24 66 6c 61 67 3d  e,].  if {$flag=
3dc0: 3d 22 22 7d 20 7b 0a 20 20 20 20 73 65 74 20 66  =""} {.    set f
3dd0: 6c 61 67 78 20 22 30 22 0a 20 20 7d 20 65 6c 73  lagx "0".  } els
3de0: 65 20 7b 0a 20 20 20 20 73 65 74 20 66 6c 61 67  e {.    set flag
3df0: 78 20 50 72 61 67 46 6c 67 5f 5b 6a 6f 69 6e 20  x PragFlg_[join 
3e00: 24 66 6c 61 67 20 7b 7c 50 72 61 67 46 6c 67 5f  $flag {|PragFlg_
3e10: 7d 5d 0a 20 20 7d 0a 20 20 70 75 74 73 20 24 66  }].  }.  puts $f
3e20: 64 20 22 20 5c 31 37 33 2f 2a 20 7a 4e 61 6d 65  d " \173/* zName
3e30: 3a 20 20 20 20 20 2a 2f 20 5c 22 24 6e 61 6d 65  :     */ \"$name
3e40: 5c 22 2c 22 0a 20 20 70 75 74 73 20 24 66 64 20  \",".  puts $fd 
3e50: 22 20 20 2f 2a 20 65 50 72 61 67 54 79 70 3a 20  "  /* ePragTyp: 
3e60: 20 2a 2f 20 50 72 61 67 54 79 70 5f 24 74 79 70   */ PragTyp_$typ
3e70: 65 2c 22 0a 20 20 70 75 74 73 20 24 66 64 20 22  e,".  puts $fd "
3e80: 20 20 2f 2a 20 65 50 72 61 67 46 6c 67 3a 20 20    /* ePragFlg:  
3e90: 2a 2f 20 24 66 6c 61 67 78 2c 22 0a 20 20 70 75  */ $flagx,".  pu
3ea0: 74 73 20 24 66 64 20 22 20 20 2f 2a 20 43 6f 6c  ts $fd "  /* Col
3eb0: 4e 61 6d 65 73 3a 20 20 2a 2f 20 24 63 79 2c 20  Names:  */ $cy, 
3ec0: 24 6e 78 2c 22 0a 20 20 70 75 74 73 20 24 66 64  $nx,".  puts $fd
3ed0: 20 22 20 20 2f 2a 20 69 41 72 67 3a 20 20 20 20   "  /* iArg:    
3ee0: 20 20 2a 2f 20 24 61 72 67 20 5c 31 37 35 2c 22    */ $arg \175,"
3ef0: 0a 7d 0a 69 66 20 7b 24 63 75 72 72 65 6e 74 5f  .}.if {$current_
3f00: 69 66 21 3d 22 22 7d 20 7b 0a 20 20 66 6f 72 65  if!=""} {.  fore
3f10: 61 63 68 20 74 68 69 73 5f 69 66 20 24 63 75 72  ach this_if $cur
3f20: 72 65 6e 74 5f 69 66 20 7b 0a 20 20 20 20 70 75  rent_if {.    pu
3f30: 74 73 20 24 66 64 20 22 23 65 6e 64 69 66 22 0a  ts $fd "#endif".
3f40: 20 20 7d 0a 7d 0a 70 75 74 73 20 24 66 64 20 22    }.}.puts $fd "
3f50: 5c 31 37 35 3b 22 0a 0a 23 20 63 6f 75 6e 74 20  \175;"..# count 
3f60: 74 68 65 20 6e 75 6d 62 65 72 20 6f 66 20 70 72  the number of pr
3f70: 61 67 6d 61 73 2c 20 66 6f 72 20 69 6e 66 6f 72  agmas, for infor
3f80: 6d 61 74 69 6f 6e 20 70 75 72 70 6f 73 65 73 0a  mation purposes.
3f90: 23 0a 73 65 74 20 61 6c 6c 63 6e 74 20 30 0a 73  #.set allcnt 0.s
3fa0: 65 74 20 64 66 6c 74 63 6e 74 20 30 0a 66 6f 72  et dfltcnt 0.for
3fb0: 65 61 63 68 20 6e 61 6d 65 20 24 61 6c 6c 6e 61  each name $allna
3fc0: 6d 65 73 20 7b 0a 20 20 69 6e 63 72 20 61 6c 6c  mes {.  incr all
3fd0: 63 6e 74 0a 20 20 73 65 74 20 69 66 20 5b 6c 69  cnt.  set if [li
3fe0: 6e 64 65 78 20 24 61 6c 6c 62 79 6e 61 6d 65 28  ndex $allbyname(
3ff0: 24 6e 61 6d 65 29 20 32 5d 0a 20 20 69 66 20 7b  $name) 2].  if {
4000: 5b 72 65 67 65 78 70 20 7b 5e 64 65 66 69 6e 65  [regexp {^define
4010: 64 7d 20 24 69 66 5d 20 7c 7c 20 5b 72 65 67 65  d} $if] || [rege
4020: 78 70 20 7b 5b 5e 21 5d 64 65 66 69 6e 65 64 7d  xp {[^!]defined}
4030: 20 24 69 66 5d 7d 20 63 6f 6e 74 69 6e 75 65 0a   $if]} continue.
4040: 20 20 69 6e 63 72 20 64 66 6c 74 63 6e 74 0a 7d    incr dfltcnt.}
4050: 0a 70 75 74 73 20 24 66 64 20 22 2f 2a 20 4e 75  .puts $fd "/* Nu
4060: 6d 62 65 72 20 6f 66 20 70 72 61 67 6d 61 73 3a  mber of pragmas:
4070: 20 24 64 66 6c 74 63 6e 74 20 6f 6e 20 62 79 20   $dfltcnt on by 
4080: 64 65 66 61 75 6c 74 2c 20 24 61 6c 6c 63 6e 74  default, $allcnt
4090: 20 74 6f 74 61 6c 2e 20 2a 2f 22 0a               total. */".