ydbi 0.5.2 → 0.5.7

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 (93) hide show
  1. checksums.yaml +5 -5
  2. data/.github/workflows/ruby.yml +35 -0
  3. data/.gitignore +8 -0
  4. data/.travis.yml +15 -0
  5. data/ChangeLog +339 -314
  6. data/Gemfile +5 -0
  7. data/Rakefile +10 -0
  8. data/TODO +44 -0
  9. data/bench/bench.rb +79 -0
  10. data/build/rake_task_lib.rb +186 -0
  11. data/doc/DBD_SPEC.rdoc +88 -0
  12. data/doc/DBI_SPEC.rdoc +157 -0
  13. data/doc/homepage/contact.html +62 -0
  14. data/doc/homepage/development.html +124 -0
  15. data/doc/homepage/index.html +83 -0
  16. data/doc/homepage/ruby-dbi.css +91 -0
  17. data/lib/dbd/Mysql.rb +137 -0
  18. data/lib/dbd/ODBC.rb +89 -0
  19. data/lib/dbd/Pg.rb +188 -0
  20. data/lib/dbd/SQLite.rb +97 -0
  21. data/lib/dbd/SQLite3.rb +124 -0
  22. data/lib/dbd/mysql/database.rb +405 -0
  23. data/lib/dbd/mysql/driver.rb +125 -0
  24. data/lib/dbd/mysql/statement.rb +188 -0
  25. data/lib/dbd/odbc/database.rb +128 -0
  26. data/lib/dbd/odbc/driver.rb +38 -0
  27. data/lib/dbd/odbc/statement.rb +137 -0
  28. data/lib/dbd/pg/database.rb +504 -0
  29. data/lib/dbd/pg/exec.rb +47 -0
  30. data/lib/dbd/pg/statement.rb +160 -0
  31. data/lib/dbd/pg/tuples.rb +121 -0
  32. data/lib/dbd/pg/type.rb +209 -0
  33. data/lib/dbd/sqlite/database.rb +151 -0
  34. data/lib/dbd/sqlite/statement.rb +125 -0
  35. data/lib/dbd/sqlite3/database.rb +201 -0
  36. data/lib/dbd/sqlite3/statement.rb +78 -0
  37. data/lib/dbi.rb +14 -17
  38. data/lib/dbi/utils/date.rb +7 -3
  39. data/lib/dbi/version.rb +1 -1
  40. data/prototypes/types2.rb +237 -0
  41. data/readme.md +15 -0
  42. data/setup.rb +1585 -0
  43. data/test/DBD_TESTS +50 -0
  44. data/test/TESTING +16 -0
  45. data/test/dbd/general/test_database.rb +206 -0
  46. data/test/dbd/general/test_statement.rb +326 -0
  47. data/test/dbd/general/test_types.rb +296 -0
  48. data/test/dbd/mysql/base.rb +26 -0
  49. data/test/dbd/mysql/down.sql +19 -0
  50. data/test/dbd/mysql/test_blob.rb +18 -0
  51. data/test/dbd/mysql/test_new_methods.rb +7 -0
  52. data/test/dbd/mysql/test_patches.rb +111 -0
  53. data/test/dbd/mysql/up.sql +28 -0
  54. data/test/dbd/odbc/base.rb +30 -0
  55. data/test/dbd/odbc/down.sql +19 -0
  56. data/test/dbd/odbc/test_new_methods.rb +12 -0
  57. data/test/dbd/odbc/test_ping.rb +10 -0
  58. data/test/dbd/odbc/test_statement.rb +44 -0
  59. data/test/dbd/odbc/test_transactions.rb +58 -0
  60. data/test/dbd/odbc/up.sql +33 -0
  61. data/test/dbd/postgresql/base.rb +31 -0
  62. data/test/dbd/postgresql/down.sql +31 -0
  63. data/test/dbd/postgresql/test_arrays.rb +179 -0
  64. data/test/dbd/postgresql/test_async.rb +121 -0
  65. data/test/dbd/postgresql/test_blob.rb +36 -0
  66. data/test/dbd/postgresql/test_bytea.rb +87 -0
  67. data/test/dbd/postgresql/test_ping.rb +10 -0
  68. data/test/dbd/postgresql/test_timestamp.rb +77 -0
  69. data/test/dbd/postgresql/test_transactions.rb +58 -0
  70. data/test/dbd/postgresql/testdbipg.rb +307 -0
  71. data/test/dbd/postgresql/up.sql +60 -0
  72. data/test/dbd/sqlite/base.rb +32 -0
  73. data/test/dbd/sqlite/test_database.rb +30 -0
  74. data/test/dbd/sqlite/test_driver.rb +68 -0
  75. data/test/dbd/sqlite/test_statement.rb +112 -0
  76. data/test/dbd/sqlite/up.sql +25 -0
  77. data/test/dbd/sqlite3/base.rb +32 -0
  78. data/test/dbd/sqlite3/test_database.rb +77 -0
  79. data/test/dbd/sqlite3/test_driver.rb +67 -0
  80. data/test/dbd/sqlite3/test_statement.rb +88 -0
  81. data/test/dbd/sqlite3/up.sql +33 -0
  82. data/test/dbi/tc_columninfo.rb +4 -9
  83. data/test/dbi/tc_date.rb +2 -9
  84. data/test/dbi/tc_dbi.rb +3 -9
  85. data/test/dbi/tc_row.rb +17 -23
  86. data/test/dbi/tc_sqlbind.rb +6 -7
  87. data/test/dbi/tc_statementhandle.rb +3 -4
  88. data/test/dbi/tc_time.rb +2 -8
  89. data/test/dbi/tc_timestamp.rb +2 -16
  90. data/test/dbi/tc_types.rb +5 -11
  91. data/test/ts_dbd.rb +131 -0
  92. data/ydbi.gemspec +23 -0
  93. metadata +128 -10
