sqlite3 1.3.5 → 1.3.13
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.
- checksums.yaml +7 -0
- data/CHANGELOG.rdoc +84 -0
- data/Gemfile +15 -0
- data/Manifest.txt +2 -0
- data/README.rdoc +29 -6
- data/ext/sqlite3/database.c +131 -27
- data/ext/sqlite3/extconf.rb +31 -7
- data/ext/sqlite3/sqlite3.c +112 -0
- data/ext/sqlite3/sqlite3_ruby.h +12 -4
- data/ext/sqlite3/statement.c +33 -22
- data/faq/faq.yml +1 -1
- data/lib/sqlite3.rb +6 -1
- data/lib/sqlite3/database.rb +36 -24
- data/lib/sqlite3/pragmas.rb +357 -49
- data/lib/sqlite3/resultset.rb +94 -25
- data/lib/sqlite3/statement.rb +13 -17
- data/lib/sqlite3/version.rb +2 -2
- data/setup.rb +2 -2
- data/tasks/gem.rake +12 -6
- data/tasks/native.rake +22 -7
- data/tasks/vendor_sqlite3.rake +69 -20
- data/test/helper.rb +17 -2
- data/test/test_backup.rb +2 -2
- data/test/test_collation.rb +1 -1
- data/test/test_database.rb +102 -7
- data/test/test_database_readonly.rb +10 -3
- data/test/test_deprecated.rb +8 -1
- data/test/test_encoding.rb +35 -1
- data/test/test_integration.rb +36 -15
- data/test/test_integration_open_close.rb +1 -1
- data/test/test_integration_pending.rb +2 -2
- data/test/test_integration_resultset.rb +6 -3
- data/test/test_integration_statement.rb +2 -2
- data/test/test_result_set.rb +37 -0
- data/test/test_sqlite3.rb +13 -1
- data/test/test_statement.rb +26 -4
- data/test/test_statement_execute.rb +1 -1
- metadata +125 -121
- data/.gemtest +0 -0
@@ -1,6 +1,6 @@
|
|
1
1
|
require 'helper'
|
2
2
|
|
3
|
-
class TC_ResultSet <
|
3
|
+
class TC_ResultSet < SQLite3::TestCase
|
4
4
|
def setup
|
5
5
|
@db = SQLite3::Database.new(":memory:")
|
6
6
|
@db.transaction do
|
@@ -98,8 +98,11 @@ class TC_ResultSet < Test::Unit::TestCase
|
|
98
98
|
def test_next_results_as_hash
|
99
99
|
@db.results_as_hash = true
|
100
100
|
@result.reset( 1 )
|
101
|
-
|
102
|
-
|
101
|
+
hash = @result.next
|
102
|
+
assert_equal( { "a" => 1, "b" => "foo" },
|
103
|
+
hash )
|
104
|
+
assert_equal hash[0], 1
|
105
|
+
assert_equal hash[1], "foo"
|
103
106
|
end
|
104
107
|
|
105
108
|
def test_tainted_results_as_hash
|
@@ -0,0 +1,37 @@
|
|
1
|
+
require 'helper'
|
2
|
+
|
3
|
+
module SQLite3
|
4
|
+
class TestResultSet < SQLite3::TestCase
|
5
|
+
def test_each_hash
|
6
|
+
db = SQLite3::Database.new ':memory:'
|
7
|
+
db.execute "create table foo ( a integer primary key, b text )"
|
8
|
+
list = ('a'..'z').to_a
|
9
|
+
list.each do |t|
|
10
|
+
db.execute "insert into foo (b) values (\"#{t}\")"
|
11
|
+
end
|
12
|
+
|
13
|
+
rs = db.prepare('select * from foo').execute
|
14
|
+
rs.each_hash do |hash|
|
15
|
+
assert_equal list[hash['a'] - 1], hash['b']
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
def test_next_hash
|
20
|
+
db = SQLite3::Database.new ':memory:'
|
21
|
+
db.execute "create table foo ( a integer primary key, b text )"
|
22
|
+
list = ('a'..'z').to_a
|
23
|
+
list.each do |t|
|
24
|
+
db.execute "insert into foo (b) values (\"#{t}\")"
|
25
|
+
end
|
26
|
+
|
27
|
+
rs = db.prepare('select * from foo').execute
|
28
|
+
rows = []
|
29
|
+
while row = rs.next_hash
|
30
|
+
rows << row
|
31
|
+
end
|
32
|
+
rows.each do |hash|
|
33
|
+
assert_equal list[hash['a'] - 1], hash['b']
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
data/test/test_sqlite3.rb
CHANGED
@@ -1,9 +1,21 @@
|
|
1
1
|
require 'helper'
|
2
2
|
|
3
3
|
module SQLite3
|
4
|
-
class TestSQLite3 <
|
4
|
+
class TestSQLite3 < SQLite3::TestCase
|
5
5
|
def test_libversion
|
6
6
|
assert_not_nil SQLite3.libversion
|
7
7
|
end
|
8
|
+
|
9
|
+
def test_threadsafe
|
10
|
+
assert_not_nil SQLite3.threadsafe
|
11
|
+
end
|
12
|
+
|
13
|
+
def test_threadsafe?
|
14
|
+
if SQLite3.threadsafe > 0
|
15
|
+
assert SQLite3.threadsafe?
|
16
|
+
else
|
17
|
+
refute SQLite3.threadsafe?
|
18
|
+
end
|
19
|
+
end
|
8
20
|
end
|
9
21
|
end
|
data/test/test_statement.rb
CHANGED
@@ -1,18 +1,42 @@
|
|
1
1
|
require 'helper'
|
2
2
|
|
3
3
|
module SQLite3
|
4
|
-
class TestStatement <
|
4
|
+
class TestStatement < SQLite3::TestCase
|
5
5
|
def setup
|
6
6
|
@db = SQLite3::Database.new(':memory:')
|
7
7
|
@stmt = SQLite3::Statement.new(@db, "select 'foo'")
|
8
8
|
end
|
9
9
|
|
10
|
+
def test_double_close_does_not_segv
|
11
|
+
@db.execute 'CREATE TABLE "things" ("number" float NOT NULL)'
|
12
|
+
|
13
|
+
stmt = @db.prepare 'INSERT INTO things (number) VALUES (?)'
|
14
|
+
assert_raises(SQLite3::ConstraintException) { stmt.execute(nil) }
|
15
|
+
|
16
|
+
stmt.close
|
17
|
+
|
18
|
+
assert_raises(SQLite3::Exception) { stmt.close }
|
19
|
+
end
|
20
|
+
|
10
21
|
def test_raises_type_error
|
11
22
|
assert_raises(TypeError) do
|
12
23
|
SQLite3::Statement.new( @db, nil )
|
13
24
|
end
|
14
25
|
end
|
15
26
|
|
27
|
+
def test_insert_duplicate_records
|
28
|
+
@db.execute 'CREATE TABLE "things" ("name" varchar(20) CONSTRAINT "index_things_on_name" UNIQUE)'
|
29
|
+
stmt = @db.prepare("INSERT INTO things(name) VALUES(?)")
|
30
|
+
stmt.execute('ruby')
|
31
|
+
|
32
|
+
exception = assert_raises(SQLite3::ConstraintException) { stmt.execute('ruby') }
|
33
|
+
# SQLite 3.8.2 returns new error message:
|
34
|
+
# UNIQUE constraint failed: *table_name*.*column_name*
|
35
|
+
# Older versions of SQLite return:
|
36
|
+
# column *column_name* is not unique
|
37
|
+
assert_match(/(column(s)? .* (is|are) not unique|UNIQUE constraint failed: .*)/, exception.message)
|
38
|
+
end
|
39
|
+
|
16
40
|
###
|
17
41
|
# This method may not exist depending on how sqlite3 was compiled
|
18
42
|
def test_database_name
|
@@ -216,9 +240,7 @@ module SQLite3
|
|
216
240
|
stmt.execute('employee-1')
|
217
241
|
stmt.execute('employee-1') rescue SQLite3::ConstraintException
|
218
242
|
stmt.reset!
|
219
|
-
|
220
|
-
stmt.execute('employee-2')
|
221
|
-
}
|
243
|
+
assert stmt.execute('employee-2')
|
222
244
|
end
|
223
245
|
|
224
246
|
def test_clear_bindings
|
metadata
CHANGED
@@ -1,114 +1,143 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: sqlite3
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
5
|
-
prerelease:
|
6
|
-
segments:
|
7
|
-
- 1
|
8
|
-
- 3
|
9
|
-
- 5
|
10
|
-
version: 1.3.5
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.3.13
|
11
5
|
platform: ruby
|
12
|
-
authors:
|
6
|
+
authors:
|
13
7
|
- Jamis Buck
|
14
8
|
- Luis Lavena
|
15
9
|
- Aaron Patterson
|
16
10
|
autorequire:
|
17
11
|
bindir: bin
|
18
12
|
cert_chain: []
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
13
|
+
date: 2017-01-04 00:00:00.000000000 Z
|
14
|
+
dependencies:
|
15
|
+
- !ruby/object:Gem::Dependency
|
16
|
+
name: minitest
|
17
|
+
requirement: !ruby/object:Gem::Requirement
|
18
|
+
requirements:
|
19
|
+
- - "~>"
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '5.9'
|
22
|
+
type: :development
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
requirements:
|
26
|
+
- - "~>"
|
27
|
+
- !ruby/object:Gem::Version
|
28
|
+
version: '5.9'
|
29
|
+
- !ruby/object:Gem::Dependency
|
30
|
+
name: rdoc
|
31
|
+
requirement: !ruby/object:Gem::Requirement
|
32
|
+
requirements:
|
33
|
+
- - "~>"
|
34
|
+
- !ruby/object:Gem::Version
|
35
|
+
version: '4.0'
|
36
|
+
type: :development
|
37
|
+
prerelease: false
|
38
|
+
version_requirements: !ruby/object:Gem::Requirement
|
39
|
+
requirements:
|
40
|
+
- - "~>"
|
41
|
+
- !ruby/object:Gem::Version
|
42
|
+
version: '4.0'
|
43
|
+
- !ruby/object:Gem::Dependency
|
23
44
|
name: rake-compiler
|
45
|
+
requirement: !ruby/object:Gem::Requirement
|
46
|
+
requirements:
|
47
|
+
- - "~>"
|
48
|
+
- !ruby/object:Gem::Version
|
49
|
+
version: 0.9.3
|
50
|
+
type: :development
|
24
51
|
prerelease: false
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
52
|
+
version_requirements: !ruby/object:Gem::Requirement
|
53
|
+
requirements:
|
54
|
+
- - "~>"
|
55
|
+
- !ruby/object:Gem::Version
|
56
|
+
version: 0.9.3
|
57
|
+
- !ruby/object:Gem::Dependency
|
58
|
+
name: rake-compiler-dock
|
59
|
+
requirement: !ruby/object:Gem::Requirement
|
60
|
+
requirements:
|
61
|
+
- - "~>"
|
62
|
+
- !ruby/object:Gem::Version
|
63
|
+
version: 0.5.2
|
36
64
|
type: :development
|
37
|
-
version_requirements: *id001
|
38
|
-
- !ruby/object:Gem::Dependency
|
39
|
-
name: mini_portile
|
40
65
|
prerelease: false
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
66
|
+
version_requirements: !ruby/object:Gem::Requirement
|
67
|
+
requirements:
|
68
|
+
- - "~>"
|
69
|
+
- !ruby/object:Gem::Version
|
70
|
+
version: 0.5.2
|
71
|
+
- !ruby/object:Gem::Dependency
|
72
|
+
name: mini_portile
|
73
|
+
requirement: !ruby/object:Gem::Requirement
|
74
|
+
requirements:
|
75
|
+
- - "~>"
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: 0.6.2
|
52
78
|
type: :development
|
53
|
-
version_requirements: *id002
|
54
|
-
- !ruby/object:Gem::Dependency
|
55
|
-
name: hoe
|
56
79
|
prerelease: false
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
80
|
+
version_requirements: !ruby/object:Gem::Requirement
|
81
|
+
requirements:
|
82
|
+
- - "~>"
|
83
|
+
- !ruby/object:Gem::Version
|
84
|
+
version: 0.6.2
|
85
|
+
- !ruby/object:Gem::Dependency
|
86
|
+
name: hoe-bundler
|
87
|
+
requirement: !ruby/object:Gem::Requirement
|
88
|
+
requirements:
|
89
|
+
- - "~>"
|
90
|
+
- !ruby/object:Gem::Version
|
91
|
+
version: '1.0'
|
67
92
|
type: :development
|
68
|
-
version_requirements: *id003
|
69
|
-
- !ruby/object:Gem::Dependency
|
70
|
-
name: rdoc
|
71
93
|
prerelease: false
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
94
|
+
version_requirements: !ruby/object:Gem::Requirement
|
95
|
+
requirements:
|
96
|
+
- - "~>"
|
97
|
+
- !ruby/object:Gem::Version
|
98
|
+
version: '1.0'
|
99
|
+
- !ruby/object:Gem::Dependency
|
100
|
+
name: hoe
|
101
|
+
requirement: !ruby/object:Gem::Requirement
|
102
|
+
requirements:
|
103
|
+
- - "~>"
|
104
|
+
- !ruby/object:Gem::Version
|
105
|
+
version: '3.15'
|
82
106
|
type: :development
|
83
|
-
|
107
|
+
prerelease: false
|
108
|
+
version_requirements: !ruby/object:Gem::Requirement
|
109
|
+
requirements:
|
110
|
+
- - "~>"
|
111
|
+
- !ruby/object:Gem::Version
|
112
|
+
version: '3.15'
|
84
113
|
description: |-
|
85
114
|
This module allows Ruby programs to interface with the SQLite3
|
86
115
|
database engine (http://www.sqlite.org). You must have the
|
87
116
|
SQLite engine installed in order to build this module.
|
88
|
-
|
117
|
+
|
89
118
|
Note that this module is only compatible with SQLite 3.6.16 or newer.
|
90
|
-
email:
|
119
|
+
email:
|
91
120
|
- jamis@37signals.com
|
92
121
|
- luislavena@gmail.com
|
93
122
|
- aaron@tenderlovemaking.com
|
94
123
|
executables: []
|
95
|
-
|
96
|
-
extensions:
|
124
|
+
extensions:
|
97
125
|
- ext/sqlite3/extconf.rb
|
98
|
-
extra_rdoc_files:
|
126
|
+
extra_rdoc_files:
|
127
|
+
- API_CHANGES.rdoc
|
128
|
+
- CHANGELOG.rdoc
|
99
129
|
- Manifest.txt
|
100
130
|
- README.rdoc
|
101
|
-
- CHANGELOG.rdoc
|
102
|
-
- API_CHANGES.rdoc
|
103
|
-
- ext/sqlite3/sqlite3.c
|
104
131
|
- ext/sqlite3/backup.c
|
105
|
-
- ext/sqlite3/statement.c
|
106
132
|
- ext/sqlite3/database.c
|
107
133
|
- ext/sqlite3/exception.c
|
108
|
-
|
134
|
+
- ext/sqlite3/sqlite3.c
|
135
|
+
- ext/sqlite3/statement.c
|
136
|
+
files:
|
109
137
|
- API_CHANGES.rdoc
|
110
138
|
- CHANGELOG.rdoc
|
111
139
|
- ChangeLog.cvs
|
140
|
+
- Gemfile
|
112
141
|
- LICENSE
|
113
142
|
- Manifest.txt
|
114
143
|
- README.rdoc
|
@@ -153,60 +182,35 @@ files:
|
|
153
182
|
- test/test_integration_pending.rb
|
154
183
|
- test/test_integration_resultset.rb
|
155
184
|
- test/test_integration_statement.rb
|
185
|
+
- test/test_result_set.rb
|
156
186
|
- test/test_sqlite3.rb
|
157
187
|
- test/test_statement.rb
|
158
188
|
- test/test_statement_execute.rb
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
189
|
+
homepage: https://github.com/sparklemotion/sqlite3-ruby
|
190
|
+
licenses:
|
191
|
+
- BSD-3
|
192
|
+
metadata: {}
|
163
193
|
post_install_message:
|
164
|
-
rdoc_options:
|
165
|
-
- --main
|
194
|
+
rdoc_options:
|
195
|
+
- "--main"
|
166
196
|
- README.rdoc
|
167
|
-
require_paths:
|
197
|
+
require_paths:
|
168
198
|
- lib
|
169
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
170
|
-
|
171
|
-
requirements:
|
199
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
200
|
+
requirements:
|
172
201
|
- - ">="
|
173
|
-
- !ruby/object:Gem::Version
|
174
|
-
hash: 57
|
175
|
-
segments:
|
176
|
-
- 1
|
177
|
-
- 8
|
178
|
-
- 7
|
202
|
+
- !ruby/object:Gem::Version
|
179
203
|
version: 1.8.7
|
180
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
181
|
-
|
182
|
-
requirements:
|
204
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
205
|
+
requirements:
|
183
206
|
- - ">="
|
184
|
-
- !ruby/object:Gem::Version
|
185
|
-
hash: 17
|
186
|
-
segments:
|
187
|
-
- 1
|
188
|
-
- 3
|
189
|
-
- 5
|
207
|
+
- !ruby/object:Gem::Version
|
190
208
|
version: 1.3.5
|
191
209
|
requirements: []
|
192
|
-
|
193
|
-
|
194
|
-
rubygems_version: 1.8.12
|
210
|
+
rubyforge_project:
|
211
|
+
rubygems_version: 2.6.8
|
195
212
|
signing_key:
|
196
|
-
specification_version:
|
197
|
-
summary: This module allows Ruby programs to interface with the SQLite3 database engine
|
198
|
-
|
199
|
-
|
200
|
-
- test/test_integration_open_close.rb
|
201
|
-
- test/test_database_readonly.rb
|
202
|
-
- test/test_statement.rb
|
203
|
-
- test/test_integration_resultset.rb
|
204
|
-
- test/test_deprecated.rb
|
205
|
-
- test/test_backup.rb
|
206
|
-
- test/test_encoding.rb
|
207
|
-
- test/test_sqlite3.rb
|
208
|
-
- test/test_collation.rb
|
209
|
-
- test/test_integration.rb
|
210
|
-
- test/test_statement_execute.rb
|
211
|
-
- test/test_integration_statement.rb
|
212
|
-
- test/test_integration_pending.rb
|
213
|
+
specification_version: 4
|
214
|
+
summary: This module allows Ruby programs to interface with the SQLite3 database engine
|
215
|
+
(http://www.sqlite.org)
|
216
|
+
test_files: []
|