sqlite3 1.7.3 → 2.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (61) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +292 -0
  3. data/CONTRIBUTING.md +33 -7
  4. data/FAQ.md +43 -77
  5. data/INSTALLATION.md +14 -6
  6. data/LICENSE +18 -22
  7. data/README.md +97 -9
  8. data/dependencies.yml +10 -11
  9. data/ext/sqlite3/aggregator.c +142 -145
  10. data/ext/sqlite3/aggregator.h +2 -4
  11. data/ext/sqlite3/backup.c +74 -65
  12. data/ext/sqlite3/backup.h +2 -2
  13. data/ext/sqlite3/database.c +621 -493
  14. data/ext/sqlite3/database.h +13 -4
  15. data/ext/sqlite3/exception.c +116 -92
  16. data/ext/sqlite3/exception.h +5 -1
  17. data/ext/sqlite3/extconf.rb +33 -24
  18. data/ext/sqlite3/sqlite3.c +176 -115
  19. data/ext/sqlite3/sqlite3_ruby.h +2 -2
  20. data/ext/sqlite3/statement.c +553 -300
  21. data/ext/sqlite3/statement.h +4 -3
  22. data/ext/sqlite3/timespec.h +20 -0
  23. data/lib/sqlite3/constants.rb +195 -47
  24. data/lib/sqlite3/database.rb +223 -187
  25. data/lib/sqlite3/errors.rb +54 -1
  26. data/lib/sqlite3/fork_safety.rb +66 -0
  27. data/lib/sqlite3/pragmas.rb +140 -136
  28. data/lib/sqlite3/resultset.rb +14 -97
  29. data/lib/sqlite3/statement.rb +58 -13
  30. data/lib/sqlite3/value.rb +17 -20
  31. data/lib/sqlite3/version.rb +2 -21
  32. data/lib/sqlite3/version_info.rb +17 -0
  33. data/lib/sqlite3.rb +8 -4
  34. data/ports/archives/sqlite-autoconf-3470200.tar.gz +0 -0
  35. metadata +9 -37
  36. data/API_CHANGES.md +0 -49
  37. data/ChangeLog.cvs +0 -88
  38. data/Gemfile +0 -10
  39. data/LICENSE-DEPENDENCIES +0 -20
  40. data/lib/sqlite3/translator.rb +0 -117
  41. data/ports/archives/sqlite-autoconf-3450200.tar.gz +0 -0
  42. data/test/helper.rb +0 -27
  43. data/test/test_backup.rb +0 -33
  44. data/test/test_collation.rb +0 -82
  45. data/test/test_database.rb +0 -668
  46. data/test/test_database_flags.rb +0 -95
  47. data/test/test_database_readonly.rb +0 -36
  48. data/test/test_database_readwrite.rb +0 -41
  49. data/test/test_deprecated.rb +0 -49
  50. data/test/test_encoding.rb +0 -165
  51. data/test/test_integration.rb +0 -507
  52. data/test/test_integration_aggregate.rb +0 -336
  53. data/test/test_integration_open_close.rb +0 -30
  54. data/test/test_integration_pending.rb +0 -115
  55. data/test/test_integration_resultset.rb +0 -142
  56. data/test/test_integration_statement.rb +0 -194
  57. data/test/test_pragmas.rb +0 -22
  58. data/test/test_result_set.rb +0 -47
  59. data/test/test_sqlite3.rb +0 -30
  60. data/test/test_statement.rb +0 -290
  61. data/test/test_statement_execute.rb +0 -39
@@ -4,12 +4,13 @@
4
4
  #include <sqlite3_ruby.h>
5
5
 
6
6
  struct _sqlite3StmtRuby {
7
- sqlite3_stmt *st;
8
- int done_p;
7
+ sqlite3_stmt *st;
8
+ sqlite3Ruby *db;
9
+ int done_p;
9
10
  };
10
11
 
11
12
  typedef struct _sqlite3StmtRuby sqlite3StmtRuby;
