ydbi 0.5.7 → 0.5.8

Sign up to get free protection for your applications and to get access to all the features.
Files changed (83) hide show
  1. checksums.yaml +4 -4
  2. data/ChangeLog +4 -0
  3. data/lib/dbi/version.rb +1 -1
  4. data/readme.md +4 -3
  5. data/test/dbi/tc_dbi.rb +1 -1
  6. metadata +7 -125
  7. data/.github/workflows/ruby.yml +0 -35
  8. data/.gitignore +0 -8
  9. data/.travis.yml +0 -15
  10. data/Gemfile +0 -5
  11. data/Rakefile +0 -10
  12. data/TODO +0 -44
  13. data/bench/bench.rb +0 -79
  14. data/build/rake_task_lib.rb +0 -186
  15. data/doc/DBD_SPEC.rdoc +0 -88
  16. data/doc/DBI_SPEC.rdoc +0 -157
  17. data/doc/homepage/contact.html +0 -62
  18. data/doc/homepage/development.html +0 -124
  19. data/doc/homepage/index.html +0 -83
  20. data/doc/homepage/ruby-dbi.css +0 -91
  21. data/lib/dbd/Mysql.rb +0 -137
  22. data/lib/dbd/ODBC.rb +0 -89
  23. data/lib/dbd/Pg.rb +0 -188
  24. data/lib/dbd/SQLite.rb +0 -97
  25. data/lib/dbd/SQLite3.rb +0 -124
  26. data/lib/dbd/mysql/database.rb +0 -405
  27. data/lib/dbd/mysql/driver.rb +0 -125
  28. data/lib/dbd/mysql/statement.rb +0 -188
  29. data/lib/dbd/odbc/database.rb +0 -128
  30. data/lib/dbd/odbc/driver.rb +0 -38
  31. data/lib/dbd/odbc/statement.rb +0 -137
  32. data/lib/dbd/pg/database.rb +0 -504
  33. data/lib/dbd/pg/exec.rb +0 -47
  34. data/lib/dbd/pg/statement.rb +0 -160
  35. data/lib/dbd/pg/tuples.rb +0 -121
  36. data/lib/dbd/pg/type.rb +0 -209
  37. data/lib/dbd/sqlite/database.rb +0 -151
  38. data/lib/dbd/sqlite/statement.rb +0 -125
  39. data/lib/dbd/sqlite3/database.rb +0 -201
  40. data/lib/dbd/sqlite3/statement.rb +0 -78
  41. data/prototypes/types2.rb +0 -237
  42. data/setup.rb +0 -1585
  43. data/test/DBD_TESTS +0 -50
  44. data/test/TESTING +0 -16
  45. data/test/dbd/general/test_database.rb +0 -206
  46. data/test/dbd/general/test_statement.rb +0 -326
  47. data/test/dbd/general/test_types.rb +0 -296
  48. data/test/dbd/mysql/base.rb +0 -26
  49. data/test/dbd/mysql/down.sql +0 -19
  50. data/test/dbd/mysql/test_blob.rb +0 -18
  51. data/test/dbd/mysql/test_new_methods.rb +0 -7
  52. data/test/dbd/mysql/test_patches.rb +0 -111
  53. data/test/dbd/mysql/up.sql +0 -28
  54. data/test/dbd/odbc/base.rb +0 -30
  55. data/test/dbd/odbc/down.sql +0 -19
  56. data/test/dbd/odbc/test_new_methods.rb +0 -12
  57. data/test/dbd/odbc/test_ping.rb +0 -10
  58. data/test/dbd/odbc/test_statement.rb +0 -44
  59. data/test/dbd/odbc/test_transactions.rb +0 -58
  60. data/test/dbd/odbc/up.sql +0 -33
  61. data/test/dbd/postgresql/base.rb +0 -31
  62. data/test/dbd/postgresql/down.sql +0 -31
  63. data/test/dbd/postgresql/test_arrays.rb +0 -179
  64. data/test/dbd/postgresql/test_async.rb +0 -121
  65. data/test/dbd/postgresql/test_blob.rb +0 -36
  66. data/test/dbd/postgresql/test_bytea.rb +0 -87
  67. data/test/dbd/postgresql/test_ping.rb +0 -10
  68. data/test/dbd/postgresql/test_timestamp.rb +0 -77
  69. data/test/dbd/postgresql/test_transactions.rb +0 -58
  70. data/test/dbd/postgresql/testdbipg.rb +0 -307
  71. data/test/dbd/postgresql/up.sql +0 -60
  72. data/test/dbd/sqlite/base.rb +0 -32
  73. data/test/dbd/sqlite/test_database.rb +0 -30
  74. data/test/dbd/sqlite/test_driver.rb +0 -68
  75. data/test/dbd/sqlite/test_statement.rb +0 -112
  76. data/test/dbd/sqlite/up.sql +0 -25
  77. data/test/dbd/sqlite3/base.rb +0 -32
  78. data/test/dbd/sqlite3/test_database.rb +0 -77
  79. data/test/dbd/sqlite3/test_driver.rb +0 -67
  80. data/test/dbd/sqlite3/test_statement.rb +0 -88
  81. data/test/dbd/sqlite3/up.sql +0 -33
  82. data/test/ts_dbd.rb +0 -131
  83. data/ydbi.gemspec +0 -23
