ydbi 0.5.6 → 0.5.7

Sign up to get free protection for your applications and to get access to all the features.
Files changed (92) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/ruby.yml +35 -0
  3. data/.gitignore +8 -0
  4. data/.travis.yml +15 -0
  5. data/ChangeLog +321 -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 +13 -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/setup.rb +1585 -0
  42. data/test/DBD_TESTS +50 -0
  43. data/test/TESTING +16 -0
  44. data/test/dbd/general/test_database.rb +206 -0
  45. data/test/dbd/general/test_statement.rb +326 -0
  46. data/test/dbd/general/test_types.rb +296 -0
  47. data/test/dbd/mysql/base.rb +26 -0
  48. data/test/dbd/mysql/down.sql +19 -0
  49. data/test/dbd/mysql/test_blob.rb +18 -0
  50. data/test/dbd/mysql/test_new_methods.rb +7 -0
  51. data/test/dbd/mysql/test_patches.rb +111 -0
  52. data/test/dbd/mysql/up.sql +28 -0
  53. data/test/dbd/odbc/base.rb +30 -0
  54. data/test/dbd/odbc/down.sql +19 -0
  55. data/test/dbd/odbc/test_new_methods.rb +12 -0
  56. data/test/dbd/odbc/test_ping.rb +10 -0
  57. data/test/dbd/odbc/test_statement.rb +44 -0
  58. data/test/dbd/odbc/test_transactions.rb +58 -0
  59. data/test/dbd/odbc/up.sql +33 -0
  60. data/test/dbd/postgresql/base.rb +31 -0
  61. data/test/dbd/postgresql/down.sql +31 -0
  62. data/test/dbd/postgresql/test_arrays.rb +179 -0
  63. data/test/dbd/postgresql/test_async.rb +121 -0
  64. data/test/dbd/postgresql/test_blob.rb +36 -0
  65. data/test/dbd/postgresql/test_bytea.rb +87 -0
  66. data/test/dbd/postgresql/test_ping.rb +10 -0
  67. data/test/dbd/postgresql/test_timestamp.rb +77 -0
  68. data/test/dbd/postgresql/test_transactions.rb +58 -0
  69. data/test/dbd/postgresql/testdbipg.rb +307 -0
  70. data/test/dbd/postgresql/up.sql +60 -0
  71. data/test/dbd/sqlite/base.rb +32 -0
  72. data/test/dbd/sqlite/test_database.rb +30 -0
  73. data/test/dbd/sqlite/test_driver.rb +68 -0
  74. data/test/dbd/sqlite/test_statement.rb +112 -0
  75. data/test/dbd/sqlite/up.sql +25 -0
  76. data/test/dbd/sqlite3/base.rb +32 -0
  77. data/test/dbd/sqlite3/test_database.rb +77 -0
  78. data/test/dbd/sqlite3/test_driver.rb +67 -0
  79. data/test/dbd/sqlite3/test_statement.rb +88 -0
  80. data/test/dbd/sqlite3/up.sql +33 -0
  81. data/test/dbi/tc_columninfo.rb +4 -9
  82. data/test/dbi/tc_date.rb +2 -9
  83. data/test/dbi/tc_dbi.rb +3 -9
  84. data/test/dbi/tc_row.rb +17 -23
  85. data/test/dbi/tc_sqlbind.rb +6 -7
  86. data/test/dbi/tc_statementhandle.rb +3 -4
  87. data/test/dbi/tc_time.rb +2 -8
  88. data/test/dbi/tc_timestamp.rb +2 -16
  89. data/test/dbi/tc_types.rb +5 -11
  90. data/test/ts_dbd.rb +131 -0
  91. data/ydbi.gemspec +23 -0
  92. 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.6
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: 2018-01-23 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.7.3
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