12
- typedef sqlite3StmtRuby * sqlite3StmtRubyPtr;
13
+ typedef sqlite3StmtRuby *sqlite3StmtRubyPtr;
13
14
 
14
15
  void init_sqlite3_statement();
15
16
 
@@ -0,0 +1,20 @@
1
+ #define timespecclear(tsp) (tsp)->tv_sec = (tsp)->tv_nsec = 0
2
+ #define timespecisset(tsp) ((tsp)->tv_sec || (tsp)->tv_nsec)
3
+ #define timespecisvalid(tsp) \
4
+ ((tsp)->tv_nsec >= 0 && (tsp)->tv_nsec < 1000000000L)
5
+ #define timespeccmp(tsp, usp, cmp) \
6
+ (((tsp)->tv_sec == (usp)->tv_sec) ? \
7
+ ((tsp)->tv_nsec cmp (usp)->tv_nsec) : \
8
+ ((tsp)->tv_sec cmp (usp)->tv_sec))
9
+ #define timespecsub(tsp, usp, vsp) \
10
+ do { \
11
+ (vsp)->tv_sec = (tsp)->tv_sec - (usp)->tv_sec; \
12
+ (vsp)->tv_nsec = (tsp)->tv_nsec - (usp)->tv_nsec; \
13
+ if ((vsp)->tv_nsec < 0) { \
14
+ (vsp)->tv_sec--; \
15
+ (vsp)->tv_nsec += 1000000000L; \
16
+ } \
17
+ } while (0)
18
+ #define timespecafter(tsp, usp) \
19
+ (((tsp)->tv_sec > (usp)->tv_sec) || \
20
+ ((tsp)->tv_sec == (usp)->tv_sec && (tsp)->tv_nsec > (usp)->tv_nsec))
@@ -1,50 +1,198 @@
1
- module SQLite3 ; module Constants
2
-
3
- module TextRep
4
- UTF8 = 1
5
- UTF16LE = 2
6
- UTF16BE = 3
7
- UTF16 = 4
8
- ANY = 5
9
- DETERMINISTIC = 0x800
10
- end
1
+ module SQLite3
2
+ module Constants
3
+ #
4
+ # CAPI3REF: Text Encodings
5
+ #
6
+ # These constant define integer codes that represent the various
7
+ # text encodings supported by SQLite.
8
+ #
9
+ module TextRep
10
+ # IMP: R-37514-35566
11
+ UTF8 = 1
12
+ # IMP: R-03371-37637
13
+ UTF16LE = 2
14
+ # IMP: R-51971-34154
15
+ UTF16BE = 3
16
+ # Use native byte order
17
+ UTF16 = 4
18
+ # Deprecated
19
+ ANY = 5
20
+ # sqlite3_create_collation only
21
+ DETERMINISTIC = 0x800
22
+ end
11
23
 
12
- module ColumnType
13
- INTEGER = 1
14
- FLOAT = 2
15
- TEXT = 3
16
- BLOB = 4
17
- NULL = 5
18
- end
24
+ #
25
+ # CAPI3REF: Fundamental Datatypes
26
+ #
27
+ # ^(Every value in SQLite has one of five fundamental datatypes:
28
+ #
29
+ # <ul>
30
+ # <li> 64-bit signed integer
31
+ # <li> 64-bit IEEE floating point number
32
+ # <li> string
33
+ # <li> BLOB
34
+ # <li> NULL
35
+ # </ul>)^
36
+ #
37
+ # These constants are codes for each of those types.
38
+ #
39
+ module ColumnType
40
+ INTEGER = 1
41
+ FLOAT = 2
42
+ TEXT = 3
43
+ BLOB = 4
44
+ NULL = 5
45
+ end
19
46
 
