ydbi 0.5.8 → 0.6.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 (86) hide show
  1. checksums.yaml +4 -4
  2. data/.envrc +3 -0
  3. data/.github/workflows/ruby.yml +65 -0
  4. data/.gitignore +19 -0
  5. data/ChangeLog +8 -0
  6. data/Gemfile +5 -0
  7. data/Rakefile +14 -0
  8. data/TODO +44 -0
  9. data/bench/bench.rb +79 -0
  10. data/build/rake_task_lib.rb +186 -0
  11. data/devenv.lock +228 -0
  12. data/devenv.nix +55 -0
  13. data/devenv.yaml +8 -0
  14. data/doc/DBD_SPEC.rdoc +88 -0
  15. data/doc/DBI_SPEC.rdoc +157 -0
  16. data/doc/homepage/contact.html +62 -0
  17. data/doc/homepage/development.html +124 -0
  18. data/doc/homepage/index.html +83 -0
  19. data/doc/homepage/ruby-dbi.css +91 -0
  20. data/lib/dbd/Mysql.rb +137 -0
  21. data/lib/dbd/ODBC.rb +89 -0
  22. data/lib/dbd/Pg.rb +189 -0
  23. data/lib/dbd/SQLite.rb +97 -0
  24. data/lib/dbd/SQLite3.rb +124 -0
  25. data/lib/dbd/mysql/database.rb +405 -0
  26. data/lib/dbd/mysql/driver.rb +125 -0
  27. data/lib/dbd/mysql/statement.rb +188 -0
  28. data/lib/dbd/odbc/database.rb +128 -0
  29. data/lib/dbd/odbc/driver.rb +38 -0
  30. data/lib/dbd/odbc/statement.rb +137 -0
  31. data/lib/dbd/pg/database.rb +508 -0
  32. data/lib/dbd/pg/exec.rb +47 -0
  33. data/lib/dbd/pg/statement.rb +160 -0
  34. data/lib/dbd/pg/tuples.rb +121 -0
  35. data/lib/dbd/pg/type.rb +209 -0
  36. data/lib/dbd/sqlite/database.rb +151 -0
  37. data/lib/dbd/sqlite/statement.rb +125 -0
  38. data/lib/dbd/sqlite3/database.rb +201 -0
  39. data/lib/dbd/sqlite3/statement.rb +78 -0
  40. data/lib/dbi/version.rb +1 -1
  41. data/prototypes/types2.rb +237 -0
  42. data/readme.md +3 -4
  43. data/setup.rb +1585 -0
  44. data/test/DBD_TESTS +50 -0
  45. data/test/TESTING +16 -0
  46. data/test/dbd/general/test_database.rb +206 -0
  47. data/test/dbd/general/test_statement.rb +325 -0
  48. data/test/dbd/general/test_types.rb +295 -0
  49. data/test/dbd/mysql/base.rb +26 -0
  50. data/test/dbd/mysql/down.sql +19 -0
  51. data/test/dbd/mysql/test_blob.rb +18 -0
  52. data/test/dbd/mysql/test_new_methods.rb +7 -0
  53. data/test/dbd/mysql/test_patches.rb +111 -0
  54. data/test/dbd/mysql/up.sql +28 -0
  55. data/test/dbd/odbc/base.rb +30 -0
  56. data/test/dbd/odbc/down.sql +19 -0
  57. data/test/dbd/odbc/test_new_methods.rb +12 -0
  58. data/test/dbd/odbc/test_ping.rb +10 -0
  59. data/test/dbd/odbc/test_statement.rb +44 -0
  60. data/test/dbd/odbc/test_transactions.rb +58 -0
  61. data/test/dbd/odbc/up.sql +33 -0
  62. data/test/dbd/postgresql/base.rb +31 -0
  63. data/test/dbd/postgresql/down.sql +31 -0
  64. data/test/dbd/postgresql/test_arrays.rb +179 -0
  65. data/test/dbd/postgresql/test_async.rb +121 -0
  66. data/test/dbd/postgresql/test_blob.rb +37 -0
  67. data/test/dbd/postgresql/test_bytea.rb +88 -0
  68. data/test/dbd/postgresql/test_ping.rb +10 -0
  69. data/test/dbd/postgresql/test_timestamp.rb +77 -0
  70. data/test/dbd/postgresql/test_transactions.rb +58 -0
  71. data/test/dbd/postgresql/testdbipg.rb +307 -0
  72. data/test/dbd/postgresql/up.sql +60 -0
  73. data/test/dbd/sqlite/base.rb +32 -0
  74. data/test/dbd/sqlite/test_database.rb +30 -0
  75. data/test/dbd/sqlite/test_driver.rb +68 -0
  76. data/test/dbd/sqlite/test_statement.rb +112 -0
  77. data/test/dbd/sqlite/up.sql +25 -0
  78. data/test/dbd/sqlite3/base.rb +32 -0
  79. data/test/dbd/sqlite3/test_database.rb +77 -0
  80. data/test/dbd/sqlite3/test_driver.rb +67 -0
  81. data/test/dbd/sqlite3/test_statement.rb +88 -0
  82. data/test/dbd/sqlite3/up.sql +33 -0
  83. data/test/dbi/tc_dbi.rb +1 -1
  84. data/test/ts_dbd.rb +136 -0
  85. data/ydbi.gemspec +25 -0
  86. metadata +148 -12