@@ -0,0 +1,131 @@
1
+ require 'rubygems'
2
+ gem 'test-unit'
3
+ # figure out what tests to run
4
+ require 'yaml'
5
+ require 'test/unit/testsuite'
6
+ require 'test/unit/ui/console/testrunner'
7
+
8
+ if File.basename(Dir.pwd) == "test"
9
+ $:.unshift('../lib')
10
+ else
11
+ $:.unshift('lib')
12
+ end
13
+
14
+ module Test::Unit::Assertions
15
+ def build_message(head, template=nil, *arguments)
16
+ template += "\n" + "DATABASE: " + dbtype
17
+ template &&= template.chomp
18
+ return AssertionMessage.new(head, template, arguments)
19
+ end
20
+ end
21
+
22
+ class Class
23
+ def name=(klass_name)
24
+ @name = klass_name
25
+ end
26
+
27
+ def name
28
+ return @name || super
29
+ end
30
+ end
31
+
32
+ module DBDConfig
33
+ @testbase = { }
34
+ @current_dbtype = nil
35
+
36
+ def self.get_config
37
+ config = nil
38
+
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
+
46
+ return config
47
+ end
48
+
49
+ def self.inject_sql(dbh, dbtype, file)
50
+ # splits by --- in the file, strips newlines and the semicolons.
51
+ # this way we can still manually import the file, but use it with our
52
+ # drivers for client-independent injection.
53
+ File.open(file).read.split(/\n*---\n*/, -1).collect { |x| x.gsub!(/\n/, ''); x.sub(/;\z/, '') }.each do |stmt|
54
+ tmp = STDERR.dup
55
+ STDERR.reopen('sql.log', 'a')
56
+ begin
57
+ dbh.commit rescue nil
58
+ dbh["AutoCommit"] = true rescue nil
59
+ dbh.do(stmt)
60
+ dbh.commit unless dbtype == 'sqlite3'
61
+ rescue Exception => e
62
+ tmp.puts "Error injecting '#{stmt}' for db #{dbtype}"
63
+ tmp.puts "Error: #{e.message}"
64
+ end
65
+ STDERR.reopen(tmp)
66
+ end
67
+ end
68
+
69
+ def self.current_dbtype
70
+ @current_dbtype
71
+ end
72
+
73
+ def self.current_dbtype=(setting)
74
+ @current_dbtype = setting
75
+ end
76
+
77
+ def self.testbase(klass_name)
78
+ return @testbase[klass_name]
79
+ end
80
+
81
+ def self.set_testbase(klass_name, klass)
82
+ @testbase[klass_name] = klass
83
+ klass.name = klass_name.to_s
84
+ end
85
+
86
+ def self.suite
87
+ @suite ||= []
88
+ end
89
+ end
90
+
91
+ if __FILE__ == $0
92
+ Dir.chdir("..") if File.basename(Dir.pwd) == "test"
93
+ $LOAD_PATH.unshift(File.join(Dir.pwd, "lib"))
94
+ Dir.chdir("test") rescue nil
95
+
96
+ begin
97
+ require 'dbi'
98
+ rescue LoadError => e
99
+ begin
100
+ require 'rubygems'
101
+ gem 'dbi'
102
+ require 'dbi'
103
+ rescue LoadError => e
104
+ abort "DBI must already be installed or must come with this package for tests to work."
105
+ end
106
+ end
107
+
108
+ Deprecate.set_action(proc { })
109
+
110
+ config = DBDConfig.get_config
111
+
112
+ config["dbtypes"] = ENV["DBTYPES"].split(/\s+/) if ENV["DBTYPES"]
113
+
114
+ if config and config["dbtypes"]
115
+ config["dbtypes"].each do |dbtype|
116
+ unless config[dbtype]
117
+ warn "#{dbtype} is selected for testing but not configured; see test/DBD_TESTS"
118
+ next
119
+ end
120
+
121
+ # base.rb is special, see DBD_TESTS
122
+ require "dbd/#{dbtype}/base.rb"
123
+ Dir["dbd/#{dbtype}/test*.rb"].each { |file| require file }
124
+ # run the general tests
125
+ DBDConfig.current_dbtype = dbtype.to_sym
126
+ Dir["dbd/general/test*.rb"].each { |file| load file; @class.name = file; DBDConfig.suite << @class }
127
+ end
128
+ elsif !config["dbtypes"]
129
+ warn "Please see test/DBD_TESTS for information on configuring DBD tests."
130
+ end
131
+ end
@@ -0,0 +1,23 @@
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
+
19
+ gem.add_dependency "pg", '>= 1.0.0'
20
+ gem.add_development_dependency "rake"
21
+ gem.add_development_dependency "test-unit"
22
+ gem.add_runtime_dependency 'deprecated', '= 2.0.1'
23
+ end
metadata CHANGED
@@ -1,16 +1,60 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ydbi
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.2
4
+ version: 0.5.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Erik Hollensbe
8
8
  - Christopher Maujean
