sqlite3 1.7.3-x86_64-darwin → 2.0.0-x86_64-darwin

Sign up to get free protection for your applications and to get access to all the features.
Files changed (61) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +152 -0
  3. data/CONTRIBUTING.md +23 -1
  4. data/FAQ.md +0 -43
  5. data/INSTALLATION.md +13 -5
  6. data/LICENSE +18 -22
  7. data/README.md +75 -4
  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 +535 -482
  14. data/ext/sqlite3/database.h +7 -4
  15. data/ext/sqlite3/exception.c +111 -92
  16. data/ext/sqlite3/exception.h +3 -1
  17. data/ext/sqlite3/extconf.rb +21 -22
  18. data/ext/sqlite3/sqlite3.c +159 -115
  19. data/ext/sqlite3/sqlite3_ruby.h +2 -2
  20. data/ext/sqlite3/statement.c +516 -300
  21. data/ext/sqlite3/statement.h +3 -3
  22. data/ext/sqlite3/timespec.h +20 -0
  23. data/lib/sqlite3/3.0/sqlite3_native.bundle +0 -0
  24. data/lib/sqlite3/3.1/sqlite3_native.bundle +0 -0
  25. data/lib/sqlite3/3.2/sqlite3_native.bundle +0 -0
  26. data/lib/sqlite3/3.3/sqlite3_native.bundle +0 -0
  27. data/lib/sqlite3/constants.rb +171 -47
  28. data/lib/sqlite3/database.rb +105 -165
  29. data/lib/sqlite3/errors.rb +26 -1
  30. data/lib/sqlite3/pragmas.rb +126 -136
  31. data/lib/sqlite3/resultset.rb +14 -97
  32. data/lib/sqlite3/statement.rb +58 -13
  33. data/lib/sqlite3/value.rb +17 -20
  34. data/lib/sqlite3/version.rb +1 -21
  35. data/lib/sqlite3.rb +6 -4
  36. metadata +3 -28
  37. data/API_CHANGES.md +0 -49
  38. data/ChangeLog.cvs +0 -88
  39. data/Gemfile +0 -10
  40. data/LICENSE-DEPENDENCIES +0 -20
  41. data/lib/sqlite3/translator.rb +0 -117
  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