@@ -0,0 +1,77 @@
1
+ class TestDatabase < DBDConfig.testbase(:sqlite3)
2
+ def test_database_name
3
+ assert_nothing_raised do
4
+ assert_equal DBDConfig.get_config[dbtype]['dbname'], @dbh.database_name
5
+ end
6
+ end
7
+
8
+ def test_disconnect
9
+ assert_nil @dbh.disconnect
10
+ assert_nil @dbh.instance_variable_get("@db")
11
+ end
12
+
13
+ def test_columns
14
+ assert_equal [
15
+ {
16
+ :name => "name",
17
+ :default => nil,
18
+ :nullable => true,
19
+ :sql_type => 100,
20
+ :precision => 255,
21
+ :type_name => "varchar"
22
+ },
23
+ {
24
+ :name => "age",
25
+ :default => nil,
26
+ :nullable => true,
27
+ :sql_type => 4,
28
+ :type_name => "integer"
29
+ }
30
+ ], @dbh.columns("names")
31
+
32
+ assert_equal [
33
+ {
34
+ :name => "name",
35
+ :default => nil,
36
+ :nullable => true,
37
+ :sql_type => 100,
38
+ :precision => 255,
39
+ :type_name => "varchar"
40
+ },
41
+ {
42
+ :name => "age",
43
+ :default => nil,
44
+ :nullable => true,
45
+ :sql_type => 4,
46
+ :type_name => "integer"
47
+ }
48
+ ], @dbh.columns("names_defined_with_spaces")
49
+ end
50
+
51
+ def test_parse_type
52
+ # Some tests to ensure various whitespace and case styles don't confuse parse_type.
53
+
54
+ match = DBI::DBD::SQLite3.parse_type( 'VARCHAR' )
55
+ assert_equal 'VARCHAR', match[ 1 ]
56
+
57
+ match = DBI::DBD::SQLite3.parse_type( 'VARCHAR(4096)' )
58
+ assert_equal 'VARCHAR', match[ 1 ]
59
+ assert_equal '4096', match[ 3 ]
60
+
61
+ match = DBI::DBD::SQLite3.parse_type( 'varchar(4096)' )
62
+ assert_equal 'varchar', match[ 1 ]
63
+ assert_equal '4096', match[ 3 ]
64
+
65
+ match = DBI::DBD::SQLite3.parse_type( 'VARCHAR( 4096 )' )
66
+ assert_equal 'VARCHAR', match[ 1 ]
67
+ assert_equal '4096', match[ 3 ]
68
+
69
+ match = DBI::DBD::SQLite3.parse_type( 'VARCHAR ( 4096 )' )
70
+ assert_equal 'VARCHAR', match[ 1 ]
71
+ assert_equal '4096', match[ 3 ]
72
+
73
+ match = DBI::DBD::SQLite3.parse_type( 'VARCHAR (4096)' )
74
+ assert_equal 'VARCHAR', match[ 1 ]
75
+ assert_equal '4096', match[ 3 ]
76
+ end
77
+ end
@@ -0,0 +1,67 @@
1
+ class TestDriver < DBDConfig.testbase(:sqlite3)
2
+ def test_require
3
+ require 'dbd/SQLite3'
4
+ assert_kind_of Module, DBI
5
+ assert_kind_of Module, DBI::DBD
6
+ assert_kind_of Module, DBI::DBD::SQLite3
7
+ assert_kind_of Class, DBI::DBD::SQLite3::Driver
8
+ assert_kind_of Class, DBI::DBD::SQLite3::Database
9
+ assert_kind_of Class, DBI::DBD::SQLite3::Statement
10
+ end
11
+
12
+ def test_connect
13
+ config = DBDConfig.get_config['sqlite3']
14
+
15
+ # this tests DBI more than SQLite, but makes sure our chain works with it.
16
+ dbh = DBI.connect("dbi:SQLite3:" + config['dbname'], nil, nil, {})
17
+ assert dbh
18
+ assert_kind_of DBI::DatabaseHandle, dbh
19
+
20
+ # first argument should be a string
21
+ assert_raises(DBI::InterfaceError) do
22
+ DBI::DBD::SQLite3::Driver.new.connect(nil, nil, nil, { })
23
+ end
24
+
25
+ # that string should have some frackin' length
26
+ assert_raises(DBI::InterfaceError) do
27
+ DBI::DBD::SQLite3::Driver.new.connect("", nil, nil, { })
28
+ end
29
+
30
+ # last argument should be a hash
31
+ assert_raises(DBI::InterfaceError) do
32
+ DBI::DBD::SQLite3::Driver.new.connect(config['dbname'], nil, nil, nil)
33
+ end
34
+
35
+ dbh = nil
36
+ driver = nil
37
+ assert_nothing_raised do
38
+ driver = DBI::DBD::SQLite3::Driver.new
39
+ dbh = driver.connect(config['dbname'], nil, nil, { })
40
+ end
41
+
42
+ assert_kind_of DBI::DBD::SQLite3::Driver, driver
43
+ assert_kind_of DBI::DBD::SQLite3::Database, dbh
44
+
45
+ assert !dbh.instance_variable_get("@autocommit")
46
+
47
+ dbh = nil
48
+ driver = nil
49
+ assert_nothing_raised do
50
+ dbh = DBI::DBD::SQLite3::Driver.new.connect(config['dbname'], nil, nil, { "AutoCommit" => true, "sqlite_full_column_names" => true })
51
+ end
52
+
53
+ assert dbh
54
+ assert dbh.instance_variable_get("@attr")
55
+ assert_kind_of SQLite3::Database, dbh.instance_variable_get("@db")
56
+
57
+ assert File.exist?(config['dbname'])
58
+ end
59
+
60
+ def setup
61
+ end
62
+
63
+ def teardown
64
+ config = DBDConfig.get_config['sqlite3']
65
+ FileUtils.rm_f(config['dbname'])
66
+ end
67
+ end
@@ -0,0 +1,88 @@
1
+ class TestStatement < DBDConfig.testbase(:sqlite3)
2
+ def test_constructor
3
+ sth = DBI::DBD::SQLite3::Statement.new("select * from names", @dbh.instance_variable_get("@handle").instance_variable_get("@db"))
4
+
5
+ assert_kind_of DBI::DBD::SQLite3::Statement, sth
6
+ assert sth.instance_variable_get("@db")
7
+ assert_kind_of ::SQLite3::Database, sth.instance_variable_get("@db")
8
+ assert_equal(@dbh.instance_variable_get("@handle").instance_variable_get("@db"), sth.instance_variable_get("@db"))
9
+ assert_kind_of ::SQLite3::Statement, sth.instance_variable_get("@stmt")
10
+ assert_nil(@sth.instance_variable_get("@result"))
11
+
12
+ sth.finish
13
+
14
+ sth = @dbh.prepare("select * from names")
15
+
16
+ assert_kind_of DBI::StatementHandle, sth
17
+ sth.finish
18
+ end
19
+
20
+ def test_bind_param
21
+ sth = DBI::DBD::SQLite3::Statement.new("select * from names", @dbh.instance_variable_get("@handle").instance_variable_get("@db"))
22
+
23
+ assert_raises(DBI::InterfaceError) do
24
+ sth.bind_param(:foo, "monkeys")
25
+ end
26
+
27
+ sth.finish
28
+ end
29
+
30
+ def test_column_info
31
+ @sth = nil
32
+
33
+ assert_nothing_raised do
34
+ @sth = @dbh.prepare("select * from names")
35
+ @sth.execute
36
+ end
37
+
38
+ assert_kind_of Array, @sth.column_info
39
+ assert_kind_of DBI::ColumnInfo, @sth.column_info[0]
40
+ assert_kind_of DBI::ColumnInfo, @sth.column_info[1]
41
+ assert_equal [
42
+ {
43
+ :name => "name",
44
+ :sql_type => 12,
45
+ :precision => 255,
46
+ :type_name => "varchar"
47
+ },
48
+ {
49
+ :name => "age",
50
+ :sql_type => 4,
51
+ :type_name => "integer"
52
+ }
53
+ ], @sth.column_info
54
+
55
+ @sth.finish
56
+ end
57
+
58
+ def test_specific_types
59
+ assert_nothing_raised do
60
+ @sth = @dbh.prepare("insert into db_specific_types_test (dbl) values (?)")
61
+ @sth.execute(11111111.111111)
62
+ @sth.execute(22)
63
+ @sth.finish
64
+ end
65
+
66
+ assert_nothing_raised do
67
+ @sth = @dbh.prepare("select * from db_specific_types_test")
68
+ @sth.execute
69
+ assert_equal([11111111.111111], @sth.fetch)
70
+ assert_equal([22], @sth.fetch)
71
+ @sth.finish
72
+
73
+ assert_equal([[11111111.111111], [22]], @dbh.select_all("select * from db_specific_types_test"))
74
+ end
75
+
76
+ assert_nothing_raised do
77
+ @sth = @dbh.prepare("insert into names (name, age) values (?, ?)")
78
+ @sth.execute(:joseph, 20)
79
+ @sth.finish
80
+
81
+ @sth = @dbh.prepare("select name, age from names where name=?")
82
+ @sth.execute("joseph")
83
+ rows = @sth.fetch_all
84
+ @sth.finish
85
+ assert_equal(rows, [["joseph", 20]])
86
+ end
87
+ end
88
+ end
@@ -0,0 +1,33 @@
1
+ create table names (name varchar(255), age integer);
2
+ ---
3
+ insert into names (name, age) values ("Bob", 21);
4
+ ---
5
+ insert into names (name, age) values ("Joe", 19);
6
+ ---
7
+ insert into names (name, age) values ("Jim", 30);
8
+ ---
9
+ 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));
10
+ ---
11
+ create view view_names as select * from names;
12
+ ---
13
+ create table blob_test (name varchar(255));
14
+ ---
15
+ create table boolean_test (num integer, mybool boolean);
16
+ ---
17
+ create table time_test (mytime time);
18
+ ---
19
+ create table timestamp_test (mytimestamp timestamp);
20
+ ---
21
+ create table bit_test (mybit bit);
22
+ ---
23
+ create table field_types_test (foo integer not null primary key default 1);
24
+ ---
25
+ create table db_specific_types_test (dbl double);
26
+ ---
27
+ create table names_defined_with_spaces ( name varchar( 255 ), age integer );
28
+ ---
29
+ insert into names_defined_with_spaces (name, age) values ("Bob", 21);
30
+ ---
31
+ insert into names_defined_with_spaces (name, age) values ("Joe", 19);
32
+ ---
33
+ insert into names_defined_with_spaces (name, age) values ("Jim", 30);
data/test/dbi/tc_dbi.rb CHANGED
@@ -16,7 +16,7 @@ class TC_DBI < Test::Unit::TestCase
16
16
  end
