dbd-pg 0.3.6 → 0.3.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.
@@ -49,7 +49,7 @@ module DBI
49
49
  # Only things that extend DBI's results are documented.
50
50
  #
51
51
  module Pg
52
- VERSION = "0.3.6"
52
+ VERSION = "0.3.7"
53
53
  DESCRIPTION = "PostgreSQL DBI DBD"
54
54
 
55
55
  #
@@ -74,7 +74,7 @@ class DBI::DBD::Pg::Database < DBI::BaseDatabase
74
74
  @attr.each { |k,v| self[k] = v}
75
75
  @attr["pg_native_binding"] = true unless @attr.has_key? "pg_native_binding"
76
76
 
77
- @type_map = __types
77
+ load_type_map
78
78
 
79
79
  self['AutoCommit'] = true # Postgres starts in unchained mode (AutoCommit=on) by default
80
80
 
@@ -340,6 +340,7 @@ class DBI::DBD::Pg::Database < DBI::BaseDatabase
340
340
  when 'date' then DBI::Type::Timestamp
341
341
  when 'decimal', 'numeric' then DBI::Type::Decimal
342
342
  when 'bytea' then DBI::DBD::Pg::Type::ByteA
343
+ when 'enum' then DBI::Type::Varchar
343
344
  end
344
345
  end
345
346
 
@@ -350,7 +351,7 @@ class DBI::DBD::Pg::Database < DBI::BaseDatabase
350
351
  def load_type_map
351
352
  @type_map = Hash.new
352
353
 
353
- res = _exec("SELECT oid, typname, typelem FROM pg_type WHERE typtype = 'b'")
354
+ res = _exec("SELECT oid, typname, typelem FROM pg_type WHERE typtype IN ('b', 'e')")
354
355
 
355
356
  res.each do |row|
356
357
  rowtype = parse_type_name(row["typname"])
@@ -8,7 +8,7 @@
8
8
  #
9
9
  class DBI::DBD::Pg::Tuples
10
10
 
11
- def initialize(db,pg_result)
11
+ def initialize(db, pg_result)
12
12
  @db = db
13
13
  @pg_result = pg_result
14
14
  @index = -1
@@ -37,7 +37,8 @@ class DBI::DBD::Pg::Tuples
37
37
  typeinfo = DBI::DBD::Pg.parse_type(res[0].values[0])
38
38
  end
39
39
 
40
- h = { "name" => str }.merge(@db.type_map[@pg_result.ftype(i)])
40
+ map = @db.type_map[@pg_result.ftype(i)] || { }
41
+ h = { "name" => str }.merge(map)
41
42
 
42
43
  if typeinfo
43
44
  h["precision"] = typeinfo[:size]
@@ -41,7 +41,7 @@
41
41
  end
42
42
 
43
43
  assert_equal(
44
- DBI::Type::Varchar.object_id,
44
+ DBI::Type::Varchar.object_id,
45
45
  DBI::TypeUtil.type_name_to_module(cols[0]["type_name"]).object_id
46
46
  )
47
47
 
@@ -51,9 +51,9 @@
51
51
  assert(cols[1]["nullable"])
52
52
  assert_equal(1, cols[2]["scale"])
53
53
  assert_equal(2, cols[2]["precision"])
54
-
54
+
55
55
  assert_equal(
56
- DBI::Type::Integer.object_id,
56
+ DBI::Type::Integer.object_id,
57
57
  DBI::TypeUtil.type_name_to_module(cols[1]["type_name"]).object_id
58
58
  )
59
59
 
@@ -64,7 +64,7 @@
64
64
  assert_equal(1, cols[2]["scale"])
65
65
  assert_equal(2, cols[2]["precision"])
66
66
  assert_equal(
67
- DBI::Type::Decimal.object_id,
67
+ DBI::Type::Decimal.object_id,
68
68
  DBI::TypeUtil.type_name_to_module(cols[2]["type_name"]).object_id
69
69
  )
70
70
 
@@ -75,7 +75,7 @@
75
75
  assert_equal(6, cols[3]["scale"])
76
76
  assert_equal(30, cols[3]["precision"])
77
77
  assert_equal(
78
- DBI::Type::Decimal.object_id,
78
+ DBI::Type::Decimal.object_id,
79
79
  DBI::TypeUtil.type_name_to_module(cols[3]["type_name"]).object_id
80
80
  )
81
81
 
@@ -157,11 +157,13 @@
157
157
  "views"
158
158
  ]
159
159
  end
160
-
161
- case dbtype
160
+
161
+ case dbtype
162
162
  when "postgresql"
