Documentation Source Text

Check-in [1112ebf74b]
Login

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

Overview
Comment:Update and reformat the requirements documents.
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA1:1112ebf74b4045b5bcf58395d1b13f13a909bd77
User & Date: drh 2009-02-19 14:38:14
Context
2009-02-20
14:08
Demonstrate the ability to include syntax diagram GIFs in requirements. check-in: a51c22424f user: drh tags: trunk
2009-02-19
14:38
Update and reformat the requirements documents. check-in: 1112ebf74b user: drh tags: trunk
2009-02-18
18:36
Move C-API requirements text out of sqlite.h.in and into docsrc. check-in: cb8f091c8f user: drh tags: trunk
Changes
Hide Diffs Unified Diffs Ignore Whitespace Patch

Changes to pages/fileformat.in.

6
7
8
9
10
11
12

13
14
15
16
17
18
19
....
2621
2622
2623
2624
2625
2626
2627
2628
</head>
<body>

<div id=document_title>SQLite Database File Format</div>
<div id=toc_header>Table Of Contents</div>

<tcl>

###############################################################################
# The actual text of requirments is stored in ../req/hlr30000.txt.  During
# the process in which this document is converted into HTML, TCL script runs
# and imports requirements from that file over into this file whenever you
# see:
#            <t*l>fileformat_import_requirement H00000</t*l>
#
................................................................................
}]
</tcl>

<div id=toc>
<tcl>hd_puts $TOC</tcl>
</div id=toc>
<tcl>hd_puts [FixReferences $body]</tcl>








>







 







<
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
....
2622
2623
2624
2625
2626
2627
2628

</head>
<body>

<div id=document_title>SQLite Database File Format</div>
<div id=toc_header>Table Of Contents</div>

<tcl>
hd_keywords {file format}
###############################################################################
# The actual text of requirments is stored in ../req/hlr30000.txt.  During
# the process in which this document is converted into HTML, TCL script runs
# and imports requirements from that file over into this file whenever you
# see:
#            <t*l>fileformat_import_requirement H00000</t*l>
#
................................................................................
}]
</tcl>

<div id=toc>
<tcl>hd_puts $TOC</tcl>
</div id=toc>
<tcl>hd_puts [FixReferences $body]</tcl>

Changes to pages/fileio.in.

1
2

3
4
5
6
7
8
9
....
1926
1927
1928
1929
1930
1931
1932
1933

<tcl>

proc hd_assumption {id text} {
  # hd_requirement $id $text
}
unset -nocomplain fioreq
hd_read_requirement_file $::DOC/req/hlr35000.txt fioreq
proc fileio_noop {args} {}

................................................................................
      C API Requirements Document.
    <tr><td style="width:5ex" id="sql_sqlitert_requirements">[2]<td>
      SQL Requirements Document.
    <tr><td style="width:5ex" id="ff_sqlitert_requirements">[3]<td>
      File Format Requirements Document.
  </table>
}]</tcl>



>







 







<
1
2
3
4
5
6
7
8
9
10
....
1927
1928
1929
1930
1931
1932
1933


<tcl>
hd_keywords {file IO}
proc hd_assumption {id text} {
  # hd_requirement $id $text
}
unset -nocomplain fioreq
hd_read_requirement_file $::DOC/req/hlr35000.txt fioreq
proc fileio_noop {args} {}

................................................................................
      C API Requirements Document.
    <tr><td style="width:5ex" id="sql_sqlitert_requirements">[2]<td>
      SQL Requirements Document.
    <tr><td style="width:5ex" id="ff_sqlitert_requirements">[3]<td>
      File Format Requirements Document.
  </table>
}]</tcl>

Changes to pages/hlr10000.in.

1
2
3
4
5
6


7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23

24
25
26
27
28
<title>SQLite Application C-langauge Interface Requirements</title>

<h1 align="center">
Requirements for the SQLite C-language Application Interface
</h1>




<dl>
<tcl>
# Actual requirements text is stored separately.  Read and render it.
#
unset -nocomplain REQ
hd_read_requirement_file $::DOC/req/hlr10000.txt REQ
foreach id $REQ(*) {
  hd_puts "\n<dt><b>"
  hd_fragment $id $id
  hd_puts "$id</b></dt>\n"
  hd_puts "<dd><p>\n"
  hd_resolve [lindex $REQ($id) 1]\n
  set comment [lindex $REQ($id) 2]
  if {$comment!=""} {
    hd_puts "</p>\n<p>"
    hd_resolve $comment\n

  }
  hd_puts "</p></dd>\n"
}
</tcl>
</dl>