17
17
 
18
18
  def test_dbi_version
19
- assert_equal("0.5.8", DBI::VERSION)
19
+ assert_equal("0.5.9", DBI::VERSION)
20
20
  end
21
21
 
22
22
  def test_dbd_module
data/test/ts_dbd.rb ADDED
@@ -0,0 +1,136 @@
1
+ require 'rubygems'
2
+ gem 'test-unit'
3
+ # figure out what tests to run
4
+ require 'yaml'
5
+ require "test/unit"
6
+ require 'test/unit/ui/console/testrunner'
7
+
8
+ Dir.chdir("..") if File.basename(Dir.pwd) == "test"
9
+ $LOAD_PATH.unshift(Dir.pwd + "/lib")
10
+ Dir.chdir("test") rescue nil
11
+ $: << '.'
12
+
13
+ module Test::Unit::Assertions
14
+ def build_message(head, template=nil, *arguments)
15
+ template += "\n" + "DATABASE: " + dbtype
16
+ template &&= template.chomp
17
+ return AssertionMessage.new(head, template, arguments)
18
+ end
19
+ end
20
+
21
+ class Class
22
+ def name=(klass_name)
23
+ @name = klass_name
24
+ end
25
+
26
+ def name
27
+ return @name || super
28
+ end
29
+ end
30
+
31
+ module DBDConfig
32
+ @testbase = { }
33
+ @current_dbtype = nil
34
+
35
+ def self.get_config
36
+ config = nil
37
+ if false
38
+ # ydbi is only interested in testing the postgresql database!!
39
+ begin
40
+ config = YAML.load_file(File.join(ENV["HOME"], ".ruby-dbi.test-config.yaml"))
41
+ rescue Exception => e
42
+ config = { }
43
+ config["dbtypes"] = [ ]
44
+ end
45
+ else
46
+ # please keep the definitions in sync between test/ts_dbd.rb and devenv.nix!
47
+ config = { }
48
+ config["dbtypes"] = [ "postgresql" ]
49
+ config["postgresql"] = {"username"=>"ydbi_pg", "password"=>"pg_password", "dbname"=>"ydbi_pg"}
50
+ end
51
+ return config
52
+ end
53
+
54
+ def self.inject_sql(dbh, dbtype, file)
55
+ # splits by --- in the file, strips newlines and the semicolons.
56
+ # this way we can still manually import the file, but use it with our
57
+ # drivers for client-independent injection.
58
+ File.open(file).read.split(/\n*---\n*/, -1).collect { |x| x.gsub!(/\n/, ''); x.sub(/;\z/, '') }.each do |stmt|
59
+ tmp = STDERR.dup
60
+ STDERR.reopen('sql.log', 'a')
61
+ begin
62
+ dbh.commit rescue nil
63
+ dbh["AutoCommit"] = true rescue nil
64
+ dbh.do(stmt)
65
+ dbh.commit unless dbtype == 'sqlite3'
66
+ rescue Exception => e
67
+ tmp.puts "Error injecting '#{stmt}' for db #{dbtype}"
68
+ tmp.puts "Error: #{e.message}"
69
+ end
70
+ STDERR.reopen(tmp)
71
+ end
72
+ end
73
+
74
+ def self.current_dbtype
75
+ @current_dbtype
76
+ end
77
+
78
+ def self.current_dbtype=(setting)
79
+ @current_dbtype = setting
80
+ end
81
+
82
+ def self.testbase(klass_name)
83
+ return @testbase[klass_name]
84
+ end
85
+
86
+ def self.set_testbase(klass_name, klass)
87
+ @testbase[klass_name] = klass
88
+ klass.name = klass_name.to_s
89
+ end
90
+
91
+ def self.suite
92
+ @suite ||= []
93
+ end
94
+ end
95
+
96
+ if __FILE__ == $0
97
+ Dir.chdir("..") if File.basename(Dir.pwd) == "test"
98
+ $LOAD_PATH.unshift(File.join(Dir.pwd, "lib"))
99
+ Dir.chdir("test") rescue nil
100
+
101
+ begin
102
+ require 'dbi'
103
+ rescue LoadError => e
104
+ begin
105
+ require 'rubygems'
106
+ gem 'dbi'
107
+ require 'dbi'
108
+ rescue LoadError => e
109
+ abort "DBI must already be installed or must come with this package for tests to work."
110
+ end
111
+ end
112
+
113
+ Deprecate.set_action(proc { })
114
+
115
+ config = DBDConfig.get_config
116
+
117
+ config["dbtypes"] = ENV["DBTYPES"].split(/\s+/) if ENV["DBTYPES"]
118
+
119
+ if config and config["dbtypes"]
120
+ config["dbtypes"].each do |dbtype|
121
+ unless config[dbtype]
122
+ warn "#{dbtype} is selected for testing but not configured; see test/DBD_TESTS" if false
123
+ next
124
+ end
125
+
126
+ # base.rb is special, see DBD_TESTS
127
+ require "dbd/#{dbtype}/base.rb"
128
+ Dir["dbd/#{dbtype}/test*.rb"].each { |file| require file }
129
+ # run the general tests
130
+ DBDConfig.current_dbtype = dbtype.to_sym
131
+ Dir["dbd/general/test*.rb"].each { |file| load file; @class.name = file; DBDConfig.suite << @class }
132
+ end
133
+ elsif !config["dbtypes"]
134
+ warn "Please see test/DBD_TESTS for information on configuring DBD tests."
135
+ end
136
+ end
data/ydbi.gemspec ADDED
@@ -0,0 +1,25 @@
1
+ # -*- encoding: utf-8 -*-
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'dbi/version'
5
+ Gem::Specification.new do |gem|
6
+ gem.name = 'ydbi'
7
+ gem.version = DBI::VERSION
8
+ gem.authors = ['Erik Hollensbe', 'Christopher Maujean', 'Niklaus Giger', 'Zeno Davatz']
9
+ gem.email = 'zdavatz@ywesee.com'
10
+ gem.homepage = 'https://github.com/zdavatz/ydbi'
11
+ gem.summary = 'A vendor independent interface for accessing databases, similar to Perl\'s DBI'
12
+ gem.description = 'Branch by ywesee com, as our patches were never accepted by upstream'
13
+ gem.licenses = ['MIT']
14
+ gem.files = `git ls-files`.split($/)
15
+ gem.test_file = 'test/ts_dbi.rb'
16
+ gem.executables = ['dbi', 'test_broken_dbi']
17
+ gem.require_paths = ['lib']
18
+ gem.metadata["changelog_uri"] = gem.homepage + "/blob/master/ChangeLog"
19
+
20
+ gem.add_dependency "pg", '>= 1.0.0'
21
+ gem.add_dependency "bigdecimal"
22
+ gem.add_development_dependency "rake"
23
+ gem.add_development_dependency "test-unit"
24
+ gem.add_runtime_dependency 'deprecated', '= 2.0.1'
25
+ end
metadata CHANGED
@@ -1,16 +1,74 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ydbi
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.8
4
+ version: 0.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Erik Hollensbe
8
8
  - Christopher Maujean
