dbd-pg 0.3.8 → 0.3.9
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.
- data/lib/dbd/Pg.rb +9 -9
- data/lib/dbd/pg/statement.rb +6 -6
- data/test/dbd/postgresql/testdbipg.rb +27 -6
- metadata +41 -24
data/lib/dbd/Pg.rb
CHANGED
@@ -3,16 +3,16 @@
|
|
3
3
|
#
|
4
4
|
# Copyright (c) 2001, 2002, 2003 Jim Weirich, Michael Neumann <mneumann@ntecs.de>
|
5
5
|
# Copyright (c) 2008 Erik Hollensbe, Christopher Maujean
|
6
|
-
#
|
6
|
+
#
|
7
7
|
# All rights reserved.
|
8
8
|
#
|
9
|
-
# Redistribution and use in source and binary forms, with or without
|
10
|
-
# modification, are permitted provided that the following conditions
|
9
|
+
# Redistribution and use in source and binary forms, with or without
|
10
|
+
# modification, are permitted provided that the following conditions
|
11
11
|
# are met:
|
12
|
-
# 1. Redistributions of source code must retain the above copyright
|
12
|
+
# 1. Redistributions of source code must retain the above copyright
|
13
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
|
14
|
+
# 2. Redistributions in binary form must reproduce the above copyright
|
15
|
+
# notice, this list of conditions and the following disclaimer in the
|
16
16
|
# documentation and/or other materials provided with the distribution.
|
17
17
|
# 3. The name of the author may not be used to endorse or promote products
|
18
18
|
# derived from this software without specific prior written permission.
|
@@ -49,12 +49,12 @@ module DBI
|
|
49
49
|
# Only things that extend DBI's results are documented.
|
50
50
|
#
|
51
51
|
module Pg
|
52
|
-
VERSION = "0.3.
|
52
|
+
VERSION = "0.3.9"
|
53
53
|
DESCRIPTION = "PostgreSQL DBI DBD"
|
54
54
|
|
55
55
|
#
|
56
56
|
# returns 'Pg'
|
57
|
-
#
|
57
|
+
#
|
58
58
|
# See DBI::TypeUtil#convert for more information.
|
59
59
|
#
|
60
60
|
def self.driver_name
|
@@ -110,7 +110,7 @@ module DBI
|
|
110
110
|
pos = ftype.index('(')
|
111
111
|
decimal = nil
|
112
112
|
size = nil
|
113
|
-
array_of_type = nil
|
113
|
+
array_of_type = nil
|
114
114
|
|
115
115
|
if pos != nil
|
116
116
|
type = ftype[0..pos-1]
|
data/lib/dbd/pg/statement.rb
CHANGED
@@ -14,7 +14,7 @@ class DBI::DBD::Pg::Statement < DBI::BaseStatement
|
|
14
14
|
super(db)
|
15
15
|
@db = db
|
16
16
|
@sql = sql
|
17
|
-
@stmt_name = PG_STMT_NAME_PREFIX + self.object_id.to_s
|
17
|
+
@stmt_name = PG_STMT_NAME_PREFIX + self.object_id.to_s + Time.now.to_f.to_s
|
18
18
|
@result = nil
|
19
19
|
@bindvars = []
|
20
20
|
@prepared = false
|
@@ -33,17 +33,17 @@ class DBI::DBD::Pg::Statement < DBI::BaseStatement
|
|
33
33
|
# DBI::Binary objects are passed in.
|
34
34
|
#
|
35
35
|
def execute
|
36
|
-
# replace DBI::Binary object by oid returned by lo_import
|
36
|
+
# replace DBI::Binary object by oid returned by lo_import
|
37
37
|
@bindvars.collect! do |var|
|
38
38
|
if var.is_a? DBI::Binary then
|
39
39
|
oid = @db.__blob_create(PGconn::INV_WRITE)
|
40
40
|
@db.__blob_write(oid, var.to_s)
|
41
|
-
oid
|
41
|
+
oid
|
42
42
|
else
|
43
43
|
var
|
44
44
|
end
|
45
45
|
end
|
46
|
-
|
46
|
+
|
47
47
|
internal_prepare
|
48
48
|
|
49
49
|
if not @db['AutoCommit'] then
|
@@ -93,7 +93,7 @@ class DBI::DBD::Pg::Statement < DBI::BaseStatement
|
|
93
93
|
|
94
94
|
#
|
95
95
|
# Attributes:
|
96
|
-
#
|
96
|
+
#
|
97
97
|
# If +pg_row_count+ is requested and the statement has already executed,
|
98
98
|
# postgres will return what it believes is the row count.
|
99
99
|
#
|
@@ -110,7 +110,7 @@ class DBI::DBD::Pg::Statement < DBI::BaseStatement
|
|
110
110
|
end
|
111
111
|
end
|
112
112
|
|
113
|
-
private
|
113
|
+
private
|
114
114
|
|
115
115
|
#
|
116
116
|
# A native binding helper.
|
@@ -1,5 +1,10 @@
|
|
1
1
|
require 'dbd/Pg'
|
2
2
|
|
3
|
+
module DBI
|
4
|
+
class ForcedError < ::DBI::Error
|
5
|
+
end
|
6
|
+
end
|
7
|
+
|
3
8
|
######################################################################
|
4
9
|
# Test the PostgreSql DBD driver. This test exercises options
|
5
10
|
# difficult to test through the standard DBI interface.
|
@@ -59,7 +64,7 @@ class TestDbdPostgres < DBDConfig.testbase(:postgresql)
|
|
59
64
|
# XXX this is a potentially horrible way of doing it since it'll
|
60
65
|
# create another prepared statement, but *at this time*, I don't
|
61
66
|
# see any drawbacks and the alternative is considerably uglier.
|
62
|
-
|
67
|
+
|
63
68
|
@sth = @dbh.prepare("select count(*) from pg_prepared_statements where name = ?")
|
64
69
|
@sth.execute(sth_internal_name)
|
65
70
|
assert_equal([0], @sth.fetch)
|
@@ -163,14 +168,30 @@ class TestDbdPostgres < DBDConfig.testbase(:postgresql)
|
|
163
168
|
:type_name =>"integer",
|
164
169
|
:unique =>nil,
|
165
170
|
:array_of_type =>nil
|
166
|
-
|
171
|
+
|
167
172
|
}
|
168
|
-
],
|
173
|
+
],
|
169
174
|
@dbh.columns('tbl')
|
170
175
|
)
|
171
|
-
|
176
|
+
|
172
177
|
end
|
173
178
|
|
179
|
+
def test_statement_name_uniqueness
|
180
|
+
5000.times do
|
181
|
+
begin
|
182
|
+
@dbh.prepare('SELECT 1').execute()
|
183
|
+
raise DBI::ForcedError
|
184
|
+
sth.finish # never reached
|
185
|
+
rescue DBI::ProgrammingError => e
|
186
|
+
# ERROR: prepared statement "ruby-dbi:Pg:-604926268" already exists
|
187
|
+
# This should never happen
|
188
|
+
raise e
|
189
|
+
rescue DBI::ForcedError
|
190
|
+
# no-op
|
191
|
+
end
|
192
|
+
end
|
193
|
+
end
|
194
|
+
|
174
195
|
def test_connect_errors
|
175
196
|
dbd = nil
|
176
197
|
ex = assert_raises(DBI::OperationalError) {
|
@@ -204,7 +225,7 @@ class TestDbdPostgres < DBDConfig.testbase(:postgresql)
|
|
204
225
|
dbd = get_dbd
|
205
226
|
res = dbd.do("INSERT INTO names (name, age) VALUES('Dan', 16)")
|
206
227
|
assert_equal 1, res
|
207
|
-
|
228
|
+
|
208
229
|
@sth = get_dbi.prepare("SELECT name FROM names WHERE age=16")
|
209
230
|
@sth.execute
|
210
231
|
assert @sth.fetchable?
|
@@ -269,7 +290,7 @@ class TestDbdPostgres < DBDConfig.testbase(:postgresql)
|
|
269
290
|
# per bug #1082, views do not show up in tables listing.
|
270
291
|
assert get_dbi.tables.include?("view_names")
|
271
292
|
end
|
272
|
-
|
293
|
+
|
273
294
|
def get_dbi
|
274
295
|
config = DBDConfig.get_config
|
275
296
|
DBI.connect("dbi:Pg:#{config['postgresql']['dbname']}", config['postgresql']['username'], config['postgresql']['password'])
|
metadata
CHANGED
@@ -1,7 +1,12 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dbd-pg
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
|
4
|
+
prerelease: false
|
5
|
+
segments:
|
6
|
+
- 0
|
7
|
+
- 3
|
8
|
+
- 9
|
9
|
+
version: 0.3.9
|
5
10
|
platform: ruby
|
6
11
|
authors:
|
7
12
|
- Erik Hollensbe
|
@@ -10,29 +15,35 @@ autorequire:
|
|
10
15
|
bindir: bin
|
11
16
|
cert_chain: []
|
12
17
|
|
13
|
-
date:
|
18
|
+
date: 2010-03-06 00:00:00 -05:00
|
14
19
|
default_executable:
|
15
20
|
dependencies:
|
16
21
|
- !ruby/object:Gem::Dependency
|
17
22
|
name: dbi
|
18
|
-
|
19
|
-
|
20
|
-
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
prerelease: false
|
24
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
21
25
|
requirements:
|
22
26
|
- - ">="
|
23
27
|
- !ruby/object:Gem::Version
|
28
|
+
segments:
|
29
|
+
- 0
|
30
|
+
- 4
|
31
|
+
- 0
|
24
32
|
version: 0.4.0
|
25
|
-
|
33
|
+
type: :runtime
|
34
|
+
version_requirements: *id001
|
26
35
|
- !ruby/object:Gem::Dependency
|
27
36
|
name: pg
|
28
|
-
|
29
|
-
|
30
|
-
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
prerelease: false
|
38
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
31
39
|
requirements:
|
32
40
|
- - ">="
|
33
41
|
- !ruby/object:Gem::Version
|
42
|
+
segments:
|
43
|
+
- 0
|
34
44
|
version: "0"
|
35
|
-
|
45
|
+
type: :runtime
|
46
|
+
version_requirements: *id002
|
36
47
|
description: PostgreSQL DBI DBD
|
37
48
|
email: ruby-dbi-users@rubyforge.org
|
38
49
|
executables: []
|
@@ -44,25 +55,25 @@ extra_rdoc_files:
|
|
44
55
|
- LICENSE
|
45
56
|
- ChangeLog
|
46
57
|
files:
|
47
|
-
- test/dbd/general/test_statement.rb
|
48
58
|
- test/dbd/general/test_database.rb
|
59
|
+
- test/dbd/general/test_statement.rb
|
49
60
|
- test/dbd/general/test_types.rb
|
50
|
-
- test/dbd/postgresql/base.rb
|
51
61
|
- test/dbd/postgresql/testdbipg.rb
|
52
|
-
- test/dbd/postgresql/
|
53
|
-
- test/dbd/postgresql/
|
54
|
-
- test/dbd/postgresql/down.sql
|
62
|
+
- test/dbd/postgresql/test_blob.rb
|
63
|
+
- test/dbd/postgresql/test_timestamp.rb
|
55
64
|
- test/dbd/postgresql/up.sql
|
65
|
+
- test/dbd/postgresql/base.rb
|
66
|
+
- test/dbd/postgresql/down.sql
|
56
67
|
- test/dbd/postgresql/test_bytea.rb
|
57
|
-
- test/dbd/postgresql/
|
68
|
+
- test/dbd/postgresql/test_async.rb
|
58
69
|
- test/dbd/postgresql/test_ping.rb
|
59
|
-
- test/dbd/postgresql/
|
60
|
-
- test/dbd/postgresql/
|
70
|
+
- test/dbd/postgresql/test_transactions.rb
|
71
|
+
- test/dbd/postgresql/test_arrays.rb
|
61
72
|
- lib/dbd/Pg.rb
|
73
|
+
- lib/dbd/pg/type.rb
|
74
|
+
- lib/dbd/pg/statement.rb
|
62
75
|
- lib/dbd/pg/tuples.rb
|
63
76
|
- lib/dbd/pg/database.rb
|
64
|
-
- lib/dbd/pg/statement.rb
|
65
|
-
- lib/dbd/pg/type.rb
|
66
77
|
- lib/dbd/pg/exec.rb
|
67
78
|
- test/DBD_TESTS
|
68
79
|
- README
|
@@ -70,6 +81,8 @@ files:
|
|
70
81
|
- ChangeLog
|
71
82
|
has_rdoc: true
|
72
83
|
homepage: http://www.rubyforge.org/projects/ruby-dbi
|
84
|
+
licenses: []
|
85
|
+
|
73
86
|
post_install_message:
|
74
87
|
rdoc_options: []
|
75
88
|
|
@@ -79,20 +92,24 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
79
92
|
requirements:
|
80
93
|
- - ">="
|
81
94
|
- !ruby/object:Gem::Version
|
95
|
+
segments:
|
96
|
+
- 1
|
97
|
+
- 8
|
98
|
+
- 0
|
82
99
|
version: 1.8.0
|
83
|
-
version:
|
84
100
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
85
101
|
requirements:
|
86
102
|
- - ">="
|
87
103
|
- !ruby/object:Gem::Version
|
104
|
+
segments:
|
105
|
+
- 0
|
88
106
|
version: "0"
|
89
|
-
version:
|
90
107
|
requirements: []
|
91
108
|
|
92
109
|
rubyforge_project: ruby-dbi
|
93
|
-
rubygems_version: 1.3.
|
110
|
+
rubygems_version: 1.3.6
|
94
111
|
signing_key:
|
95
|
-
specification_version:
|
112
|
+
specification_version: 3
|
96
113
|
summary: PostgreSQL DBI DBD
|
97
114
|
test_files:
|
98
115
|
- test/ts_dbd.rb
|