postgres-pr 0.6.3 → 0.7.0

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.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: dd57874846033434677cb95761d2b395d52c8f22
4
+ data.tar.gz: a6f12b3e76ae876fb340ce5bf3a11cfdac6a47af
5
+ SHA512:
6
+ metadata.gz: 4ab7fd91747aadedc93b34f7b38633c0ed8f5cbd25198a2ee5c3f919cad132fe0962fb9ce8f2ff98a292d3f500aa1544d27a03108b49a9aabb4ea966a52742ee
7
+ data.tar.gz: a44a7d6859ce52815f20c8b4c99135de74d8d27c64aed9e07cb5b0def14c91acb197c64361e5de467394f0b5368d20dc3fe1f93d53a7306c0eaaf464fcc753c6
@@ -0,0 +1,4 @@
1
+ # This is a compatibility layer for using the pure Ruby postgres-pr instead of
2
+ # the C interface of postgres.
3
+
4
+ require 'postgres-pr/postgres-compat'
@@ -9,6 +9,9 @@ require 'postgres-pr/version'
9
9
  require 'uri'
10
10
  require 'socket'
11
11
 
12
+ class Error < ::StandardError; end
13
+ class DatabaseError < Error; end
14
+
12
15
  module PostgresPR
13
16
 
14
17
  PROTO_VERSION = 3 << 16 #196608
@@ -139,7 +142,7 @@ class Connection
139
142
  end
140
143
  end
141
144
 
142
- raise errors.map{|e| e.field_values.join("\t") }.join("\n") unless errors.empty?
145
+ raise DatabaseError.new(errors.map{|e| e.field_values.join("\t") }.join("\n")) unless errors.empty?
143
146
 
144
147
  result
145
148
  end