9
- autorequire:
9
+ - Niklaus Giger
10
+ - Zeno Davatz
11
+ autorequire:
10
12
  bindir: bin
11
13
  cert_chain: []
12
- date: 2021-03-11 00:00:00.000000000 Z
14
+ date: 2024-01-30 00:00:00.000000000 Z
13
15
  dependencies:
16
+ - !ruby/object:Gem::Dependency
17
+ name: pg
18
+ requirement: !ruby/object:Gem::Requirement
19
+ requirements:
20
+ - - ">="
21
+ - !ruby/object:Gem::Version
22
+ version: 1.0.0
23
+ type: :runtime
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ requirements:
27
+ - - ">="
28
+ - !ruby/object:Gem::Version
29
+ version: 1.0.0
30
+ - !ruby/object:Gem::Dependency
31
+ name: bigdecimal
32
+ requirement: !ruby/object:Gem::Requirement
33
+ requirements:
34
+ - - ">="
35
+ - !ruby/object:Gem::Version
36
+ version: '0'
37
+ type: :runtime
38
+ prerelease: false
39
+ version_requirements: !ruby/object:Gem::Requirement
40
+ requirements:
41
+ - - ">="
42
+ - !ruby/object:Gem::Version
43
+ version: '0'
44
+ - !ruby/object:Gem::Dependency
45
+ name: rake
46
+ requirement: !ruby/object:Gem::Requirement
47
+ requirements:
48
+ - - ">="
49
+ - !ruby/object:Gem::Version
50
+ version: '0'
51
+ type: :development
52
+ prerelease: false
53
+ version_requirements: !ruby/object:Gem::Requirement
54
+ requirements:
55
+ - - ">="
56
+ - !ruby/object:Gem::Version
57
+ version: '0'
58
+ - !ruby/object:Gem::Dependency
59
+ name: test-unit
60
+ requirement: !ruby/object:Gem::Requirement
61
+ requirements:
62
+ - - ">="
63
+ - !ruby/object:Gem::Version
64
+ version: '0'
65
+ type: :development
66
+ prerelease: false
67
+ version_requirements: !ruby/object:Gem::Requirement
68
+ requirements:
69
+ - - ">="
70
+ - !ruby/object:Gem::Version
71
+ version: '0'
14
72
  - !ruby/object:Gem::Dependency
