ydbi 0.5.7 → 0.5.8

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 (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,91 +0,0 @@
1
- BODY {
2
- background-color: #666;
3
- }
4
-
5
- a:visited {
6
- color: #144;
7
- }
8
-
9
- a {
10
- color: white;
11
- }
12
-
13
- a:active {
14
- text-decoration: none;
15
- }
16
-
17
- a:hover {
18
- text-decoration: none;
19
- }
20
-
21
- .body-container {
22
- margin-left: auto;
23
- margin-right: auto;
24
- margin-top: 50px;
25
- width: 80%;
26
- background-color: #AAA;
27
- color: black;
28
- padding: 10px;
29
- border: 1px solid black;
30
- }
31
-
32
- h1 {
33
- display: block;
34
- margin: 2em;
35
- border: 1px solid black;
36
- padding: 1em;
37
- color: #444;
38
- font-size: 1em;
39
- text-align: center;
40
- font-family: sans-serif;
41
- }
42
-
43
- .main-container {
44
- margin: 2em;
45
- }
46
-
47
- .nav-container {
48
- display: block;
49
- border: 1px solid black;
50
- float: left;
51
- vertical-align; top:
52
- font-size: .8em;
53
- min-width: 20%;
54
- margin-right: 2em;
55
- margin-bottom: 2em;
56
- }
57
-
58
- .nav-container h1 {
59
- margin: 0;
60
- padding: 0;
61
- border: 0;
62
- border-bottom: 1px solid black;
63
- font-size: 1.2em;
64
- font-weight: bold;
65
- color: black;
66
- text-align: center;
67
- font-family: sans-serif;
68
- }
69
-
70
- .nav-container a {
71
- display: block;
72
- padding: 5px;
73
- }
74
-
75
- .nav-container a:hover {
76
- background-color: #444;
77
- color: white;
78
- font-weight: bold;
79
- }
80
-
81
- .copyright {
82
- display: block;
83
- margin: 2em;
84
- border: 1px solid black;
85
- padding: 1em;
86
- color: #444;
87
- font-size: 0.6em;
88
- text-align: center;
89
- font-family: sans-serif;
90
- }
91
-
data/lib/dbd/Mysql.rb DELETED
@@ -1,137 +0,0 @@
1
- #--
2
- # Copyright (c) 2001, 2002 Michael Neumann <neumann@s-direktnet.de>
3
- #
4
- # All rights reserved.
5
- #
6
- # Redistribution and use in source and binary forms, with or without
7
- # modification, are permitted provided that the following conditions
8
- # are met:
9
- # 1. Redistributions of source code must retain the above copyright
10
- # notice, this list of conditions and the following disclaimer.
11
- # 2. Redistributions in binary form must reproduce the above copyright
12
- # notice, this list of conditions and the following disclaimer in the
13
- # documentation and/or other materials provided with the distribution.
14
- # 3. The name of the author may not be used to endorse or promote products
15
- # derived from this software without specific prior written permission.
16
- #
17
- # THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
18
- # INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
19
- # AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
20
- # THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
21
- # EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
22
- # PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
23
- # OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
24
- # WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
25
- # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
26
- # ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27
- #
28
- # $Id$
29
- #++
30
-
31
- begin
32
- require 'rubygems'
33
- gem 'mysql'
34
- gem 'dbi'
35
- rescue LoadError => e
36
- end
37
-
38
- require 'dbi'
39
- require "mysql"
40
- require "thread" # for Mutex
41
-
42
- module DBI
43
- module DBD
44
- #
45
- # DBD::Mysql - Database Driver for the MySQL database system.
46
- #
47
- # Requires DBI and the 'mysql' gem or package to work.
48
- #
49
- # Only things that extend DBI's results are documented.
50
- #
51
- module Mysql
52
- VERSION = "0.4.4"
53
- DESCRIPTION = "MySQL DBI DBD, Leverages 'mysql' low-level driver"
54
-
55
- MyError = ::MysqlError
56
-
57
- #
58
- # returns 'Mysql'
59
- #
60
- # See DBI::TypeUtil#convert for more information.
61
- #
62
- def self.driver_name
63
- "Mysql"
64
- end
65
-
66
- DBI::TypeUtil.register_conversion(driver_name) do |obj|
67
- newobj = case obj
68
- when ::DBI::Binary
69
- obj = obj.to_s.gsub(/\\/) { "\\\\" }
70
- obj = obj.to_s.gsub(/'/) { "''" }
71
- "'#{obj}'"
72
- when ::DateTime
73
- "'#{obj.strftime("%Y-%m-%d %H:%M:%S")}'"
74
- when ::Time
75
- "'#{obj.strftime("%H:%M:%S")}'"
76
- when ::Date
77
- "'#{obj.strftime("%Y-%m-%d")}'"
78
- when ::NilClass
79
- "NULL"
80
- else
81
- obj
82
- end
83
-
84
- if newobj.object_id == obj.object_id
85
- [newobj, true]
86
- else
87
- [newobj, false]
88
- end
89
- end
90
- end
91
- end
92
- end
93
-
94
- #
95
- # Utility Methods for the MySQL DBD.
96
- #
97
-
98
- module DBI::DBD::Mysql::Util
99
- private
100
-
101
- # Raise exception using information from MysqlError object e.
102
- # For state value, use SQLSTATE value if mysql-ruby defines
103
- # sqlstate method, otherwise nil.
104
- def error(e)
105
- sqlstate = e.respond_to?("sqlstate") ? e.sqlstate : nil
106
- raise DBI::DatabaseError.new(e.message, e.errno, sqlstate)
107
- end
108
-
109
- end # module Util
110
-
111
- module DBI::DBD::Mysql::Type
112
- #
113
- # Custom handling for DATE types in MySQL. See DBI::Type for more
114
- # information.
115
- #
116
- class Date < DBI::Type::Null
117
- def self.parse(obj)
118
- obj = super
119
- return obj unless obj
120
-
121
- case obj.class
122
- when ::Date
123
- return obj
124
- when ::String
125
- return ::Date.strptime(obj, "%Y-%m-%d")
126
- else
127
- return ::Date.parse(obj.to_s) if obj.respond_to? :to_s
128
- return ::Date.parse(obj.to_str) if obj.respond_to? :to_str
129
- return obj
130
- end
131
- end
132
- end
133
- end
134
-
135
- require 'dbd/mysql/driver'
136
- require 'dbd/mysql/database'
137
- require 'dbd/mysql/statement'
data/lib/dbd/ODBC.rb DELETED
@@ -1,89 +0,0 @@
1
- #--
2
- # DBD::ODBC
3
- #
4
- # Copyright (c) 2001-2004 Michael Neumann <mneumann@ntecs.de>
5
- #
6
- # All rights reserved.
7
- #
8
- # Redistribution and use in source and binary forms, with or without
9
- # modification, are permitted provided that the following conditions
10
- # are met:
11
- # 1. Redistributions of source code must retain the above copyright
12
- # notice, this list of conditions and the following disclaimer.
13
- # 2. Redistributions in binary form must reproduce the above copyright
14
- # notice, this list of conditions and the following disclaimer in the
15
- # documentation and/or other materials provided with the distribution.
16
- # 3. The name of the author may not be used to endorse or promote products
17
- # derived from this software without specific prior written permission.
18
- #
19
- # THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
20
- # INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
21
- # AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
22
- # THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
23
- # EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
24
- # PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
25
- # OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
26
- # WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
27
- # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
28
- # ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29
- #
30
- # $Id$
31
- #++
32
-
33
- $:.delete(".") # FIXME oh for the love of pete..
34
- require "odbc"
35
- $: << "."
36
-
37
- begin
38
- require 'rubygems'
39
- gem 'dbi'
40
- rescue LoadError => e
41
- end
42
-
43
- require 'dbi'
44
-
45
- module DBI
46
- module DBD
47
- #
48
- # DBD::ODBC - ODBC Database Driver
49
- #
50
- # Requires DBI and the 'ruby-odbc' package to work, and unixodbc (iodbc
51
- # WILL NOT WORK).
52
- #
53
- # Only things that extend DBI's results are documented.
54
- #
55
- module ODBC
56
-
57
- VERSION = "0.2.5"
58
- DESCRIPTION = "ODBC DBI DBD"
59
-
60
- def self.driver_name
61
- "odbc"
62
- end
63
-
64
- DBI::TypeUtil.register_conversion(driver_name) do |obj|
65
- newobj = if obj.nil?
66
- nil
67
- else
68
- case obj
69
- when ::Date
70
- ::ODBC::Date.new(obj)
71
- when ::Time
72
- ::ODBC::Time.new(obj)
73
- when ::DateTime
74
- ::ODBC::Timestamp.new(obj)
75
- else
76
- obj.to_s
77
- end
78
- end
79
- [newobj, false]
80
- end
81
-
82
- ODBCErr = ::ODBC::Error
83
- end # module ODBC
84
- end # module DBD
85
- end # module DBI
86
-
87
- require 'dbd/odbc/driver'
88
- require 'dbd/odbc/database'
89
- require 'dbd/odbc/statement'
data/lib/dbd/Pg.rb DELETED
@@ -1,188 +0,0 @@
1
- #--
2
- # DBD::Pg
3
- #
4
- # Copyright (c) 2001, 2002, 2003 Jim Weirich, Michael Neumann <mneumann@ntecs.de>
5
- # Copyright (c) 2008 Erik Hollensbe, Christopher Maujean
6
- #
7
- # All rights reserved.
8
- #
9
- # Redistribution and use in source and binary forms, with or without
10
- # modification, are permitted provided that the following conditions
11
- # are met:
12
- # 1. Redistributions of source code must retain the above copyright
13
- # notice, this list of conditions and the following disclaimer.
14
- # 2. Redistributions in binary form must reproduce the above copyright
15
- # notice, this list of conditions and the following disclaimer in the
16
- # documentation and/or other materials provided with the distribution.
17
- # 3. The name of the author may not be used to endorse or promote products
18
- # derived from this software without specific prior written permission.
19
- #
20
- # THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES,
21
- # INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
22
- # AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
23
- # THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
24
- # EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
25
- # PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
26
- # OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
27
- # WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
28
- # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
29
- # ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30
- #++
31
-
32
- begin
33
- require 'rubygems'
34
- gem 'pg'
35
- gem 'ydbi'
36
- rescue Exception => e
37
- end
38
-
39
- require 'dbi'
40
- require 'pg'
41
-
42
- module DBI
43
- module DBD
44
- #
45
- # DBD::Pg - Database Driver for the PostgreSQL database system.
46
- #
47
- # Requires DBI and the 'pg' gem or package to work.
48
- #
49
- # Only things that extend DBI's results are documented.
50
- #
51
- module Pg
52
- VERSION = DBI::VERSION
53
- DESCRIPTION = "PostgreSQL DBI DBD"
54
-
55
- #
56
- # returns 'Pg'
57
- #
58
- # See DBI::TypeUtil#convert for more information.
59
- #
60
- def self.driver_name
61
- "Pg"
62
- end
63
-
64
- #
65
- # This method takes a ruby Array and converts it to PostgreSQL array syntax.
66
- #
67
- def self.generate_array(obj)
68
- # XXX yarr, there be recursion here, and it's probably not a good idea.
69
- output = "{"
70
- obj.each do |item|
71
- case item
72
- when ::Array
73
- output += generate_array(item)
74
- else
75
- generated = DBI::TypeUtil.convert(driver_name, item)
76
- generated = case item
77
- when String
78
- # in strings, escapes are doubled and the quotes are different.
79
- # this gets *really* ugly and needs to be well-tested
80
- "\"#{generated.gsub(/\\/) { "\\\\" }}\""
81
- when Fixnum
82
- generated.to_s
83
- end
84
- output += generated
85
- end
86
- output += "," # FIXME technically, delimiters are variable
87
- end
88
-
89
- output.sub(/,$/, '}')
90
- end
91
-
92
- #
93
- # A quote helper, this uses the new syntax in PostgreSQL 8.2 and up.
94
- #
95
- def self.quote(value)
96
- "E'#{ value.gsub(/\\/){ '\\\\' }.gsub(/'/){ '\\\'' } }'"
97
- end
98
-
99
- #
100
- # Parse a postgresql type. Returns a hash with these fields (as Symbol)
101
- #
102
- # * ftype: the full type, as passed in to this method.
103
- # * type: the type stripped of all attribute information.
104
- # * size: the LHS of the attribute information, typically the precision.
105
- # * decimal: the RHS of the attribute information, typically the scale.
106
- # * array: true if this type is actually an array of that type.
107
- #
108
- def self.parse_type(ftype)
109
- type = ftype
110
- pos = ftype.index('(')
111
- decimal = nil
112
- size = nil
113
- array_of_type = nil
114
-
115
- if pos != nil
116
- type = ftype[0..pos-1]
117
- size = ftype[pos+1..-2]
118
- pos = size.index(',')
119
- if pos != nil
120
- size, decimal = size.split(',', 2)
121
- size = size.to_i
122
- decimal = decimal.to_i
123
- else
124
- size = size.to_i
125
- end
126
- end
127
-
128
- if type =~ /\[\]$/
129
- type.sub!(/\[\]$/, '')
130
- array_of_type = true
131
- end
132
-
133
- return {
134
- :ftype => ftype.dup,
135
- :type => type,
136
- :size => size,
137
- :decimal => decimal,
138
- :array => array_of_type
139
- }
140
- end
141
-
142
- #
143
- # See DBI::BaseDriver.
144
- #
145
- class Driver < DBI::BaseDriver
146
- def initialize
147
- super(DBI::VERSION)
148
- end
149
-
150
- ## List of datasources for this database.
151
- def data_sources
152
- []
153
- end
154
-
155
- ## Connect to a database.
156
- def connect(dbname, user, auth, attr)
157
- Database.new(dbname, user, auth, attr)
158
- end
159
- end
160
- end # module Pg
161
- end # module DBD
162
- end # module DBI
163
-
164
- require 'dbd/pg/type'
165
- require 'dbd/pg/database'
166
- require 'dbd/pg/statement'
167
- require 'dbd/pg/tuples'
168
- require 'dbd/pg/exec'
169
-
170
- pg = DBI::DBD::Pg
171
-
172
- DBI::TypeUtil.register_conversion(pg.driver_name) do |obj|
173
- newobj = case obj
174
- when ::DateTime
175
- obj.strftime("%Y-%m-%dT%H:%M:%S.%N")
176
- when ::Time
177
- ::DateTime.parse(obj.to_s).strftime("%H:%M:%S.%N")
178
- when ::Date
179
- obj.strftime("%Y-%m-%d")
180
- when ::Array
181
- pg.generate_array(obj)
182
- when DBI::DBD::Pg::Type::ByteA
183
- obj.escaped
184
- else
185
- obj
186
- end
187
- [newobj, false]
188
- end