@@ -1,28 +0,0 @@
1
- create table names (
2
- name varchar(255),
3
- age integer
4
- ) Engine=InnoDB;
5
- ---
6
- insert into names (name, age) values ('Joe', 19);
7
- ---
8
- insert into names (name, age) values ('Jim', 30);
9
- ---
10
- insert into names (name, age) values ('Bob', 21);
11
- ---
12
- create table precision_test (text_field varchar(20) primary key not null, integer_field integer, decimal_field decimal(2,1), numeric_field numeric(30,6));
13
- ---
14
- CREATE TABLE blob_test (name VARCHAR(30), data BLOB) Engine=InnoDB;
15
- ---
16
- create view view_names as select * from names;
17
- ---
18
- create table boolean_test (num integer, mybool boolean) Engine=InnoDB;
19
- ---
20
- create table time_test (mytime time) Engine=InnoDB;
21
- ---
22
- create table timestamp_test (mytimestamp timestamp) Engine=InnoDB;
23
- ---
24
- create table bit_test (mybit bit) Engine=InnoDB;
25
- ---
26
- create table field_types_test (foo integer not null primary key default 1);
27
- ---
28
- create table db_specific_types_test (ts timestamp, dt date);
@@ -1,30 +0,0 @@
1
- require 'fileutils'
2
-
3
- DBDConfig.set_testbase(:odbc, Class.new(Test::Unit::TestCase) do
4
-
5
- def dbtype
6
- "odbc"
7
- end
8
-
9
- def test_base
10
- assert_equal(@dbh.driver_name, "odbc")
11
- assert_kind_of(DBI::DBD::ODBC::Database, @dbh.instance_variable_get(:@handle))
12
- end
13
-
14
- def set_base_dbh
15
- config = DBDConfig.get_config['odbc']
16
- @dbh = DBI.connect("dbi:ODBC:#{config['dbname']}", config['username'], config['password'])
17
- end
18
-
19
- def setup
20
- set_base_dbh
21
- DBDConfig.inject_sql(@dbh, dbtype, "dbd/odbc/up.sql")
22
- end
23
-
24
- def teardown
25
- @sth.finish if @sth && !@sth.finished?
26
- DBDConfig.inject_sql(@dbh, dbtype, "dbd/odbc/down.sql")
27
- @dbh.disconnect
28
- end
29
- end
30
- )
@@ -1,19 +0,0 @@
1
- drop view view_names;
2
- ---
3
- drop table names;
4
- ---
5
- drop table blob_test;
6
- ---
7
- drop table boolean_test;
8
- ---
9
- drop table time_test;
10
- ---
11
- drop table timestamp_test;
12
- ---
13
- drop table bit_test;
14
- ---
15
- drop table field_types_test;
16
- ---
17
- drop table db_specific_types_test;
18
- ---
19
- drop table precision_test;
@@ -1,12 +0,0 @@
1
- class TestODBCPing < DBDConfig.testbase(:odbc)
2
- def test_database_name
3
- #
4
- # NOTE this test will fail if the database is not named "rubytest". I
5
- # don't think there's a good way to get around this, so I've set it to
6
- # what I typically use in my odbc.ini. - erikh
7
- #
8
- assert_nothing_raised do
9
- assert_equal "rubytest", @dbh.database_name
10
- end
11
- end
12
- end
@@ -1,10 +0,0 @@
1
- class TestODBCPing < DBDConfig.testbase(:odbc)
2
- def test_ping
3
- config = DBDConfig.get_config['odbc']
4
- dbh = DBI.connect("dbi:ODBC:#{config['dbname']}", config['username'], config['password'])
5
- assert dbh
6
- assert dbh.ping
7
- dbh.disconnect
8
- assert_raises(DBI::InterfaceError) { dbh.ping }
9
- end
10
- end
@@ -1,44 +0,0 @@
1
- class TestODBCStatement < DBDConfig.testbase(:odbc)
2
- def test_column_info
3
- sth = nil
4
-
5
- assert_nothing_raised do
6
- sth = @dbh.prepare("select * from names")
7
- sth.execute
8
- end
9
-
10
- assert_kind_of Array, sth.column_info
11
- assert_kind_of DBI::ColumnInfo, sth.column_info[0]
12
- assert_kind_of DBI::ColumnInfo, sth.column_info[1]
13
- # XXX odbc seems to have a problem with this every other edition of unixodbc or so.
14
- # yes, I know this test is important.
15
- # assert_equal [
16
- # {
17
- # :table=>"names",
18
- # :precision=>255,
19
- # :searchable=>true,
20
- # :name=>"name",
21
- # :unsigned=>true,
22
- # :length=>255,
23
- # :sql_type=>12,
24
- # :scale=>0,
25
- # :nullable=>true,
26
- # :type_name=>"VARCHAR"
27
- # },
28
- # {
29
- # :table=>"names",
30
- # :precision=>10,
31
- # :searchable=>true,
32
- # :name=>"age",
33
- # :unsigned=>false,
34
- # :length=>4,
35
- # :sql_type=>4,
36
- # :scale=>0,
37
- # :nullable=>true,
38
- # :type_name=>"INTEGER"
39
- # }
40
- # ], sth.column_info
41
-
42
- sth.finish
43
- end
44
- end
@@ -1,58 +0,0 @@
1
- class TestODBCTransaction < DBDConfig.testbase(:odbc)
2
- def test_rollback
3
- dbh = get_dbh
4
- dbh["AutoCommit"] = false
5
- @sth = dbh.prepare('insert into names (name, age) values (?, ?)')
6
- @sth.execute("Foo", 51)
7
- dbh.rollback
8
- assert_equal 1, @sth.rows
9
- @sth.finish
10
-
11
-
12
- @sth = dbh.prepare('select name, age from names where name=?')
13
- @sth.execute("Foo")
14
- assert !@sth.fetch
15
- @sth.finish
16
- dbh.disconnect
17
- end
18
-
19
- def test_commit
20
- dbh = get_dbh
21
- dbh["AutoCommit"] = false
22
- @sth = dbh.prepare('insert into names (name, age) values (?, ?)')
23
- @sth.execute("Foo", 51)
24
- dbh.commit
25
- assert_equal 1, @sth.rows
26
- @sth.finish
27
-
28
- @sth = dbh.prepare('select name, age from names where name=?')
29
- @sth.execute("Foo")
30
- row = @sth.fetch
31
- assert row
32
- assert_equal "Foo", row[0]
33
- assert_equal 51, row[1]
34
- @sth.finish
35
- dbh.disconnect
36
- end
37
-
38
- def test_select_transaction
39
- # per bug #10466
40
- dbh = get_dbh
41
- dbh["AutoCommit"] = false
42
- @sth = dbh.prepare('select * from test_insert(?, ?)');
43
- @sth.execute("Foo", 51)
44
- dbh.rollback
45
- @sth.finish
46
-
47
- @sth = dbh.prepare('select name, age from names where name=?')
48
- @sth.execute("Foo")
49
- assert !@sth.fetch
50
- @sth.finish
51
- dbh.disconnect
52
- end
53
-
54
- def get_dbh
55
- config = DBDConfig.get_config['odbc']
56
- DBI.connect("dbi:ODBC:#{config['dbname']}", config['username'], config['password'])
57
- end
58
- end
data/test/dbd/odbc/up.sql DELETED
@@ -1,33 +0,0 @@
1
- create table names (
2
- name varchar(255),
3
- age integer
4
- );
5
- ---
6
- insert into names (name, age) values ('Joe', 19);
7
- ---
8
- insert into names (name, age) values ('Jim', 30);
9
- ---
10
- insert into names (name, age) values ('Bob', 21);
11
- ---
12
- create table precision_test (text_field varchar(20) primary key not null, integer_field integer, decimal_field decimal(2,1), numeric_field numeric(30,6));
13
- ---
14
- CREATE TABLE blob_test (name VARCHAR(30), data OID);
15
- ---
16
- create view view_names as select * from names;
17
- ---
18
- create or replace function test_insert (varchar(255), integer)
19
- returns integer
20
- language sql
21
- as 'insert into names (name, age) values ($1, $2); select age from names where name = $1';
22
- ---
23
- create table boolean_test (num integer, mybool boolean);
24
- ---
25
- create table time_test (mytime time);
26
- ---
27
- create table timestamp_test (mytimestamp timestamp);
28
- ---
29
- create table bit_test (mybit bit);
30
- ---
31
- create table field_types_test (foo integer not null primary key default 1);
32
- ---
33
- create table db_specific_types_test (foo integer);
@@ -1,31 +0,0 @@
1
- require 'fileutils'
2
-
3
- DBDConfig.set_testbase(:postgresql, Class.new(Test::Unit::TestCase) do
4
-
5
- def dbtype
6
- "postgresql"
7
- end
8
-
9
- def test_base
10
- assert_equal(@dbh.driver_name, "Pg")
11
- assert_kind_of(DBI::DBD::Pg::Database, @dbh.instance_variable_get(:@handle))
12
- end
13
-
14
- def set_base_dbh
15
- config = DBDConfig.get_config['postgresql']
16
- @dbh = DBI.connect("dbi:Pg:#{config['dbname']}", config['username'], config['password'])
17
- end
18
-
19
- def setup
20
- set_base_dbh
21
- DBDConfig.inject_sql(@dbh, dbtype, "dbd/postgresql/up.sql")
22
- end
23
-
24
- def teardown
25
- @sth.finish if @sth && !@sth.finished?
26
- config = DBDConfig.get_config['postgresql']
27
- DBDConfig.inject_sql(@dbh, dbtype, "dbd/postgresql/down.sql")
28
- @dbh.disconnect
29
- end
30
- end
31
- )
@@ -1,31 +0,0 @@
1
- drop view view_names;
2
- ---
3
- drop table names;
4
- ---
5
- drop table blob_test;
6
- ---
7
- drop table boolean_test;
8
- ---
9
- drop table time_test;
10
- ---
11
- drop table timestamp_test;
12
- ---
13
- drop table bit_test;
14
- ---
15
- drop table field_types_test;
16
- ---
17
- drop table db_specific_types_test;
18
- ---
19
- drop table array_test;
20
- ---
21
- drop table bytea_test;
22
- ---
23
- drop table precision_test;
24
- ---
25
- drop table enum_type_test;
26
- ---
27
- drop type enum_test;
28
- ---
29
- drop schema schema1 cascade;
30
- ---
31
- drop schema schema2 cascade;
@@ -1,179 +0,0 @@
1
- class TestPostgresArray < DBDConfig.testbase(:postgresql)
2
- def test_array_type
3
- assert_nothing_raised do
4
- cols = @dbh.columns("array_test")
5
- assert_equal(
6
- [
7
- {
8
- :name =>"foo",
9
- :default =>nil,
10
- :primary =>nil,
11
- :scale =>nil,
12
- :sql_type =>DBI::SQL_INTEGER,
13
- :nullable =>true,
14
- :indexed =>false,
15
- :precision =>-1,
16
- :type_name =>"integer",
17
- :unique =>nil,
18
- :array_of_type => true
19
- },
20
- {
21
- :name =>"bar",
22
- :default =>nil,
23
- :primary =>nil,
24
- :scale =>nil,
25
- :sql_type =>DBI::SQL_INTEGER,
26
- :nullable =>true,
27
- :indexed =>false,
28
- :precision =>-1,
29
- :type_name =>"integer",
30
- :unique =>nil,
31
- :array_of_type => true
32
- },
33
- {
34
- :name =>"baz",
35
- :default =>nil,
36
- :primary =>nil,
37
- :scale =>nil,
38
- :sql_type =>DBI::SQL_INTEGER,
39
- :nullable =>true,
40
- :indexed =>false,
41
- :precision =>-1,
42
- :type_name =>"integer",
43
- :unique =>nil,
44
- :array_of_type => true
45
- },
46
- {
47
- :array_of_type=>true,
48
- :unique=>nil,
49
- :precision=>-1,
50
- :name=>"quux",
51
- :default=>nil,
52
- :indexed=>false,
53
- :scale=>nil,
54
- :primary=>nil,
55
- :sql_type=>12,
56
- :nullable=>true,
57
- :type_name=>"character varying"
58
- }
59
- ], cols.collect { |x| x.reject { |key, value| key == :dbi_type } }
60
- )
61
-
62
- assert_equal(([DBI::DBD::Pg::Type::Array] * 4), cols.collect { |x| x["dbi_type"].class })
63
- assert_equal((([DBI::Type::Integer] * 3) + [DBI::Type::Varchar]), cols.collect { |x| x["dbi_type"].base_type })
64
- end
65
- end
66
-
67
- def test_array_parser
68
- # string representation
69
- assert_nothing_raised do
70
- sth = @dbh.prepare('insert into array_test (foo) values (?)')
71
- sth.execute('{1,2,3}')
72
- sth.finish
73
- end
74
-
75
- assert_nothing_raised do
76
- sth = @dbh.prepare('insert into array_test (foo) values (?)')
77
- sth.execute([1,2,3])
78
- sth.finish
79
- end
80
-
81
- assert_nothing_raised do
82
- sth = @dbh.prepare('insert into array_test (quux) values (?)')
83
- sth.execute(["Hello\\ World", "Again\\"])
84
- sth.finish
85
- end
86
-
87
- assert_nothing_raised do
88
- sth = @dbh.prepare('select foo from array_test where foo is not null')
89
- sth.execute
90
- assert_equal(
91
- [
92
- [[1,2,3]],
93
- [[1,2,3]],
94
- ], sth.fetch_all
95
- )
96
- sth.finish
97
-
98
- sth = @dbh.prepare('select quux from array_test where quux is not null')
99
- sth.execute
100
-
101
- assert_equal(
102
- [
103
- [["Hello\\ World", "Again\\"]]
104
- ], sth.fetch_all
105
- )
106
-
107
- sth.finish
108
- end
109
- end
110
-
111
- def test_array_boundaries
112
- # bar has a max extents of 3
113
- sth = @dbh.prepare('insert into array_test (bar) values (?)')
114
-
115
- assert_nothing_raised do
116
- sth.execute('{1,2,3}')
117
- end
118
-
119
- # XXX postgresql does not enforce extents on single-dimension arrays
120
- assert_nothing_raised do
121
- sth.execute('{1,2,3,4}')
122
- end
123
-
124
- sth.finish
125
- sth = @dbh.prepare('insert into array_test(baz) values (?)')
126
-
127
- assert_nothing_raised do
128
- sth.execute('{{1,2,3}, {1,2,3}}')
129
- end
130
-
131
- assert_nothing_raised do
132
- # XXX for the record, I have no fucking idea why this works, what
133
- # it's technically represented as and what backwards array
134
- # implementation would allow it to work.
135
- #
136
- # I'm hoping it'll break on some future version of postgresql so I
137
- # can fix it.
138
- sth.execute('{1,2,3}')
139
- end
140
-
141
- assert_raises(DBI::ProgrammingError) do
142
- sth.execute('{{1,2,3,4}, {1,2,3}}')
143
- end
144
-
145
- assert_raises(DBI::ProgrammingError) do
146
- sth.execute('{{1,2,3}, {1,2,3,4}}')
147
- end
148
-
149
- sth.finish
150
- end
151
-
152
- def test_array_type_parser
153
- pc = DBI::DBD::Pg::Type::Array
154
-
155
- assert_nothing_raised do
156
- po = pc.new(DBI::Type::Integer)
157
- assert_equal([1,2,3], po.parse("{1,2,3}"))
158
- assert_equal([[1,2,3],[4,5,6]], po.parse("{{1,2,3},{4,5,6}}"))
159
- end
160
-
161
- assert_nothing_raised do
162
- po = pc.new(DBI::Type::Varchar)
163
- assert_equal(["one", "two", "three"], po.parse("{\"one\",\"two\",\"three\"}"))
164
- assert_equal([["one"], ["two\\"]], po.parse("{{\"one\"},{\"two\\\\\"}}"))
165
- assert_equal([["one", "two\\"], ["three\\", "four"]], po.parse("{{\"one\",\"two\\\\\"},{\"three\\\\\",\"four\"}}"))
166
- end
167
- end
168
-
169
- def test_array_generator
170
- pg = DBI::DBD::Pg
171
-
172
- assert_nothing_raised do
173
- assert_equal("{1,2,3}", pg.generate_array([1,2,3]))
174
- assert_equal("{{1,2,3},{1,2,3}}", pg.generate_array([[1,2,3],[1,2,3]]))
175
- assert_equal("{\"one\",\"two\"}", pg.generate_array(["one", "two"]))
176
- assert_equal("{\"hello\\\\ world\",\"again\"}", pg.generate_array(["hello\\ world", "again"]))
177
- end
178
- end
179
- end