@@ -0,0 +1,174 @@
1
+ # This is a compatibility layer for using the pure Ruby postgres-pr instead of
2
+ # the C interface of postgres.
3
+
4
+ require 'rexml/syncenumerator'
5
+ require 'postgres-pr/connection'
6
+
7
+ class PGconn
8
+ PQTRANS_IDLE = 0 #(connection idle)
9
+ PQTRANS_INTRANS = 2 #(idle, within transaction block)
10
+ PQTRANS_INERROR = 3 #(idle, within failed transaction)
11
+ PQTRANS_UNKNOWN = 4 #(cannot determine status)
12
+
13
+ class << self
14
+ alias connect new
15
+ end
16
+
17
+ def initialize(host, port, options, tty, database, user, auth)
18
+ uri =
19
+ if host.nil?
20
+ nil
21
+ elsif host[0] != ?/
22
+ "tcp://#{ host }:#{ port }"
23
+ else
24
+ "unix:#{ host }/.s.PGSQL.#{ port }"
25
+ end
26
+ @host = host
27
+ @db = database
28
+ @user = user
29
+ @conn = PostgresPR::Connection.new(database, user, auth, uri)
30
+ end
31
+
32
+ def close
33
+ @conn.close
34
+ end
35
+
36
+ attr_reader :host, :db, :user
37
+
38
+ def query(sql)
39
+ PGresult.new(@conn.query(sql))
40
+ end
41
+
42
+ alias exec query
43
+
44
+ def transaction_status
45
+ @conn.transaction_status
46
+ end
47
+
48
+ def self.escape(str)
49
+ str.gsub("'","''").gsub("\\", "\\\\\\\\")
50
+ end
51
+
52
+ def escape(str)
53
+ self.class.escape(str)
54
+ end
55
+
56
+ def notice_processor
57
+ @conn.notice_processor
58
+ end
59
+
60
+ def notice_processor=(np)
61
+ @conn.notice_processor = np
62
+ end
63
+
64
+ def self.quote_ident(name)
65
+ %("#{name}")
66
+ end
67
+
68
+ end
69
+
70
+ class PGresult
71
+ include Enumerable
72
+
73
+ EMPTY_QUERY = 0
74
+ COMMAND_OK = 1
75
+ TUPLES_OK = 2
76
+ COPY_OUT = 3
77
+ COPY_IN = 4
78
+ BAD_RESPONSE = 5
79
+ NONFATAL_ERROR = 6
80
+ FATAL_ERROR = 7
81
+
82
+ def each(&block)
83
+ @result.each(&block)
84
+ end
85
+
86
+ def [](index)
87
+ @result[index]
88
+ end
89
+
90
+ def initialize(res)
91
+ @res = res
92
+ @fields = @res.fields.map {|f| f.name}
93
+ @result = []
94
+ @res.rows.each do |row|
95
+ @result << REXML::SyncEnumerator.new(fields, row).map {|name, value| [name, value]}
96
+ end
97
+ end
98
+
99
+ # TODO: status, getlength, cmdstatus
100
+
101
+ attr_reader :result, :fields
102
+
103
+ def num_tuples
104
+ @result.size
105
+ end
106
+
107
+ alias :ntuples :num_tuples
108
+
109
+ def num_fields
110
+ @fields.size
111
+ end
112
+
113
+ alias :nfields :num_fields
114
+
115
+ def fieldname(index)
116
+ @fields[index]
117
+ end
118
+
119
+ def fieldnum(name)
120
+ @fields.index(name)
121
+ end
122
+
123
+ def type(index)
124
+ # TODO: correct?
125
+ @res.fields[index].type_oid
126
+ end
127
+
128
+ alias :ftype :type
129
+
130
+ def size(index)
131
+ raise
132
+ # TODO: correct?
133
+ @res.fields[index].typlen
134
+ end
135
+
136
+ def getvalue(tup_num, field_num)
137
+ @result[tup_num][field_num]
138
+ end
139
+
140
+ def status
141
+ if num_tuples > 0
142
+ TUPLES_OK
143
+ else
144
+ COMMAND_OK
145
+ end
146
+ end
147
+
148
+ def cmdstatus
149
+ @res.cmd_tag || ''
150
+ end
151
+
152
+ # free the result set
153
+ def clear
154
+ @res = @fields = @result = nil
155
+ end
156
+
157
+ # Returns the number of rows affected by the SQL command
158
+ def cmdtuples
159
+ case @res.cmd_tag
160
+ when nil
161
+ return nil
162
+ when /^INSERT\s+(\d+)\s+(\d+)$/, /^(DELETE|UPDATE|MOVE|FETCH)\s+(\d+)$/
163
+ $2.to_i
164
+ else
165
+ nil
166
+ end
167
+ end
168
+
169
+ alias :cmd_tuples :cmdtuples
170
+
171
+ end
172
+
173
+ class PGError < Exception
174
+ end
@@ -4,6 +4,11 @@
4
4
  require 'postgres-pr/connection'
5
5
 
6
6
  class PGconn
7
+ PQTRANS_IDLE = 0 #(connection idle)
8
+ PQTRANS_INTRANS = 2 #(idle, within transaction block)
9
+ PQTRANS_INERROR = 3 #(idle, within failed transaction)
10
+ PQTRANS_UNKNOWN = 4 #(cannot determine status)
11
+
7
12
  class << self
8
13
  alias connect new
9
14
  end
@@ -43,6 +48,10 @@ class PGconn
43
48
  str.gsub("'","''").gsub("\\", "\\\\\\\\")
44
49
  end
45
50
 
51
+ def escape(str)
52
+ self.class.escape(str)
53
+ end
54
+
46
55
  def notice_processor
47
56
  @conn.notice_processor
48
57
  end
@@ -91,10 +100,14 @@ class PGresult
91
100
  @result.size
92
101
  end
93
102
 
103
+ alias :ntuples :num_tuples
104
+
94
105
  def num_fields
95
106
  @fields.size
96
107
  end
97
108
 
109
+ alias :nfields :num_fields
110
+
98
111
  def fieldname(index)
99
112
  @fields[index]
100
113
  end
@@ -107,6 +120,8 @@ class PGresult
107
120
  # TODO: correct?
108
121
  @res.fields[index].type_oid
109
122
  end
123
+
124
+ alias :ftype :type
110
125
 
111
126
  def size(index)
112
127
  raise