9
+ - Niklaus Giger
10
+ - Zeno Davatz
9
11
  autorequire:
10
12
  bindir: bin
11
13
  cert_chain: []
12
- date: 2016-05-10 00:00:00.000000000 Z
14
+ date: 2021-01-20 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: rake
32
+ requirement: !ruby/object:Gem::Requirement
33
+ requirements:
34
+ - - ">="
35
+ - !ruby/object:Gem::Version
36
+ version: '0'
37
+ type: :development
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: test-unit
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'
14
58
  - !ruby/object:Gem::Dependency
15
59
  name: deprecated
16
60
  requirement: !ruby/object:Gem::Requirement
@@ -31,19 +75,50 @@ executables:
31
75
  - dbi
32
76
  - test_broken_dbi
33
77
  extensions: []
34
- extra_rdoc_files:
35
- - readme.md
36
- - LICENSE
37
- - ChangeLog
78
+ extra_rdoc_files: []
38
79
  files:
80
+ - ".github/workflows/ruby.yml"
81
+ - ".gitignore"
82
+ - ".travis.yml"
39
83
  - ChangeLog
84
+ - Gemfile
40
85
  - LICENSE
86
+ - Rakefile
87
+ - TODO
88
+ - bench/bench.rb
41
89
  - bin/dbi
42
90
  - bin/test_broken_dbi
43
91
  - build/Rakefile.dbi.rb
92
+ - build/rake_task_lib.rb
93
+ - doc/DBD_SPEC.rdoc
94
+ - doc/DBI_SPEC.rdoc
95
+ - doc/homepage/contact.html
96
+ - doc/homepage/development.html
97
+ - doc/homepage/index.html
98
+ - doc/homepage/ruby-dbi.css
44
99
  - examples/test1.pl
45
100
  - examples/test1.rb
46
101
  - examples/xmltest.rb
102
+ - lib/dbd/Mysql.rb
103
+ - lib/dbd/ODBC.rb
104
+ - lib/dbd/Pg.rb
105
+ - lib/dbd/SQLite.rb
106
+ - lib/dbd/SQLite3.rb
107
+ - lib/dbd/mysql/database.rb
108
+ - lib/dbd/mysql/driver.rb
109
+ - lib/dbd/mysql/statement.rb
110
+ - lib/dbd/odbc/database.rb
111
+ - lib/dbd/odbc/driver.rb
112
+ - lib/dbd/odbc/statement.rb
113
+ - lib/dbd/pg/database.rb
114
+ - lib/dbd/pg/exec.rb
115
+ - lib/dbd/pg/statement.rb
116
+ - lib/dbd/pg/tuples.rb
117
+ - lib/dbd/pg/type.rb
118
+ - lib/dbd/sqlite/database.rb
119
+ - lib/dbd/sqlite/statement.rb
120
+ - lib/dbd/sqlite3/database.rb
121
+ - lib/dbd/sqlite3/statement.rb
47
122
  - lib/dbi.rb