@@ -1,95 +0,0 @@
1
- require 'helper'
2
-
3
- module SQLite3
4
- class TestDatabaseFlags < SQLite3::TestCase
5
- def setup
6
- File.unlink 'test-flags.db' if File.exist?('test-flags.db')
7
- @db = SQLite3::Database.new('test-flags.db')
8
- @db.execute("CREATE TABLE foos (id integer)")
9
- @db.close
10
- end
11
-
12
- def teardown
13
- @db.close unless @db.closed?
14
- File.unlink 'test-flags.db' if File.exist?('test-flags.db')
15
- end
16
-
17
- def test_open_database_flags_constants
18
- defined_to_date = [:READONLY, :READWRITE, :CREATE, :DELETEONCLOSE,
19
- :EXCLUSIVE, :MAIN_DB, :TEMP_DB, :TRANSIENT_DB,
20
- :MAIN_JOURNAL, :TEMP_JOURNAL, :SUBJOURNAL,
21
- :MASTER_JOURNAL, :NOMUTEX, :FULLMUTEX]
22
- if SQLite3::SQLITE_VERSION_NUMBER > 3007002
23
- defined_to_date += [:AUTOPROXY, :SHAREDCACHE, :PRIVATECACHE, :WAL]
24
- end
25
- if SQLite3::SQLITE_VERSION_NUMBER > 3007007
26
- defined_to_date += [:URI]
27
- end
28
- if SQLite3::SQLITE_VERSION_NUMBER > 3007013
29
- defined_to_date += [:MEMORY]
30
- end
31
- assert defined_to_date.sort == SQLite3::Constants::Open.constants.sort
32
- end
33
-
34
- def test_open_database_flags_conflicts_with_readonly
35
- assert_raise(RuntimeError) do
36
- @db = SQLite3::Database.new('test-flags.db', :flags => 2, :readonly => true)
37
- end
38
- end
39
-
40
- def test_open_database_flags_conflicts_with_readwrite
41
- assert_raise(RuntimeError) do
42
- @db = SQLite3::Database.new('test-flags.db', :flags => 2, :readwrite => true)
43
- end
44
- end
45
-
46
- def test_open_database_readonly_flags
47
- @db = SQLite3::Database.new('test-flags.db', :flags => SQLite3::Constants::Open::READONLY)
48
- assert @db.readonly?
49
- end
50
-
51
- def test_open_database_readwrite_flags
52
- @db = SQLite3::Database.new('test-flags.db', :flags => SQLite3::Constants::Open::READWRITE)
53
- assert !@db.readonly?
54
- end
55
-
56
- def test_open_database_readonly_flags_cant_open
57
- File.unlink 'test-flags.db'
58
- assert_raise(SQLite3::CantOpenException) do
59
- @db = SQLite3::Database.new('test-flags.db', :flags => SQLite3::Constants::Open::READONLY)
60
- end
61
- end
62
-
63
- def test_open_database_readwrite_flags_cant_open
64
- File.unlink 'test-flags.db'
65
- assert_raise(SQLite3::CantOpenException) do
66
- @db = SQLite3::Database.new('test-flags.db', :flags => SQLite3::Constants::Open::READWRITE)
67
- end
68
- end
69
-
70
- def test_open_database_misuse_flags
71
- assert_raise(SQLite3::MisuseException) do
72
- flags = SQLite3::Constants::Open::READONLY | SQLite3::Constants::Open::READWRITE # <== incompatible flags
73
- @db = SQLite3::Database.new('test-flags.db', :flags => flags)
74
- end
75
- end
76
-
77
- def test_open_database_create_flags
78
- File.unlink 'test-flags.db'
79
- flags = SQLite3::Constants::Open::READWRITE | SQLite3::Constants::Open::CREATE
80
- @db = SQLite3::Database.new('test-flags.db', :flags => flags) do |db|
81
- db.execute("CREATE TABLE foos (id integer)")
82
- db.execute("INSERT INTO foos (id) VALUES (12)")
83
- end
84
- assert File.exist?('test-flags.db')
85
- end
86
-
87
- def test_open_database_exotic_flags
88
- flags = SQLite3::Constants::Open::READWRITE | SQLite3::Constants::Open::CREATE
89
- exotic_flags = SQLite3::Constants::Open::NOMUTEX | SQLite3::Constants::Open::TEMP_DB
90
- @db = SQLite3::Database.new('test-flags.db', :flags => flags | exotic_flags)
91
- @db.execute("INSERT INTO foos (id) VALUES (12)")
92
- assert @db.changes == 1
93
- end
94
- end
95
- end
@@ -1,36 +0,0 @@
1
- require 'helper'
2
-
3
- module SQLite3
4
- class TestDatabaseReadonly < SQLite3::TestCase
5
- def setup
6
- File.unlink 'test-readonly.db' if File.exist?('test-readonly.db')
7
- @db = SQLite3::Database.new('test-readonly.db')
8
- @db.execute("CREATE TABLE foos (id integer)")
9
- @db.close
10
- end
11
-
12
- def teardown
13
- @db.close unless @db.closed?
14
- File.unlink 'test-readonly.db' if File.exist?('test-readonly.db')
15
- end
16
-
17
- def test_open_readonly_database
18
- @db = SQLite3::Database.new('test-readonly.db', :readonly => true)
19
- assert @db.readonly?
20
- end
21
-
22
- def test_open_readonly_not_exists_database
23
- File.unlink 'test-readonly.db'
24
- assert_raise(SQLite3::CantOpenException) do
25
- @db = SQLite3::Database.new('test-readonly.db', :readonly => true)
26
- end
27
- end
28
-
29
- def test_insert_readonly_database
30
- @db = SQLite3::Database.new('test-readonly.db', :readonly => true)
31
- assert_raise(SQLite3::ReadOnlyException) do
32
- @db.execute("INSERT INTO foos (id) VALUES (12)")
33
- end
34
- end
35
- end
36
- end
@@ -1,41 +0,0 @@
1
- require 'helper'
2
-
3
- module SQLite3
4
- class TestDatabaseReadwrite < SQLite3::TestCase
5
- def setup
6
- File.unlink 'test-readwrite.db' if File.exist?('test-readwrite.db')
7
- @db = SQLite3::Database.new('test-readwrite.db')
8
- @db.execute("CREATE TABLE foos (id integer)")
9
- @db.close
10
- end
11
-
12
- def teardown
13
- @db.close unless @db.closed?
14
- File.unlink 'test-readwrite.db' if File.exist?('test-readwrite.db')
15
- end
16
-
17
- def test_open_readwrite_database
18
- @db = SQLite3::Database.new('test-readwrite.db', :readwrite => true)
19
- assert !@db.readonly?
20
- end
21
-
22
- def test_open_readwrite_readonly_database
23
- assert_raise(RuntimeError) do
24
- @db = SQLite3::Database.new('test-readwrite.db', :readwrite => true, :readonly => true)
25
- end
26
- end
27
-
28
- def test_open_readwrite_not_exists_database
29
- File.unlink 'test-readwrite.db'
30
- assert_raise(SQLite3::CantOpenException) do
31
- @db = SQLite3::Database.new('test-readwrite.db', :readonly => true)
32
- end
33
- end
34
-
35
- def test_insert_readwrite_database
36
- @db = SQLite3::Database.new('test-readwrite.db', :readwrite => true)
37
- @db.execute("INSERT INTO foos (id) VALUES (12)")
38
- assert @db.changes == 1
39
- end
40
- end
41
- end
@@ -1,49 +0,0 @@
1
- require 'helper'
2
-
3
- module SQLite3
4
- class TestDeprecated < SQLite3::TestCase
5
- def setup
6
- super
7
- @warn_before = $-w
8
- $-w = false
9
- @db = SQLite3::Database.new(':memory:')
10
- @db.execute 'CREATE TABLE test_table (name text, age int)'
11
- end
12
-
13
- def teardown
14
- super
15
- $-w = @warn_before
16
- @db.close
17
- end
18
-
19
- def test_query_with_many_bind_params_not_nil
20
- rs = @db.query('select ?, ?', 1, 2)
21
- assert_equal [[1, 2]], rs.to_a
22
- rs.close
23
- end
24
-
25
- def test_execute_with_many_bind_params_not_nil
26
- assert_equal [[1, 2]], @db.execute("select ?, ?", 1, 2).to_a
27
- end
28
-
29
- def test_query_with_many_bind_params
30
- rs = @db.query("select ?, ?", nil, 1)
31
- assert_equal [[nil, 1]], rs.to_a
32
- rs.close
33
- end
34
-
35
- def test_query_with_nil_bind_params
36
- rs = @db.query("select 'foo'", nil)
37
- assert_equal [['foo']], rs.to_a
38
- rs.close
39
- end
40
-
41
- def test_execute_with_many_bind_params
42
- assert_equal [[nil, 1]], @db.execute("select ?, ?", nil, 1)
43
- end
44
-
45
- def test_execute_with_nil_bind_params
46
- assert_equal [['foo']], @db.execute("select 'foo'", nil)
47
- end
48
- end
49
- end
@@ -1,165 +0,0 @@
1
- # -*- coding: utf-8 -*-
2
-
3
- require 'helper'
4
-
5
- module SQLite3
6
- class TestEncoding < SQLite3::TestCase
7
- def setup
8
- @db = SQLite3::Database.new(':memory:')
9
- @create = "create table ex(id int, data string)"
10
- @insert = "insert into ex(id, data) values (?, ?)"
11
- @db.execute(@create);
12
- end
13
-
14
- def teardown
15
- @db.close
16
- end
17
-
18
- def test_select_encoding_on_utf_16
19
- str = "foo"
20
- utf16 = ([1].pack("I") == [1].pack("N")) ? "UTF-16BE" : "UTF-16LE"
21
- db = SQLite3::Database.new(':memory:'.encode(utf16))
22
- db.execute @create
23
- db.execute "insert into ex (id, data) values (1, \"#{str}\")"
24
-
25
- stmt = db.prepare 'select * from ex where data = ?'
26
- ['US-ASCII', utf16, 'EUC-JP', 'UTF-8'].each do |enc|
27
- stmt.bind_param 1, str.encode(enc)
28
- assert_equal 1, stmt.to_a.length
29
- stmt.reset!
30
- end
31
- stmt.close
32
- end
33
-
34
- def test_insert_encoding
35
- str = "foo"
36
- utf16 = ([1].pack("I") == [1].pack("N")) ? "UTF-16BE" : "UTF-16LE"
37
- db = SQLite3::Database.new(':memory:'.encode(utf16))
38
- db.execute @create
39
- stmt = db.prepare @insert
40
-
41
- ['US-ASCII', utf16, 'EUC-JP', 'UTF-8'].each_with_index do |enc,i|
42
- stmt.bind_param 1, i
43
- stmt.bind_param 2, str.encode(enc)
44
- stmt.to_a
45
- stmt.reset!
46
- end
47
- stmt.close
48
-
49
- db.execute('select data from ex').flatten.each do |s|
50
- assert_equal str, s
51
- end
52
- end
53
-
54
- def test_default_internal_is_honored
55
- warn_before = $-w
56
- $-w = false
57
-
58
- before_enc = Encoding.default_internal
59
-
60
- str = "壁に耳あり、障子に目あり"
61
- stmt = @db.prepare('insert into ex(data) values (?)')
62
- stmt.bind_param 1, str
63
- stmt.step
64
- stmt.close
65
-
66
- Encoding.default_internal = 'EUC-JP'
67
- string = @db.execute('select data from ex').first.first
68
-
69
- assert_equal Encoding.default_internal, string.encoding
70
- assert_equal str.encode('EUC-JP'), string
71
- assert_equal str, string.encode(str.encoding)
72
- ensure
73
- Encoding.default_internal = before_enc
74
- $-w = warn_before
75
- end
76
-
77
- def test_blob_is_binary
78
- str = "猫舌"
79
- @db.execute('create table foo(data text)')
80
- stmt = @db.prepare('insert into foo(data) values (?)')
81
- stmt.bind_param(1, SQLite3::Blob.new(str))
82
- stmt.step
83
- stmt.close
84
-
85
- string = @db.execute('select data from foo').first.first
86
- assert_equal Encoding.find('ASCII-8BIT'), string.encoding
87
- assert_equal str, string.force_encoding('UTF-8')
88
- end
89
-
90
- def test_blob_is_ascii8bit
91
- str = "猫舌"
92
- @db.execute('create table foo(data text)')
93
- stmt = @db.prepare('insert into foo(data) values (?)')
94
- stmt.bind_param(1, str.dup.force_encoding("ASCII-8BIT"))
95
- stmt.step
96
- stmt.close
97
-
98
- string = @db.execute('select data from foo').first.first
99
- assert_equal Encoding.find('ASCII-8BIT'), string.encoding
100
- assert_equal str, string.force_encoding('UTF-8')
101
- end
102
-
103
- def test_blob_with_eucjp
104
- str = "猫舌".encode("EUC-JP")
105
- @db.execute('create table foo(data text)')
106
- stmt = @db.prepare('insert into foo(data) values (?)')
107
- stmt.bind_param(1, SQLite3::Blob.new(str))
108
- stmt.step
109
- stmt.close
110
-
111
- string = @db.execute('select data from foo').first.first
112
- assert_equal Encoding.find('ASCII-8BIT'), string.encoding
113
- assert_equal str, string.force_encoding('EUC-JP')
114
- end
115
-
116
- def test_db_with_eucjp
117
- db = SQLite3::Database.new(':memory:'.encode('EUC-JP'))
118
- assert_equal(Encoding.find('UTF-8'), db.encoding)
119
- end
120
-
121
- def test_db_with_utf16
122
- utf16 = ([1].pack("I") == [1].pack("N")) ? "UTF-16BE" : "UTF-16LE"
123
-
124
- db = SQLite3::Database.new(':memory:'.encode(utf16))
125
- assert_equal(Encoding.find(utf16), db.encoding)
126
- end
127
-
128
- def test_statement_eucjp
129
- str = "猫舌"
130
- @db.execute("insert into ex(data) values ('#{str}')".encode('EUC-JP'))
131
- row = @db.execute("select data from ex")
132
- assert_equal @db.encoding, row.first.first.encoding
133
- assert_equal str, row.first.first
134
- end
135
-
136
- def test_statement_utf8
137
- str = "猫舌"
138
- @db.execute("insert into ex(data) values ('#{str}')")
139
- row = @db.execute("select data from ex")
140
- assert_equal @db.encoding, row.first.first.encoding
141
- assert_equal str, row.first.first
142
- end
143
-
144
- def test_encoding
145
- assert_equal Encoding.find("UTF-8"), @db.encoding
146
- end
147
-
148
- def test_utf_8
149
- str = "猫舌"
150
- @db.execute(@insert, [10, str])
151
- row = @db.execute("select data from ex")
152
- assert_equal @db.encoding, row.first.first.encoding
153
- assert_equal str, row.first.first
154
- end
155
-
156
- def test_euc_jp
157
- str = "猫舌".encode('EUC-JP')
158
- @db.execute(@insert, [10, str])
159
- row = @db.execute("select data from ex")
160
- assert_equal @db.encoding, row.first.first.encoding
161
- assert_equal str.encode('UTF-8'), row.first.first
162
- end
163
-
164
- end if RUBY_VERSION >= '1.9.1'
165
- end