163
163
  tables.reject! { |x| x =~ /^pg_/ }
164
- assert_equal %w(array_test bit_test blob_test boolean_test bytea_test db_specific_types_test field_types_test names precision_test time_test timestamp_test view_names), tables
164
+ assert_equal %w(array_test bit_test blob_test boolean_test bytea_test db_specific_types_test enum_type_test field_types_test names precision_test time_test timestamp_test view_names), tables
165
+ when 'sqlite3'
166
+ assert_equal %w(bit_test blob_test boolean_test db_specific_types_test field_types_test names names_defined_with_spaces precision_test time_test timestamp_test view_names), tables
165
167
  else
166
168
  assert_equal %w(bit_test blob_test boolean_test db_specific_types_test field_types_test names precision_test time_test timestamp_test view_names), tables
167
169
  end
@@ -176,13 +178,13 @@
176
178
  assert !@dbh["AutoCommit"]
177
179
 
178
180
  # test committing an outstanding transaction
179
-
181
+
180
182
  @sth = @dbh.prepare("insert into names (name, age) values (?, ?)")
181
183
  @sth.execute("Billy", 22)
182
184
  @sth.finish
183
185
 
184
186
  assert @dbh["AutoCommit"] = true # should commit at this point
185
-
187
+
186
188
  @sth = @dbh.prepare("select * from names where name = ?")
187
189
  @sth.execute("Billy")
188
190
  assert_equal [ "Billy", 22 ], @sth.fetch
@@ -22,6 +22,10 @@ drop table bytea_test;
22
22
  ---
23
23
  drop table precision_test;
24
24
  ---
25
+ drop table enum_type_test;
26
+ ---
27
+ drop type enum_test;
28
+ ---
25
29
  drop schema schema1 cascade;
26
30
  ---
27
31
  drop schema schema2 cascade;
@@ -25,6 +25,20 @@ class TestDbdPostgres < DBDConfig.testbase(:postgresql)
25
25
  end
26
26
  end
27
27
 
28
+ def test_enum_type
29
+ assert_nothing_raised do
30
+ assert(@dbh.convert_types)
31
+ @sth = @dbh.prepare("insert into enum_type_test values (?)")
32
+ @sth.execute("one")
33
+ @sth.finish
34
+
35
+ @sth = @dbh.prepare("select foo from enum_type_test")
36
+ @sth.execute
37
+ assert_equal(@sth.fetch, ['one'])
38
+ @sth.finish
39
+ end
40
+ end
41
+
28
42
  def test_statement_finish_deallocates_sth
29
43
  assert_nothing_raised do
30
44
  @sth = @dbh.prepare("select * from names")
@@ -30,6 +30,10 @@ create table bit_test (mybit bit);
30
30
  ---
31
31
  create table field_types_test (foo integer not null primary key default 1);
32
32
  ---
33
+ create type enum_test as ENUM ('one', 'two', 'three');
34
+ ---
35
+ create table enum_type_test (foo enum_test);
36
+ ---
33
37
  create table db_specific_types_test (foo integer);
34
38
  ---
35
39
  create table array_test (foo integer[], bar integer[3], baz integer[3][3], quux varchar[2]);
metadata CHANGED
@@ -1,90 +1,99 @@
1
1
  --- !ruby/object:Gem::Specification
2
- rubygems_version: 0.9.4
3
- specification_version: 1
4
2
  name: dbd-pg
5
3
  version: !ruby/object:Gem::Version
6
- version: 0.3.6
7
- date: 2008-11-28 00:00:00 -08:00
8
- summary: PostgreSQL DBI DBD
9
- require_paths:
10
- - lib
11
- email: ruby-dbi-users@rubyforge.org
12
- homepage: http://www.rubyforge.org/projects/ruby-dbi
13
- rubyforge_project: ruby-dbi
14
- description: PostgreSQL DBI DBD
15
- autorequire:
16
- default_executable:
17
- bindir: bin
18
- has_rdoc: true
19
- required_ruby_version: !ruby/object:Gem::Version::Requirement
20
- requirements:
21
- - - ">="
22
- - !ruby/object:Gem::Version
23
- version: 1.8.0
24
- version:
4
+ version: 0.3.7
25
5
  platform: ruby
26
- signing_key:
27
- cert_chain:
28
- post_install_message:
29
6
  authors:
30
7
  - Erik Hollensbe
