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.
Downloads: Tarball | ZIP archive
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA1: 88da6668cb8530e22ac20f80c820cb61912d946b
User & Date: drh 2009-12-12 15:32:32.000
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
Unified Diff 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

<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>







|
|
|
|
|







1849
1850
1851
1852
1853
1854
1855
1856
1857
1858
1859
1860
1861
1862
1863
1864
1865
1866
1867

<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>
2246
2247
2248
2249
2250
2251
2252
2253
2254
2255
2256
2257
2258
2259
2260
2261
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>







|
|







2246
2247
2248
2249
2250
2251
2252
2253
2254
2255
2256
2257
2258
2259
2260
2261
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
#     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... */







|

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







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
#     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... */
63
64
65
66
67
68
69

70
71
72
73
74
75
76
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"







>







75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
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"