15
73
  name: deprecated
16
74
  requirement: !ruby/object:Gem::Requirement
@@ -31,19 +89,53 @@ executables:
31
89
  - dbi
32
90
  - test_broken_dbi
33
91
  extensions: []
34
- extra_rdoc_files:
35
- - readme.md
36
- - LICENSE
37
- - ChangeLog
92
+ extra_rdoc_files: []
38
93
  files:
94
+ - ".envrc"
95
+ - ".github/workflows/ruby.yml"
96
+ - ".gitignore"
39
97
  - ChangeLog
98
+ - Gemfile
40
99
  - LICENSE
100
+ - Rakefile
101
+ - TODO
102
+ - bench/bench.rb
41
103
  - bin/dbi
42
104
  - bin/test_broken_dbi
43
105
  - build/Rakefile.dbi.rb
106
+ - build/rake_task_lib.rb
107
+ - devenv.lock
108
+ - devenv.nix
109
+ - devenv.yaml
110
+ - doc/DBD_SPEC.rdoc
111
+ - doc/DBI_SPEC.rdoc
112
+ - doc/homepage/contact.html
113
+ - doc/homepage/development.html
114
+ - doc/homepage/index.html
115
+ - doc/homepage/ruby-dbi.css
44
116
  - examples/test1.pl