31
8
  - Christopher Maujean
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+
13
+ date: 2008-12-15 00:00:00 -08:00
14
+ default_executable:
15
+ dependencies:
16
+ - !ruby/object:Gem::Dependency
17
+ name: dbi
18
+ type: :runtime
19
+ version_requirement:
20
+ version_requirements: !ruby/object:Gem::Requirement
21
+ requirements:
22
+ - - ">="
23
+ - !ruby/object:Gem::Version
24
+ version: 0.4.0
25
+ version:
26
+ - !ruby/object:Gem::Dependency
27
+ name: pg
28
+ type: :runtime
29
+ version_requirement:
30
+ version_requirements: !ruby/object:Gem::Requirement
31
+ requirements:
32
+ - - ">="
33
+ - !ruby/object:Gem::Version
34
+ version: "0"
35
+ version:
36
+ description: PostgreSQL DBI DBD
37
+ email: ruby-dbi-users@rubyforge.org
38
+ executables: []
39
+
40
+ extensions: []
41
+
42
+ extra_rdoc_files:
43
+ - README
44
+ - LICENSE
45
+ - ChangeLog
32
46
  files:
33
- - test/dbd/general/test_database.rb
34
- - test/dbd/general/test_statement.rb
35
47
  - test/dbd/general/test_types.rb
36
- - test/dbd/postgresql/test_timestamp.rb
37
- - test/dbd/postgresql/test_arrays.rb
48
+ - test/dbd/general/test_statement.rb
49
+ - test/dbd/general/test_database.rb
50
+ - test/dbd/postgresql/test_ping.rb
38
51
  - test/dbd/postgresql/base.rb
39
- - test/dbd/postgresql/down.sql
40
- - test/dbd/postgresql/test_bytea.rb
41
- - test/dbd/postgresql/test_async.rb
52
+ - test/dbd/postgresql/test_timestamp.rb
53
+ - test/dbd/postgresql/base.rb.new
42
54
  - test/dbd/postgresql/test_blob.rb
55
+ - test/dbd/postgresql/test_async.rb
56
+ - test/dbd/postgresql/down.sql
43
57
  - test/dbd/postgresql/test_transactions.rb
44
- - test/dbd/postgresql/base.rb.new
45
- - test/dbd/postgresql/testdbipg.rb
46
58
  - test/dbd/postgresql/up.sql
47
- - test/dbd/postgresql/test_ping.rb
59
+ - test/dbd/postgresql/test_arrays.rb
60
+ - test/dbd/postgresql/testdbipg.rb
61
+ - test/dbd/postgresql/test_bytea.rb
48
62
  - lib/dbd/Pg.rb
49
63
  - lib/dbd/pg/database.rb
50
64
  - lib/dbd/pg/tuples.rb
65
+ - lib/dbd/pg/statement.rb
51
66
  - lib/dbd/pg/exec.rb
52
67
  - lib/dbd/pg/type.rb
53
- - lib/dbd/pg/statement.rb
54
68
  - test/DBD_TESTS
55
69
  - README
56
70
  - LICENSE
57
71
  - ChangeLog
58
- test_files:
59
- - test/ts_dbd.rb
72
+ has_rdoc: true
73
+ homepage: http://www.rubyforge.org/projects/ruby-dbi
74
+ post_install_message:
60
75
  rdoc_options: []
61
76
 
62
- extra_rdoc_files:
63
- - README
64
- - LICENSE
65
- - ChangeLog
66
- executables: []
67
-
68
- extensions: []
69
-
77
+ require_paths:
78
+ - lib
79
+ required_ruby_version: !ruby/object:Gem::Requirement
80
+ requirements:
81
+ - - ">="
82
+ - !ruby/object:Gem::Version
83
+ version: 1.8.0
84
+ version:
85
+ required_rubygems_version: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: "0"
90
+ version:
70
91
  requirements: []
71
92
 
72
- dependencies:
73
- - !ruby/object:Gem::Dependency
74
- name: dbi
75
- version_requirement:
76
- version_requirements: !ruby/object:Gem::Version::Requirement
77
- requirements:
78
- - - ">="
79
- - !ruby/object:Gem::Version
80
- version: 0.4.0
81
- version:
82
- - !ruby/object:Gem::Dependency
83
- name: pg
84
- version_requirement:
85
- version_requirements: !ruby/object:Gem::Version::Requirement
86
- requirements:
87
- - - ">"
88
- - !ruby/object:Gem::Version
89
- version: 0.0.0
90
- version:
93
+ rubyforge_project: ruby-dbi
94
+ rubygems_version: 1.3.1
95
+ signing_key:
96
+ specification_version: 2
97
+ summary: PostgreSQL DBI DBD
98
+ test_files:
99
+ - test/ts_dbd.rb