1--- lib/dbd/pg/database.rb.orig	2020-01-03 12:38:44 UTC
2+++ lib/dbd/pg/database.rb
3@@ -48,7 +48,7 @@ class DBI::DBD::Pg::Database < DBI::BaseDatabase
4         hash['tty'] ||= ''
5         hash['port'] = hash['port'].to_i unless hash['port'].nil?
6
7-        @connection = PGconn.new(hash['host'], hash['port'], hash['options'], hash['tty'],
8+        @connection = PG::Connection.new(hash['host'], hash['port'], hash['options'], hash['tty'],
9                                  hash['dbname'] || hash['database'], user, auth)
10
11         @exec_method = :exec
12@@ -78,7 +78,7 @@ class DBI::DBD::Pg::Database < DBI::BaseDatabase
13
14         self['AutoCommit'] = true    # Postgres starts in unchained mode (AutoCommit=on) by default
15
16-    rescue PGError => err
17+    rescue PG::Error => err
18         raise DBI::OperationalError.new(err.message)
19     end
20
21@@ -96,7 +96,7 @@ class DBI::DBD::Pg::Database < DBI::BaseDatabase
22         else
23             return false
24         end
25-    rescue PGError
26+    rescue PG::Error
27         return false
28     ensure
29         answer.clear if answer
30@@ -383,9 +383,6 @@ class DBI::DBD::Pg::Database < DBI::BaseDatabase
31                         end
32                 }
33         end
34-        # additional conversions
35-        @type_map[705]  ||= DBI::Type::Varchar       # select 'hallo'
36-        @type_map[1114] ||= DBI::Type::Timestamp # TIMESTAMP WITHOUT TIME ZONE
37
38         # remap array subtypes
39         @type_map.each_key do |key|
40@@ -399,6 +396,10 @@ class DBI::DBD::Pg::Database < DBI::BaseDatabase
41                 end
42             end
43         end
44+
45+        # additional conversions
46+        @type_map[1114] ||= DBI::Type::Timestamp # TIMESTAMP WITHOUT TIME ZONE
47+        @type_map[705]  ||= DBI::Type::Varchar       # select 'hallo'
48     end
49
50     public
51@@ -426,7 +427,7 @@ class DBI::DBD::Pg::Database < DBI::BaseDatabase
52     def __blob_import(file)
53         start_transaction unless @in_transaction
54         @connection.lo_import(file)
55-    rescue PGError => err
56+    rescue PG::Error => err
57         raise DBI::DatabaseError.new(err.message)
58     end
59
60@@ -436,27 +437,27 @@ class DBI::DBD::Pg::Database < DBI::BaseDatabase
61     def __blob_export(oid, file)
62         start_transaction unless @in_transaction
63         @connection.lo_export(oid.to_i, file)
64-    rescue PGError => err
65+    rescue PG::Error => err
66         raise DBI::DatabaseError.new(err.message)
67     end
68
69     #
70     # Create a BLOB.
71     #
72-    def __blob_create(mode=PGconn::INV_READ)
73+    def __blob_create(mode=PG::Connection::INV_READ)
74         start_transaction unless @in_transaction
75         @connection.lo_creat(mode)
76-    rescue PGError => err
77+    rescue PG::Error => err
78         raise DBI::DatabaseError.new(err.message)
79     end
80
81     #
82     # Open a BLOB.
83     #
84-    def __blob_open(oid, mode=PGconn::INV_READ)
85+    def __blob_open(oid, mode=PG::Connection::INV_READ)
86         start_transaction unless @in_transaction
87         @connection.lo_open(oid.to_i, mode)
88-    rescue PGError => err
89+    rescue PG::Error => err
90         raise DBI::DatabaseError.new(err.message)
91     end
92
93@@ -466,7 +467,7 @@ class DBI::DBD::Pg::Database < DBI::BaseDatabase
94     def __blob_unlink(oid)
95         start_transaction unless @in_transaction
96         @connection.lo_unlink(oid.to_i)
97-    rescue PGError => err
98+    rescue PG::Error => err
99         raise DBI::DatabaseError.new(err.message)
100     end
101
102@@ -474,7 +475,7 @@ class DBI::DBD::Pg::Database < DBI::BaseDatabase
103     # Read a BLOB and return the data.
104     #
105     def __blob_read(oid, length)
106-        blob = @connection.lo_open(oid.to_i, PGconn::INV_READ)
107+        blob = @connection.lo_open(oid.to_i, PG::Connection::INV_READ)
108
109         if length.nil?
110             data = @connection.lo_read(blob)
111@@ -485,7 +486,7 @@ class DBI::DBD::Pg::Database < DBI::BaseDatabase
112         # FIXME it doesn't like to close here either.
113         # @connection.lo_close(blob)
114         data
115-    rescue PGError => err
116+    rescue PG::Error => err
117         raise DBI::DatabaseError.new(err.message)
118     end
119
120@@ -494,14 +495,14 @@ class DBI::DBD::Pg::Database < DBI::BaseDatabase
121     #
122     def __blob_write(oid, value)
123         start_transaction unless @in_transaction
124-        blob = @connection.lo_open(oid.to_i, PGconn::INV_WRITE)
125+        blob = @connection.lo_open(oid.to_i, PG::Connection::INV_WRITE)
126         res = @connection.lo_write(blob, value)
127         # FIXME not sure why PG doesn't like to close here -- seems to be
128         # working but we should make sure it's not eating file descriptors
129         # up before release.
130         # @connection.lo_close(blob)
131         return res
132-    rescue PGError => err
133+    rescue PG::Error => err
134         raise DBI::DatabaseError.new(err.message)
135     end
136
137@@ -510,7 +511,7 @@ class DBI::DBD::Pg::Database < DBI::BaseDatabase
138     #
139     def __set_notice_processor(proc)
140         @connection.set_notice_processor proc
141-    rescue PGError => err
142+    rescue PG::Error => err
143         raise DBI::DatabaseError.new(err.message)
144     end
145 end # Database
146