45
117
  - examples/test1.rb
46
118
  - examples/xmltest.rb
119
+ - lib/dbd/Mysql.rb
120
+ - lib/dbd/ODBC.rb
121
+ - lib/dbd/Pg.rb
122
+ - lib/dbd/SQLite.rb
123
+ - lib/dbd/SQLite3.rb
124
+ - lib/dbd/mysql/database.rb
125
+ - lib/dbd/mysql/driver.rb
126
+ - lib/dbd/mysql/statement.rb
127
+ - lib/dbd/odbc/database.rb
128
+ - lib/dbd/odbc/driver.rb
129
+ - lib/dbd/odbc/statement.rb
130
+ - lib/dbd/pg/database.rb
131
+ - lib/dbd/pg/exec.rb
132
+ - lib/dbd/pg/statement.rb
133
+ - lib/dbd/pg/tuples.rb
134
+ - lib/dbd/pg/type.rb
135
+ - lib/dbd/sqlite/database.rb
136
+ - lib/dbd/sqlite/statement.rb
137
+ - lib/dbd/sqlite3/database.rb
138
+ - lib/dbd/sqlite3/statement.rb
47
139
  - lib/dbi.rb
48
140
  - lib/dbi/base_classes.rb
49
141
  - lib/dbi/base_classes/database.rb