>
>

<






<

<
|



|

>

|


<
1
2
3
4
5
6
7
8
9

10
11
12
13
14
15

16

17
18
19
20
21
22
23
24
25
26
27

<title>SQLite Application C-langauge Interface Requirements</title>

<h1 align="center">
Requirements for the SQLite C-language Application Interface
</h1>

<p>This document details [requirements] for the primary C-language interface
to SQLite.</p>


<tcl>
# Actual requirements text is stored separately.  Read and render it.
#
unset -nocomplain REQ
hd_read_requirement_file $::DOC/req/hlr10000.txt REQ
foreach id $REQ(*) {

  hd_fragment $id $id

  hd_puts "<p><b>$id:</b>\n"
  hd_resolve [lindex $REQ($id) 1]\n
  set comment [lindex $REQ($id) 2]
  if {$comment!=""} {
    hd_puts "</p>\n<blockquote>\n"
    hd_resolve $comment\n
    hd_puts "</blockquote>\n"
  }
  hd_puts "\n"
}
</tcl>

Added pages/hlr20000.in.

































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
<title>C-Language Interfaces For Extending SQLite</title>

<h1 align="center">
Requirements for the C-Language Interfaces that Extend SQLite
</h1>

<p>
This document contains detailed [requirements] for the C-language 
interfaces to SQLite that are used to extend SQLite.
</p>

<hr>

<tcl>
# Actual requirements text is stored separately.  Read and render it.
#
unset -nocomplain REQ
set REQ(*) {}
hd_read_requirement_file $::DOC/req/hlr20000.txt REQ
foreach id $REQ(*) {
  hd_fragment $id $id
  hd_puts "<p><b>$id:</b>\n"
  hd_resolve [lindex $REQ($id) 1]\n
  set comment [lindex $REQ($id) 2]
  if {$comment!=""} {
    hd_puts "</p>\n<blockquote>\n"
    hd_resolve $comment\n
    hd_puts "</blockquote>\n"
  }
  hd_puts "\n"
}
</tcl>

Added pages/hlr30000.in.

































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
<title>SQLite Database File Format Requirements</title>

<h1 align="center">
Requirements for the SQLite Database File Format
</h1>

<p>
This document contains detailed [requirements] for the database
[file format] and the [file I/O] characteristics of SQLite.
</p>

<hr>

<tcl>
# Actual requirements text is stored separately.  Read and render it.
#
unset -nocomplain REQ
hd_read_requirement_file $::DOC/req/hlr30000.txt REQ
hd_read_requirement_file $::DOC/req/hlr35000.txt REQ
foreach id $REQ(*) {
  hd_fragment $id $id
  hd_puts "<p><b>$id:</b>\n"
  hd_resolve [lindex $REQ($id) 1]\n
  set comment [lindex $REQ($id) 2]
  if {$comment!=""} {
    hd_puts "</p>\n<blockquote>\n"
    hd_resolve $comment\n
    hd_puts "</blockquote>\n"
  }
  hd_puts "\n"
}
</tcl>

Added pages/hlr40000.in.































































>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<title>SQLite SQL Language Specification</title>

<h1 align="center">
6.0 SQL Language Specification
</h1>

<p>
This document details the [requirements] for the SQL langauge understood
by SQLite.
</p>
<hr>


<tcl>
# Actual requirements text is stored separately.  Read and render it.
#
unset -nocomplain REQ
hd_read_requirement_file $::DOC/req/hlr40000.txt REQ
foreach id $REQ(*) {
  hd_fragment $id $id
  hd_puts "<p><b>$id:</b>\n"
  hd_resolve [lindex $REQ($id) 1]\n
  set comment [lindex $REQ($id) 2]
  if {$comment!=""} {
    hd_puts "</p>\n<blockquote>\n"
    hd_resolve $comment\n
    hd_puts "</blockquote>\n"
  }
  hd_puts "\n"
}
</tcl>

Changes to pages/requirements.in.

1

2
3
4
5
6
7
8
<title>SQLite Requirements</title>


<h1>SQLite Requirements</h1>

<h2>1.0 Introduction</h2>

