Documentation Source Text

Check-in [88da6668cb]
Login

Many hyperlinks are disabled.
Use anonymous login to enable hyperlinks.

Overview
Comment:Fix some requirements markings. Changes the evidence scanner to understand that requirement text that begins with "--" is comment, not actual requirement text.
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA1: 88da6668cb8530e22ac20f80c820cb61912d946b
User & Date: drh 2009-12-12 15:32:32
Context
2009-12-12
18:29
Updates to the matrix generator so that it outputs prototype evidence comments for easy cut-and-paste into test cases. Rewrite the CASE section of the SQL expression documentation. check-in: 01a939084b user: drh tags: trunk
15:32
Fix some requirements markings. Changes the evidence scanner to understand that requirement text that begins with "--" is comment, not actual requirement text. check-in: 88da6668cb user: drh tags: trunk
01:14
Add requirements markings and a section on the CASE expression to the SQL language documentation. check-in: ac0c9ef1a2 user: drh tags: trunk
Changes
Hide Diffs Unified Diffs Ignore Whitespace Patch

Changes to pages/lang.in.

1849
1850
1851
1852
1853
1854
1855
1856
1857
1858
1859
1860
1861
1862
1863
1864
1865
1866
1867
....
2246
2247
2248
2249
2250
2251
2252
2253
2254
2255
2256
2257
2258
2259
2260
2261

<p>
SQLite supports five date and time functions as follows:
</p>

<p>
<ol>
<li> <b>^(date(</b><i>timestring, modifier, modifier, ...</i><b>))^</b> </li>
<li> <b>^(time(</b><i>timestring, modifier, modifier, ...</i><b>))^</b> </li>
<li> <b>^(datetime(</b><i>timestring, modifier, modifier, ...</i><b>))^</b> </li>
<li> <b>^(julianday(</b><i>timestring, modifier, modifier, ...</i><b>))^</b> </li>
<li> <b>^(strftime(</b><i>format, timestring, modifier, modifier, ...</i><b>))^</b> </li>
</ol>

<p>
^All five date and time functions take a time string as an argument. 
^The time string is followed by zero or more modifiers. 
^The strftime() function also takes a format string as its first argument.
</p>
................................................................................
See the section titled
[ON CONFLICT] for additional information.
^For compatibility with MySQL, the parser allows the use of the
single keyword <a href="lang_replace.html">REPLACE</a> as an 
alias for "INSERT OR REPLACE".
</p>

<p>^The optional "<i>database-name</i><b>.</b>" prefix on the <i>table-name</i>
is support for top-level INSERT statements only.  ^The table name must be
unqualified for INSERT statements that occur within [CREATE TRIGGER] statements.
^Similarly, the "DEFAULT VALUES" form of the INSERT statement is supported for
top-level INSERT statements only and not for INSERT statements within
triggers.
<p>

<tcl>







|
|
|
|
|







 







|
|







1849
1850
1851
1852
1853
1854
1855
1856
1857
1858
1859
1860
1861
1862
1863
1864
1865
1866
1867
....
2246
2247
2248
2249
2250
2251
2252
2253
2254
2255
2256
2257
2258
2259
2260
2261

<p>
SQLite supports five date and time functions as follows:
</p>

<p>
<ol>
<li> ^(<b>date(</b><i>timestring, modifier, modifier, ...</i><b>)</b>)^ </li>
<li> ^(<b>time(</b><i>timestring, modifier, modifier, ...</i><b>)</b>)^ </li>
<li> ^(<b>datetime(</b><i>timestring, modifier, modifier, ...</i><b>)</b>)^ </li>
<li> ^(<b>julianday(</b><i>timestring, modifier, modifier, ...</i><b>)</b>)^ </li>
<li> ^(<b>strftime(</b><i>format, timestring, modifier, modifier, ...</i><b>)</b>)^ </li>
</ol>

<p>
^All five date and time functions take a time string as an argument. 
^The time string is followed by zero or more modifiers. 
^The strftime() function also takes a format string as its first argument.
</p>
................................................................................
See the section titled
[ON CONFLICT] for additional information.
^For compatibility with MySQL, the parser allows the use of the
single keyword <a href="lang_replace.html">REPLACE</a> as an 
alias for "INSERT OR REPLACE".
</p>