@@ -146,6 +161,8 @@ class PGresult
146
161
  nil
147
162
  end
148
163
  end
164
+
165
+ alias :cmd_tuples :cmdtuples
149
166
 
150
167
  end
151
168
 
@@ -1,3 +1,3 @@
1
1
  module PostgresPR
2
- Version = "0.6.3"
2
+ Version = "0.7.0"
3
3
  end
metadata CHANGED
@@ -1,73 +1,63 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: postgres-pr
3
- version: !ruby/object:Gem::Version
4
- version: 0.6.3
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.7.0
5
5
  platform: ruby
6
- authors:
6
+ authors:
7
7
  - Michael Neumann
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
-
12
- date: 2009-12-15 00:00:00 +01:00
13
- default_executable:
11
+ date: 2015-01-22 00:00:00.000000000 Z
14
12
  dependencies: []
15
-
16
13
  description:
17
14
  email: mneumann@ntecs.de
18
15
  executables: []
19
-
20
16
  extensions: []
21
-
22
17
  extra_rdoc_files: []
23
-
24
- files:
18
+ files:
19
+ - examples/client.rb
20
+ - examples/og/test.rb
21
+ - examples/server.rb
22
+ - examples/test_connection.rb
23
+ - lib/binary_reader.rb
24
+ - lib/binary_writer.rb
25
25
  - lib/buffer.rb
26
26
  - lib/byteorder.rb
27
+ - lib/pg.rb
27
28
  - lib/postgres-pr/connection.rb
29
+ - lib/postgres-pr/message.rb
30
+ - lib/postgres-pr/pg-compat.rb
31
+ - lib/postgres-pr/postgres-compat.rb
28
32
  - lib/postgres-pr/typeconv/TC_conv.rb
33
+ - lib/postgres-pr/typeconv/array.rb
29
34
  - lib/postgres-pr/typeconv/bytea.rb
30
35
  - lib/postgres-pr/typeconv/conv.rb
31
- - lib/postgres-pr/typeconv/array.rb
32
- - lib/postgres-pr/1q
33
- - lib/postgres-pr/postgres-compat.rb
34
- - lib/postgres-pr/message.rb
35
36
  - lib/postgres-pr/version.rb
36
- - lib/binary_reader.rb
37
- - lib/binary_writer.rb
38
37
  - lib/postgres.rb
39
38
  - test/TC_message.rb
40
- - examples/client.rb
41
- - examples/og/test.rb
42
- - examples/server.rb
43
- - examples/test_connection.rb
44
- has_rdoc: true
45
39
  homepage: http://postgres-pr.rubyforge.org
46
40
  licenses: []
47
-
41
+ metadata: {}
48
42
  post_install_message:
49
43
  rdoc_options: []
50
-
51
- require_paths:
44
+ require_paths:
52
45
  - lib
53
- required_ruby_version: !ruby/object:Gem::Requirement
54
- requirements:
46
+ required_ruby_version: !ruby/object:Gem::Requirement
47
+ requirements:
55
48
  - - ">="
56
- - !ruby/object:Gem::Version
57
- version: "0"
58
- version:
59
- required_rubygems_version: !ruby/object:Gem::Requirement
60
- requirements:
49
+ - !ruby/object:Gem::Version
50
+ version: '0'
51
+ required_rubygems_version: !ruby/object:Gem::Requirement
52
+ requirements:
61
53
  - - ">="
62
- - !ruby/object:Gem::Version
63
- version: "0"
64
- version:
65
- requirements:
54
+ - !ruby/object:Gem::Version
55
+ version: '0'
56
+ requirements:
66
57
  - PostgreSQL >= 7.4
67
58
  rubyforge_project: postgres-pr
68
- rubygems_version: 1.3.5
59
+ rubygems_version: 2.2.2
69
60
  signing_key:
70
- specification_version: 3
61
+ specification_version: 4
71
62
  summary: A pure Ruby interface to the PostgreSQL (>= 7.4) database
72
63
  test_files: []
73
-
@@ -1,3 +0,0 @@
1
- module PostgresPR
2
- Version = "0.6.3"
3
- end