20
- module ErrorCode
21
- OK = 0 # Successful result
22
- ERROR = 1 # SQL error or missing database
23
- INTERNAL = 2 # An internal logic error in SQLite
24
- PERM = 3 # Access permission denied
25
- ABORT = 4 # Callback routine requested an abort
26
- BUSY = 5 # The database file is locked
27
- LOCKED = 6 # A table in the database is locked
28
- NOMEM = 7 # A malloc() failed
29
- READONLY = 8 # Attempt to write a readonly database
30
- INTERRUPT = 9 # Operation terminated by sqlite_interrupt()
31
- IOERR = 10 # Some kind of disk I/O error occurred
32
- CORRUPT = 11 # The database disk image is malformed
33
- NOTFOUND = 12 # (Internal Only) Table or record not found
34
- FULL = 13 # Insertion failed because database is full
35
- CANTOPEN = 14 # Unable to open the database file
36
- PROTOCOL = 15 # Database lock protocol error
37
- EMPTY = 16 # (Internal Only) Database table is empty
38
- SCHEMA = 17 # The database schema changed
39
- TOOBIG = 18 # Too much data for one row of a table
40
- CONSTRAINT = 19 # Abort due to constraint violation
41
- MISMATCH = 20 # Data type mismatch
42
- MISUSE = 21 # Library used incorrectly
43
- NOLFS = 22 # Uses OS features not supported on host
44
- AUTH = 23 # Authorization denied
45
-
46
- ROW = 100 # sqlite_step() has another row ready
47
- DONE = 101 # sqlite_step() has finished executing
48
- end
47
+ #
48
+ # CAPI3REF: Result Codes
49
+ #
50
+ # Many SQLite functions return an integer result code from the set shown
51
+ # here in order to indicate success or failure.
52
+ #
53
+ # New error codes may be added in future versions of SQLite.
54
+ #
55
+ module ErrorCode
56
+ # Successful result
57
+ OK = 0
58
+ # SQL error or missing database
59
+ ERROR = 1
60
+ # An internal logic error in SQLite
61
+ INTERNAL = 2
62
+ # Access permission denied
63
+ PERM = 3
64
+ # Callback routine requested an abort
65
+ ABORT = 4
66
+ # The database file is locked
67
+ BUSY = 5
68
+ # A table in the database is locked
69
+ LOCKED = 6
70
+ # A malloc() failed
71
+ NOMEM = 7
72
+ # Attempt to write a readonly database
73
+ READONLY = 8
74
+ # Operation terminated by sqlite_interrupt()
75
+ INTERRUPT = 9
76
+ # Some kind of disk I/O error occurred
77
+ IOERR = 10
78
+ # The database disk image is malformed
79
+ CORRUPT = 11
80
+ # (Internal Only) Table or record not found
81
+ NOTFOUND = 12
82
+ # Insertion failed because database is full
83
+ FULL = 13
84
+ # Unable to open the database file
85
+ CANTOPEN = 14
86
+ # Database lock protocol error
87
+ PROTOCOL = 15
88
+ # (Internal Only) Database table is empty
89
+ EMPTY = 16
90
+ # The database schema changed
91
+ SCHEMA = 17
92
+ # Too much data for one row of a table
93
+ TOOBIG = 18
94
+ # Abort due to constraint violation
95
+ CONSTRAINT = 19
96
+ # Data type mismatch
97
+ MISMATCH = 20
98
+ # Library used incorrectly
99
+ MISUSE = 21
100
+ # Uses OS features not supported on host
101
+ NOLFS = 22
102
+ # Authorization denied
103
+ AUTH = 23
104
+ # Not used
105
+ FORMAT = 24
106
+ # 2nd parameter to sqlite3_bind out of range
107
+ RANGE = 25
108
+ # File opened that is not a database file
109
+ NOTADB = 26
110
+ # Notifications from sqlite3_log()
111
+ NOTICE = 27
112
+ # Warnings from sqlite3_log()
113
+ WARNING = 28
114
+ # sqlite_step() has another row ready
115
+ ROW = 100
116
+ # sqlite_step() has finished executing
117
+ DONE = 101
118
+ end
119
+
120
+ #
121
+ # CAPI3REF: Status Parameters
122
+ #
123
+ # These integer constants designate various run-time status parameters
124
+ # that can be returned by SQLite3.status
125
+ #
126
+ module Status
127
+ # This parameter is the current amount of memory checked out using sqlite3_malloc(), either
128
+ # directly or indirectly. The figure includes calls made to sqlite3_malloc() by the
129
+ # application and internal memory usage by the SQLite library. Auxiliary page-cache memory
130
+ # controlled by SQLITE_CONFIG_PAGECACHE is not included in this parameter. The amount returned
131
+ # is the sum of the allocation sizes as reported by the xSize method in sqlite3_mem_methods.
132
+ MEMORY_USED = 0
133
+
134
+ # This parameter returns the number of pages used out of the pagecache memory allocator that
135
+ # was configured using SQLITE_CONFIG_PAGECACHE. The value returned is in pages, not in bytes.
136
+ PAGECACHE_USED = 1
137
+
138
+ # This parameter returns the number of bytes of page cache allocation which could not be
139
+ # satisfied by the SQLITE_CONFIG_PAGECACHE buffer and where forced to overflow to
140
+ # sqlite3_malloc(). The returned value includes allocations that overflowed because they where
141
+ # too large (they were larger than the "sz" parameter to SQLITE_CONFIG_PAGECACHE) and
142
+ # allocations that overflowed because no space was left in the page cache.
143
+ PAGECACHE_OVERFLOW = 2
144
+
145
+ # NOT USED
146
+ SCRATCH_USED = 3
147
+
148
+ # NOT USED
149
+ SCRATCH_OVERFLOW = 4
150
+
151
+ # This parameter records the largest memory allocation request handed to sqlite3_malloc() or
152
+ # sqlite3_realloc() (or their internal equivalents). Only the value returned in the
153
+ # *pHighwater parameter to sqlite3_status() is of interest. The value written into the
154
+ # *pCurrent parameter is undefined.
155
+ MALLOC_SIZE = 5
49
156
 