<p>These requirements strive to describe the interfaces and operation of 
SQLite in sufficient detail that a compatible implementation of SQLite

>







1
2
3
4
5
6
7
8
9
<title>SQLite Requirements</title>
<tcl>hd_keywords {requirements}</tcl>

<h1>SQLite Requirements</h1>

<h2>1.0 Introduction</h2>

<p>These requirements strive to describe the interfaces and operation of 
SQLite in sufficient detail that a compatible implementation of SQLite

Changes to pages/sysreq.in.

1

2
3
4
5
6
7
8
9
10
11
12
13
14
..
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
<title>SQLite System Requirements</title>


<h1>System Requirements For SQLite</h1>

<p>This document outlines the chief goals and objectives of the SQLite
library. All of the features and capabilities of SQLite (that is to say,
<a href="requirements.html">all requirements</a> of SQLite) can 
ultimately be traced back to one of the broad and general
requirements specified here.</p>

<p>SQLite is not a complete system and so the requirements
provided by this document are not system requirements in the
strict sense.  Perhaps "sub-system requirements" would be a better
term, since SQLite is always a sub-component of a larger system.</p>
................................................................................
<p>This document is targeted primarily at developers who are
working within a waterfall development model that uses detailed
requirements written with the modal auxiliary verb "shall".  
However, this document is also useful as a general-purpose high-level 
description of SQLite for developers who are not working under
different development paradigms.</p>

<dl>
<tcl>
# Actual requirements text is stored separately.  Read and render it.
#
unset -nocomplain SYSREQ
hd_read_requirement_file $::DOC/req/asysreq.txt SYSREQ
foreach id $SYSREQ(*) {
  hd_puts "\n<dt><b>"
  hd_fragment $id $id
  hd_puts "$id</b></dt>\n"
  hd_puts "<dd><p>\n"
  hd_resolve [lindex $SYSREQ($id) 1]\n
  set comment [lindex $SYSREQ($id) 2]
  if {$comment!=""} {
    hd_puts "</p>\n<p>"
    hd_resolve $comment\n

  }
  hd_puts "</p></dd>\n"
}
</tcl>
</dl>

>





|







 







<






<

<
|



|

>

|



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
..
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
<title>SQLite System Requirements</title>
<tcl>hd_keywords {system requirements}</tcl>

<h1>System Requirements For SQLite</h1>

<p>This document outlines the chief goals and objectives of the SQLite
library. All of the features and capabilities of SQLite (that is to say,
the [requirements] of SQLite) can 
ultimately be traced back to one of the broad and general
requirements specified here.</p>

<p>SQLite is not a complete system and so the requirements
provided by this document are not system requirements in the
strict sense.  Perhaps "sub-system requirements" would be a better
term, since SQLite is always a sub-component of a larger system.</p>
................................................................................
<p>This document is targeted primarily at developers who are
working within a waterfall development model that uses detailed
requirements written with the modal auxiliary verb "shall".  
However, this document is also useful as a general-purpose high-level 
description of SQLite for developers who are not working under
different development paradigms.</p>


<tcl>
# Actual requirements text is stored separately.  Read and render it.
#
unset -nocomplain SYSREQ
hd_read_requirement_file $::DOC/req/asysreq.txt SYSREQ
foreach id $SYSREQ(*) {

  hd_fragment $id $id

  hd_puts "<p><b>$id:</b>\n"
  hd_resolve [lindex $SYSREQ($id) 1]\n
  set comment [lindex $SYSREQ($id) 2]
  if {$comment!=""} {
    hd_puts "<blockquote>\n"
    hd_resolve $comment\n
    hd_puts "</blockquote>\n"
  }
  hd_puts "\n"
}
</tcl>
</dl>

Changes to req/hlr10000.txt.

25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
..
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
..
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
...
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
and only if SQLite was compiled with mutexing code omitted.

HLR H10102 S60100
The value returned by [sqlite3_threadsafe()] shall remain the same
across calls to [sqlite3_config()].

HLR H10201 S10110
The [sqlite_int64] and [sqlite3_int64] type shall specify
a 64-bit signed integer.

HLR H10202 S10110
The [sqlite_uint64] and [sqlite3_uint64] type shall specify
a 64-bit unsigned integer.


HLR H10331 S30900
A successful invocation of [sqlite3_enable_shared_cache(B)]
will enable or disable shared cache mode for any subsequently
created [database connection] in the same process.