@@ -70,7 +162,48 @@ files:
70
162
  - lib/dbi/utils/timestamp.rb
71
163
  - lib/dbi/utils/xmlformatter.rb
72
164
  - lib/dbi/version.rb
165
+ - prototypes/types2.rb
73
166
  - readme.md
167
+ - setup.rb
168
+ - test/DBD_TESTS
169
+ - test/TESTING
170
+ - test/dbd/general/test_database.rb
171
+ - test/dbd/general/test_statement.rb
172
+ - test/dbd/general/test_types.rb
173
+ - test/dbd/mysql/base.rb
174
+ - test/dbd/mysql/down.sql
175
+ - test/dbd/mysql/test_blob.rb
176
+ - test/dbd/mysql/test_new_methods.rb
177
+ - test/dbd/mysql/test_patches.rb
178
+ - test/dbd/mysql/up.sql
179
+ - test/dbd/odbc/base.rb
180
+ - test/dbd/odbc/down.sql
181
+ - test/dbd/odbc/test_new_methods.rb
182
+ - test/dbd/odbc/test_ping.rb
183
+ - test/dbd/odbc/test_statement.rb
184
+ - test/dbd/odbc/test_transactions.rb
185
+ - test/dbd/odbc/up.sql
186
+ - test/dbd/postgresql/base.rb
187
+ - test/dbd/postgresql/down.sql
188
+ - test/dbd/postgresql/test_arrays.rb
189
+ - test/dbd/postgresql/test_async.rb
190
+ - test/dbd/postgresql/test_blob.rb
191
+ - test/dbd/postgresql/test_bytea.rb
192
+ - test/dbd/postgresql/test_ping.rb
193
+ - test/dbd/postgresql/test_timestamp.rb
194
+ - test/dbd/postgresql/test_transactions.rb
195
+ - test/dbd/postgresql/testdbipg.rb
196
+ - test/dbd/postgresql/up.sql
197
+ - test/dbd/sqlite/base.rb
198
+ - test/dbd/sqlite/test_database.rb
199
+ - test/dbd/sqlite/test_driver.rb
200
+ - test/dbd/sqlite/test_statement.rb
201
+ - test/dbd/sqlite/up.sql
202
+ - test/dbd/sqlite3/base.rb
203
+ - test/dbd/sqlite3/test_database.rb
204
+ - test/dbd/sqlite3/test_driver.rb
205
+ - test/dbd/sqlite3/test_statement.rb
206
+ - test/dbd/sqlite3/up.sql
74
207
  - test/dbi/tc_columninfo.rb