<p>^(The optional "<i>database-name</i><b>.</b>" prefix on the <i>table-name</i>
is support for top-level INSERT statements only.)^  ^The table name must be
unqualified for INSERT statements that occur within [CREATE TRIGGER] statements.
^Similarly, the "DEFAULT VALUES" form of the INSERT statement is supported for
top-level INSERT statements only and not for INSERT statements within
triggers.
<p>

<tcl>

Changes to pages/syntaxdiagrams.in.

1

2
3
4
5
6
7
8
<title>Syntax Diagrams For SQLite</title>


<h1 align=center>Syntax Diagrams For SQLite</h1>

<tcl>

foreach name $syntax_order {
  hd_fragment $name *$name "$name syntax diagram"

>







1
2
3
4
5
6
7
8
9
<title>Syntax Diagrams For SQLite</title>
<tcl>hd_keywords {syntax diagrams}</tcl>

<h1 align=center>Syntax Diagrams For SQLite</h1>

<tcl>

foreach name $syntax_order {
  hd_fragment $name *$name "$name syntax diagram"

Changes to scan_test_cases.tcl.

16
17
18
19
20
21
22
23
24
25












26
27
28
29
30
31
32
..
63
64
65
66
67
68
69

70
71
72
73
74
75
76
#     IMPLEMENTATION:
#
# Following the keyword is either a requirement number of the form:
#
#     R-00000-00000-00000-00000-00000-00000-00000-00000
#
# Or a prefix of such a requirement (usually the first two 5-digit groups 
# suffice) or the original text of the requirement.  Original text can 
# continue onto subsequent lines.  The text is terminated by a blank line
# or by the end of the comment.












#
# The second form of the source comments are single-line comments that
# follow these templates:
#
#     /* R-00000-00000... */
#     /* EV: R-00000-00000... */
#     /* IMP: R-00000-00000... */
................................................................................
proc output_one_record {} {
  global filename linenumber type requirement SRCCAT SRCCLASS
  regsub -all {\s+} [string trim $requirement] { } requirement
  regsub -all {\s?\*/$} $requirement {} requirement
  if {![regexp {(R-[-\d]+)\s*(.*)} $requirement all reqno reqtext]} {
    return
  }

  if {$reqtext!=""} {
    set nreqno R-[md5-10x8 $reqtext]
    if {[string match $reqno* $nreqno]} {
      set reqno $nreqno
    } else {
      puts stderr "$filename:$linenumber: requirement number mismatch;\
                   $reqno should be $nreqno"







|

|
>
>
>
>
>
>
>
>
>
>
>
>







 







>







16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
..
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
#     IMPLEMENTATION:
#
# Following the keyword is either a requirement number of the form:
#
#     R-00000-00000-00000-00000-00000-00000-00000-00000
#
# Or a prefix of such a requirement (usually the first two 5-digit groups 
# suffice) and/or the original text of the requirement.  Original text can 
# continue onto subsequent lines.  The text is terminated by a blank line
# or by the end of the comment.  If both the requirement number and the
# text are provided, this script verifies that they correspond.
#
# The requirement number can be followed by a comment that is not the
# original requirement text.  This is done when the original requirement
# text is an image or is too long the be practical in a comment but one
# still wants something in the comment to give a clue to the reader what
# the requirement is about.  For example:
#
#    # EVIDENCE-OF: R-41448-54465 -- syntax diagram insert-stmt
#
# The "--" following the requirement number is what identifies the
# follow-on text as a comment rather than requirement text.
#
# The second form of the source comments are single-line comments that
# follow these templates:
#
#     /* R-00000-00000... */
#     /* EV: R-00000-00000... */
#     /* IMP: R-00000-00000... */
................................................................................
proc output_one_record {} {
  global filename linenumber type requirement SRCCAT SRCCLASS
  regsub -all {\s+} [string trim $requirement] { } requirement
  regsub -all {\s?\*/$} $requirement {} requirement
  if {![regexp {(R-[-\d]+)\s*(.*)} $requirement all reqno reqtext]} {
    return
  }
  if {[string range $reqtext 0 2]=="-- "} {set reqtext {}}
  if {$reqtext!=""} {
    set nreqno R-[md5-10x8 $reqtext]
    if {[string match $reqno* $nreqno]} {
      set reqno $nreqno
    } else {
      puts stderr "$filename:$linenumber: requirement number mismatch;\
                   $reqno should be $nreqno"