HLR H10336 S30900
When shared cache is enabled, the [sqlite3_create_module()]
interface will always return an error.

HLR H10337 S30900
................................................................................

HLR H10511 S70200
A successful evaluation of [sqlite3_complete()] or
[sqlite3_complete16()] functions shall
return a numeric 1 if and only if the input string contains
one or more non-whitespace tokens and the last non-whitespace
token in is a semicolon that is not in the middle of
a CREATE TRIGGER statement.

HLR H10512 S70200
If a memory allocation error occurs during an invocation
of [sqlite3_complete()] or [sqlite3_complete16()] then the
routine shall return [SQLITE_NOMEM].

HLR H10533 S40410
................................................................................
the function returns a pointer to the default [sqlite3_vfs]
object if there is one, or NULL if there is no default
[sqlite3_vfs] object.

HLR H11209 S20100
The [sqlite3_vfs_register(P,F)] interface registers the
well-formed [sqlite3_vfs] object P using the name given
by the zName field of the object.

HLR H11212 S20100
Using the [sqlite3_vfs_register(P,F)] interface to register
the same [sqlite3_vfs] object multiple times is a harmless no-op.

HLR H11215 S20100
The [sqlite3_vfs_register(P,F)] interface makes the [sqlite3_vfs]
................................................................................
[database connection] object C.

HLR H12012 S30100
A successful call to [sqlite3_close(C)] shall return SQLITE_OK.

HLR H12013 S30100
A successful call to [sqlite3_close(C)] shall release all
memory and system resources associated with [database connection]
C.

HLR H12014 S30100
A call to [sqlite3_close(C)] on a [database connection] C that
has one or more open [prepared statements] shall fail with
an [SQLITE_BUSY] error code.

HLR H12015 S30100







|



|





|







 







|







 







|







 







|
<







25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
..
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
..
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
...
122
123
124
125
126
127
128
129

130
131
132
133
134
135
136
and only if SQLite was compiled with mutexing code omitted.

HLR H10102 S60100
The value returned by [sqlite3_threadsafe()] shall remain the same
across calls to [sqlite3_config()].

HLR H10201 S10110
The [sqlite_int64] and [sqlite3_int64] types shall specify
a 64-bit signed integer.

HLR H10202 S10110
The [sqlite_uint64] and [sqlite3_uint64] types shall specify
a 64-bit unsigned integer.


HLR H10331 S30900
A successful invocation of [sqlite3_enable_shared_cache(B)]
will enable or disable shared cache mode for subsequently
created [database connection] in the same process.

HLR H10336 S30900
When shared cache is enabled, the [sqlite3_create_module()]
interface will always return an error.

HLR H10337 S30900
................................................................................

HLR H10511 S70200
A successful evaluation of [sqlite3_complete()] or
[sqlite3_complete16()] functions shall
return a numeric 1 if and only if the input string contains
one or more non-whitespace tokens and the last non-whitespace
token in is a semicolon that is not in the middle of
a [CREATE TRIGGER] statement.

HLR H10512 S70200
If a memory allocation error occurs during an invocation
of [sqlite3_complete()] or [sqlite3_complete16()] then the
routine shall return [SQLITE_NOMEM].

HLR H10533 S40410
................................................................................
the function returns a pointer to the default [sqlite3_vfs]
object if there is one, or NULL if there is no default
[sqlite3_vfs] object.

HLR H11209 S20100
The [sqlite3_vfs_register(P,F)] interface registers the
well-formed [sqlite3_vfs] object P using the name given
by the zName field of the object P.

HLR H11212 S20100
Using the [sqlite3_vfs_register(P,F)] interface to register
the same [sqlite3_vfs] object multiple times is a harmless no-op.

HLR H11215 S20100
The [sqlite3_vfs_register(P,F)] interface makes the [sqlite3_vfs]
................................................................................
[database connection] object C.

HLR H12012 S30100
A successful call to [sqlite3_close(C)] shall return SQLITE_OK.

HLR H12013 S30100
A successful call to [sqlite3_close(C)] shall release all
memory and system resources associated with [database connection] C.


HLR H12014 S30100
A call to [sqlite3_close(C)] on a [database connection] C that
has one or more open [prepared statements] shall fail with
an [SQLITE_BUSY] error code.

HLR H12015 S30100

Added req/hlr20000.txt.