75
208
  - test/dbi/tc_date.rb
76
209
  - test/dbi/tc_dbi.rb
@@ -80,12 +213,15 @@ files:
80
213
  - test/dbi/tc_time.rb
81
214
  - test/dbi/tc_timestamp.rb
82
215
  - test/dbi/tc_types.rb
216
+ - test/ts_dbd.rb
83
217
  - test/ts_dbi.rb
218
+ - ydbi.gemspec
84
219
  homepage: https://github.com/zdavatz/ydbi
85
220
  licenses:
86
221
  - MIT
87
- metadata: {}
88
- post_install_message:
222
+ metadata:
223
+ changelog_uri: https://github.com/zdavatz/ydbi/blob/master/ChangeLog
224
+ post_install_message:
89
225
  rdoc_options: []
90
226
  require_paths:
91
227
  - lib
@@ -93,15 +229,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
93
229
  requirements:
94
230
  - - ">="
95
231
  - !ruby/object:Gem::Version
96
- version: 1.8.0
232
+ version: '0'
97
233
  required_rubygems_version: !ruby/object:Gem::Requirement
98
234
  requirements:
99
235
  - - ">="
100
236
  - !ruby/object:Gem::Version
101
237
  version: '0'
102
238
  requirements: []
103
- rubygems_version: 3.2.4
104
- signing_key:
239
+ rubygems_version: 3.5.3
240
+ signing_key:
105
241
  specification_version: 4
106
242
  summary: A vendor independent interface for accessing databases, similar to Perl's
107
243
  DBI