50
- end ; end
157
+ # The *pHighwater parameter records the deepest parser stack. The *pCurrent value is
158
+ # undefined. The *pHighwater value is only meaningful if SQLite is compiled with
159
+ # YYTRACKMAXSTACKDEPTH.
160
+ PARSER_STACK = 6
161
+
162
+ # This parameter records the largest memory allocation request handed to the pagecache memory
163
+ # allocator. Only the value returned in the *pHighwater parameter to sqlite3_status() is of
164
+ # interest. The value written into the *pCurrent parameter is undefined.
165
+ PAGECACHE_SIZE = 7
166
+
167
+ # NOT USED
168
+ SCRATCH_SIZE = 8
169
+
170
+ # This parameter records the number of separate memory allocations currently checked out.
171
+ MALLOC_COUNT = 9
172
+ end
173
+
174
+ module Optimize
175
+ # Debugging mode. Do not actually perform any optimizations but instead return one line of
176
+ # text for each optimization that would have been done. Off by default.
177
+ DEBUG = 0x00001
178
+
179
+ # Run ANALYZE on tables that might benefit. On by default.
180
+ ANALYZE_TABLES = 0x00002
181
+
182
+ # When running ANALYZE, set a temporary PRAGMA analysis_limit to prevent excess run-time. On
183
+ # by default.
184
+ LIMIT_ANALYZE = 0x00010
185
+
186
+ # Check the size of all tables, not just tables that have not been recently used, to see if
187
+ # any have grown and shrunk significantly and hence might benefit from being re-analyzed. Off
188
+ # by default.
189
+ CHECK_ALL_TABLES = 0x10000
190
+
191
+ # Useful for adding a bit to the default behavior, for example
192
+ #
193
+ # db.optimize(Optimize::DEFAULT | Optimize::CHECK_ALL_TABLES)
194
+ #
195
+ DEFAULT = ANALYZE_TABLES | LIMIT_ANALYZE
196
+ end
197
+ end
198
+ end