48
123
  - lib/dbi/base_classes.rb
49
124
  - lib/dbi/base_classes/database.rb
@@ -70,7 +145,48 @@ files:
70
145
  - lib/dbi/utils/timestamp.rb
71
146
  - lib/dbi/utils/xmlformatter.rb
72
147
  - lib/dbi/version.rb
148
+ - prototypes/types2.rb
73
149
  - readme.md
150
+ - setup.rb
151
+ - test/DBD_TESTS
152
+ - test/TESTING
153
+ - test/dbd/general/test_database.rb
154
+ - test/dbd/general/test_statement.rb
155
+ - test/dbd/general/test_types.rb
156
+ - test/dbd/mysql/base.rb
157
+ - test/dbd/mysql/down.sql
158
+ - test/dbd/mysql/test_blob.rb
159
+ - test/dbd/mysql/test_new_methods.rb
160
+ - test/dbd/mysql/test_patches.rb
161
+ - test/dbd/mysql/up.sql
162
+ - test/dbd/odbc/base.rb
163
+ - test/dbd/odbc/down.sql
164
+ - test/dbd/odbc/test_new_methods.rb
165
+ - test/dbd/odbc/test_ping.rb
166
+ - test/dbd/odbc/test_statement.rb
167
+ - test/dbd/odbc/test_transactions.rb
168
+ - test/dbd/odbc/up.sql
169
+ - test/dbd/postgresql/base.rb
170
+ - test/dbd/postgresql/down.sql
171
+ - test/dbd/postgresql/test_arrays.rb
172
+ - test/dbd/postgresql/test_async.rb
173
+ - test/dbd/postgresql/test_blob.rb
174
+ - test/dbd/postgresql/test_bytea.rb
175
+ - test/dbd/postgresql/test_ping.rb
176
+ - test/dbd/postgresql/test_timestamp.rb
177
+ - test/dbd/postgresql/test_transactions.rb
178
+ - test/dbd/postgresql/testdbipg.rb
179
+ - test/dbd/postgresql/up.sql
180
+ - test/dbd/sqlite/base.rb
181
+ - test/dbd/sqlite/test_database.rb
182
+ - test/dbd/sqlite/test_driver.rb
183
+ - test/dbd/sqlite/test_statement.rb
184
+ - test/dbd/sqlite/up.sql
185
+ - test/dbd/sqlite3/base.rb
186
+ - test/dbd/sqlite3/test_database.rb
187
+ - test/dbd/sqlite3/test_driver.rb
188
+ - test/dbd/sqlite3/test_statement.rb
189
+ - test/dbd/sqlite3/up.sql
74
190
  - test/dbi/tc_columninfo.rb
75
191
  - test/dbi/tc_date.rb
76
192
  - test/dbi/tc_dbi.rb
@@ -80,9 +196,12 @@ files:
80
196
  - test/dbi/tc_time.rb
81
197
  - test/dbi/tc_timestamp.rb
82
198
  - test/dbi/tc_types.rb
199
+ - test/ts_dbd.rb
83
200
  - test/ts_dbi.rb
201
+ - ydbi.gemspec
84
202
  homepage: https://github.com/zdavatz/ydbi
85
- licenses: []
203
+ licenses:
204
+ - MIT
86
205
  metadata: {}
87
206
  post_install_message:
88
207
  rdoc_options: []
@@ -92,15 +211,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
92
211
  requirements:
93
212
  - - ">="
94
213
  - !ruby/object:Gem::Version
95
- version: 1.8.0
214
+ version: '0'
96
215
  required_rubygems_version: !ruby/object:Gem::Requirement
97
216
  requirements:
98
217
  - - ">="
99
218
  - !ruby/object:Gem::Version
100
219
  version: '0'
101
220
  requirements: []
102
- rubyforge_project: ydbi
103
- rubygems_version: 2.4.5
221
+ rubygems_version: 3.2.4
104
222
  signing_key:
105
223
  specification_version: 4
106
224
  summary: A vendor independent interface for accessing databases, similar to Perl's