pg 0.8.0-x86-mswin32-60
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/BSD +23 -0
- data/COPYING.txt +340 -0
- data/ChangeLog +261 -0
- data/Contributors +28 -0
- data/GPL +340 -0
- data/LICENSE +58 -0
- data/README +125 -0
- data/Rakefile +103 -0
- data/doc/postgres.html +278 -0
- data/doc/postgres.jp.html +256 -0
- data/ext/compat.c +541 -0
- data/ext/compat.h +180 -0
- data/ext/extconf.rb +87 -0
- data/ext/mingw/Rakefile +24 -0
- data/ext/mingw/build.rake +40 -0
- data/ext/mingw/pg.so +0 -0
- data/ext/mkrf_config.rb +138 -0
- data/ext/pg.c +3569 -0
- data/ext/pg.h +42 -0
- data/ext/vc/pg.sln +26 -0
- data/sample/losample.rb +47 -0
- data/sample/psql.rb +1181 -0
- data/sample/psqlHelp.rb +158 -0
- data/sample/test1.rb +63 -0
- data/sample/test2.rb +44 -0
- data/sample/test4.rb +71 -0
- data/spec/data/expected_trace.out +26 -0
- data/spec/data/random_binary_data +0 -0
- data/spec/pgconn_spec.rb +130 -0
- data/spec/pgresult_spec.rb +112 -0
- metadata +89 -0
@@ -0,0 +1,112 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'spec'
|
3
|
+
|
4
|
+
$LOAD_PATH.unshift('ext')
|
5
|
+
require 'pg'
|
6
|
+
|
7
|
+
describe PGconn do
|
8
|
+
|
9
|
+
before( :all ) do
|
10
|
+
puts "====== TESTING PGresult ======"
|
11
|
+
@test_directory = File.join(Dir.getwd, "tmp_test_#{rand}")
|
12
|
+
@test_pgdata = File.join(@test_directory, 'data')
|
13
|
+
if File.exists?(@test_directory) then
|
14
|
+
raise "test directory exists!"
|
15
|
+
end
|
16
|
+
@port = 54321
|
17
|
+
@conninfo = "host=localhost port=#{@port} dbname=test"
|
18
|
+
Dir.mkdir(@test_directory)
|
19
|
+
Dir.mkdir(@test_pgdata)
|
20
|
+
cmds = []
|
21
|
+
cmds << "initdb -D \"#{@test_pgdata}\""
|
22
|
+
cmds << "pg_ctl -o \"-p #{@port}\" -D \"#{@test_pgdata}\" start"
|
23
|
+
cmds << "sleep 5"
|
24
|
+
cmds << "createdb -p #{@port} test"
|
25
|
+
|
26
|
+
cmds.each do |cmd|
|
27
|
+
if not system(cmd) then
|
28
|
+
raise "Error executing cmd: #{cmd}: #{$?}"
|
29
|
+
end
|
30
|
+
end
|
31
|
+
puts "\n\n"
|
32
|
+
@conn = PGconn.connect(@conninfo)
|
33
|
+
end
|
34
|
+
|
35
|
+
it "should act as an array of hashes" do
|
36
|
+
res = @conn.exec("SELECT 1 AS a, 2 AS b")
|
37
|
+
res[0]['a'].should== '1'
|
38
|
+
res[0]['b'].should== '2'
|
39
|
+
end
|
40
|
+
|
41
|
+
it "should insert nil AS NULL and return NULL as nil" do
|
42
|
+
res = @conn.exec("SELECT $1::int AS n", [nil])
|
43
|
+
res[0]['n'].should == nil
|
44
|
+
end
|
45
|
+
|
46
|
+
it "should detect division by zero as SQLSTATE 22012" do
|
47
|
+
sqlstate = nil
|
48
|
+
begin
|
49
|
+
res = @conn.exec("SELECT 1/0")
|
50
|
+
rescue PGError => e
|
51
|
+
sqlstate = e.result.result_error_field(
|
52
|
+
PGresult::PG_DIAG_SQLSTATE).to_i
|
53
|
+
end
|
54
|
+
sqlstate.should == 22012
|
55
|
+
end
|
56
|
+
|
57
|
+
it "should return the same bytes in binary format that are sent in binary format" do
|
58
|
+
binary_file = File.join(Dir.pwd, 'spec/data', 'random_binary_data')
|
59
|
+
bytes = File.open(binary_file, 'rb').read
|
60
|
+
res = @conn.exec('VALUES ($1::bytea)',
|
61
|
+
[ { :value => bytes, :format => 1 } ], 1)
|
62
|
+
res[0]['column1'].should== bytes
|
63
|
+
end
|
64
|
+
|
65
|
+
it "should return the same bytes in binary format that are sent as inline text" do
|
66
|
+
binary_file = File.join(Dir.pwd, 'spec/data', 'random_binary_data')
|
67
|
+
in_bytes = File.open(binary_file, 'rb').read
|
68
|
+
out_bytes = nil
|
69
|
+
@conn.transaction do |conn|
|
70
|
+
conn.exec("SET standard_conforming_strings=on")
|
71
|
+
res = conn.exec("VALUES ('#{PGconn.escape_bytea(in_bytes)}'::bytea)", [], 1)
|
72
|
+
out_bytes = res[0]['column1']
|
73
|
+
end
|
74
|
+
out_bytes.should== in_bytes
|
75
|
+
end
|
76
|
+
|
77
|
+
it "should return the same bytes in text format that are sent in binary format" do
|
78
|
+
binary_file = File.join(Dir.pwd, 'spec/data', 'random_binary_data')
|
79
|
+
bytes = File.open(binary_file, 'rb').read
|
80
|
+
res = @conn.exec('VALUES ($1::bytea)',
|
81
|
+
[ { :value => bytes, :format => 1 } ])
|
82
|
+
PGconn.unescape_bytea(res[0]['column1']).should== bytes
|
83
|
+
end
|
84
|
+
|
85
|
+
it "should return the same bytes in text format that are sent as inline text" do
|
86
|
+
binary_file = File.join(Dir.pwd, 'spec/data', 'random_binary_data')
|
87
|
+
in_bytes = File.open(binary_file, 'rb').read
|
88
|
+
|
89
|
+
out_bytes = nil
|
90
|
+
@conn.transaction do |conn|
|
91
|
+
conn.exec("SET standard_conforming_strings=on")
|
92
|
+
res = conn.exec("VALUES ('#{PGconn.escape_bytea(in_bytes)}'::bytea)", [], 0)
|
93
|
+
out_bytes = PGconn.unescape_bytea(res[0]['column1'])
|
94
|
+
end
|
95
|
+
out_bytes.should== in_bytes
|
96
|
+
end
|
97
|
+
|
98
|
+
after( :all ) do
|
99
|
+
puts ""
|
100
|
+
@conn.finish
|
101
|
+
cmds = []
|
102
|
+
cmds << "pg_ctl -D \"#{@test_pgdata}\" stop"
|
103
|
+
cmds << "rm -rf \"#{@test_directory}\""
|
104
|
+
cmds.each do |cmd|
|
105
|
+
if not system(cmd) then
|
106
|
+
raise "Error executing cmd: #{cmd}: #{$?}"
|
107
|
+
end
|
108
|
+
end
|
109
|
+
puts "====== COMPLETED TESTING PGresult ======"
|
110
|
+
puts ""
|
111
|
+
end
|
112
|
+
end
|
metadata
ADDED
@@ -0,0 +1,89 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: pg
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.8.0
|
5
|
+
platform: x86-mswin32-60
|
6
|
+
authors:
|
7
|
+
- Yukihiro Matsumoto
|
8
|
+
- Eiji Matsumoto
|
9
|
+
- Noboru Saitou
|
10
|
+
- Dave Lee
|
11
|
+
- Jeff Davis
|
12
|
+
autorequire:
|
13
|
+
bindir: bin
|
14
|
+
cert_chain: []
|
15
|
+
|
16
|
+
date: 2009-03-28 00:00:00 -06:00
|
17
|
+
default_executable:
|
18
|
+
dependencies: []
|
19
|
+
|
20
|
+
description:
|
21
|
+
email: ruby-pg@j-davis.com
|
22
|
+
executables: []
|
23
|
+
|
24
|
+
extensions:
|
25
|
+
- ext/mingw/Rakefile
|
26
|
+
extra_rdoc_files:
|
27
|
+
- ext/pg.c
|
28
|
+
files:
|
29
|
+
- Rakefile
|
30
|
+
- README
|
31
|
+
- LICENSE
|
32
|
+
- COPYING.txt
|
33
|
+
- ChangeLog
|
34
|
+
- Contributors
|
35
|
+
- GPL
|
36
|
+
- BSD
|
37
|
+
- doc/postgres.html
|
38
|
+
- doc/postgres.jp.html
|
39
|
+
- ext/compat.c
|
40
|
+
- ext/compat.h
|
41
|
+
- ext/extconf.rb
|
42
|
+
- ext/mingw
|
43
|
+
- ext/mkrf_config.rb
|
44
|
+
- ext/pg.c
|
45
|
+
- ext/pg.h
|
46
|
+
- ext/vc
|
47
|
+
- ext/mingw/Rakefile
|
48
|
+
- ext/mingw/build.rake
|
49
|
+
- ext/vc/pg.sln
|
50
|
+
- sample/losample.rb
|
51
|
+
- sample/psql.rb
|
52
|
+
- sample/psqlHelp.rb
|
53
|
+
- sample/test1.rb
|
54
|
+
- sample/test2.rb
|
55
|
+
- sample/test4.rb
|
56
|
+
- spec/data
|
57
|
+
- spec/data/expected_trace.out
|
58
|
+
- spec/data/random_binary_data
|
59
|
+
- spec/pgconn_spec.rb
|
60
|
+
- spec/pgresult_spec.rb
|
61
|
+
- ext/mingw/pg.so
|
62
|
+
has_rdoc: true
|
63
|
+
homepage: http://rubyforge.org/projects/ruby-pg
|
64
|
+
post_install_message:
|
65
|
+
rdoc_options: []
|
66
|
+
|
67
|
+
require_paths:
|
68
|
+
- lib
|
69
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
70
|
+
requirements:
|
71
|
+
- - ">="
|
72
|
+
- !ruby/object:Gem::Version
|
73
|
+
version: 1.8.4
|
74
|
+
version:
|
75
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
76
|
+
requirements:
|
77
|
+
- - ">="
|
78
|
+
- !ruby/object:Gem::Version
|
79
|
+
version: "0"
|
80
|
+
version:
|
81
|
+
requirements:
|
82
|
+
- PostgreSQL libpq library and headers
|
83
|
+
rubyforge_project: ruby-pg
|
84
|
+
rubygems_version: 1.3.1
|
85
|
+
signing_key:
|
86
|
+
specification_version: 2
|
87
|
+
summary: Ruby extension library providing an API to PostgreSQL
|
88
|
+
test_files: []
|
89
|
+
|