pg 0.7.9.2008.10.13 → 0.8.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.
- 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/ext/compat.c +3 -3
- data/ext/mingw/Rakefile +24 -0
- data/ext/mingw/build.rake +40 -0
- data/ext/mkrf_config.rb +8 -1
- data/ext/pg.c +35 -44
- data/ext/pg.h +6 -1
- data/ext/vc/pg.sln +26 -0
- data/spec/pgconn_spec.rb +34 -31
- data/spec/pgresult_spec.rb +20 -16
- metadata +16 -3
data/ext/pg.h
CHANGED
@@ -3,7 +3,6 @@
|
|
3
3
|
#include <sys/types.h>
|
4
4
|
|
5
5
|
#include "ruby.h"
|
6
|
-
#include "rubyio.h"
|
7
6
|
#include "libpq-fe.h"
|
8
7
|
#include "libpq/libpq-fs.h" /* large-object interface */
|
9
8
|
|
@@ -31,7 +30,13 @@
|
|
31
30
|
|
32
31
|
#ifdef RUBY_18_COMPAT
|
33
32
|
#define rb_io_stdio_file GetWriteFile
|
33
|
+
#include "rubyio.h"
|
34
|
+
#else
|
35
|
+
#include "ruby/io.h"
|
34
36
|
#endif
|
35
37
|
|
38
|
+
#if defined(_WIN32)
|
39
|
+
__declspec(dllexport)
|
40
|
+
#endif
|
36
41
|
void Init_pg(void);
|
37
42
|
|
data/ext/vc/pg.sln
ADDED
@@ -0,0 +1,26 @@
|
|
1
|
+
|
2
|
+
Microsoft Visual Studio Solution File, Format Version 10.00
|
3
|
+
# Visual Studio 2008
|
4
|
+
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "pg", "pg_18\pg.vcproj", "{9A8BF0C8-1D75-4DC0-8D84-BAEFD693795E}"
|
5
|
+
EndProject
|
6
|
+
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "pg_19", "pg_19\pg_19.vcproj", "{2EE30C74-074F-4611-B39B-38D5F3C9B071}"
|
7
|
+
EndProject
|
8
|
+
Global
|
9
|
+
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
10
|
+
Debug|Win32 = Debug|Win32
|
11
|
+
Release|Win32 = Release|Win32
|
12
|
+
EndGlobalSection
|
13
|
+
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
14
|
+
{9A8BF0C8-1D75-4DC0-8D84-BAEFD693795E}.Debug|Win32.ActiveCfg = Debug|Win32
|
15
|
+
{9A8BF0C8-1D75-4DC0-8D84-BAEFD693795E}.Debug|Win32.Build.0 = Debug|Win32
|
16
|
+
{9A8BF0C8-1D75-4DC0-8D84-BAEFD693795E}.Release|Win32.ActiveCfg = Release|Win32
|
17
|
+
{9A8BF0C8-1D75-4DC0-8D84-BAEFD693795E}.Release|Win32.Build.0 = Release|Win32
|
18
|
+
{2EE30C74-074F-4611-B39B-38D5F3C9B071}.Debug|Win32.ActiveCfg = Debug|Win32
|
19
|
+
{2EE30C74-074F-4611-B39B-38D5F3C9B071}.Debug|Win32.Build.0 = Debug|Win32
|
20
|
+
{2EE30C74-074F-4611-B39B-38D5F3C9B071}.Release|Win32.ActiveCfg = Release|Win32
|
21
|
+
{2EE30C74-074F-4611-B39B-38D5F3C9B071}.Release|Win32.Build.0 = Release|Win32
|
22
|
+
EndGlobalSection
|
23
|
+
GlobalSection(SolutionProperties) = preSolution
|
24
|
+
HideSolutionNode = FALSE
|
25
|
+
EndGlobalSection
|
26
|
+
EndGlobal
|
data/spec/pgconn_spec.rb
CHANGED
@@ -8,22 +8,21 @@ describe PGconn do
|
|
8
8
|
|
9
9
|
before( :all ) do
|
10
10
|
puts "====== TESTING PGconn ======"
|
11
|
-
@test_directory =
|
12
|
-
@test_pgdata = @test_directory
|
11
|
+
@test_directory = File.join(Dir.getwd, "tmp_test_#{rand}")
|
12
|
+
@test_pgdata = File.join(@test_directory, 'data')
|
13
13
|
if File.exists?(@test_directory) then
|
14
14
|
raise "test directory exists!"
|
15
15
|
end
|
16
|
-
|
16
|
+
@port = 54321
|
17
|
+
@conninfo = "host=localhost port=#{@port} dbname=test"
|
17
18
|
Dir.mkdir(@test_directory)
|
18
19
|
Dir.mkdir(@test_pgdata)
|
19
20
|
cmds = []
|
20
|
-
cmds << "initdb -D
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
cmds << "sleep 2"
|
26
|
-
cmds << "createdb -h '#{@test_directory}' test"
|
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
|
+
|
27
26
|
cmds.each do |cmd|
|
28
27
|
if not system(cmd) then
|
29
28
|
raise "Error executing cmd: #{cmd}: #{$?}"
|
@@ -39,15 +38,15 @@ describe PGconn do
|
|
39
38
|
end
|
40
39
|
|
41
40
|
it "should connect using 7 arguments converted to strings" do
|
42
|
-
tmpconn = PGconn.connect(
|
41
|
+
tmpconn = PGconn.connect('localhost', @port, nil, nil, :test, nil, nil)
|
43
42
|
tmpconn.status.should== PGconn::CONNECTION_OK
|
44
43
|
tmpconn.finish
|
45
44
|
end
|
46
45
|
|
47
46
|
it "should connect using hash" do
|
48
47
|
tmpconn = PGconn.connect(
|
49
|
-
:host =>
|
50
|
-
:port =>
|
48
|
+
:host => 'localhost',
|
49
|
+
:port => @port,
|
51
50
|
:dbname => :test)
|
52
51
|
tmpconn.status.should== PGconn::CONNECTION_OK
|
53
52
|
tmpconn.finish
|
@@ -82,23 +81,27 @@ describe PGconn do
|
|
82
81
|
res[0]['n'].should == '1'
|
83
82
|
end
|
84
83
|
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
trace_file = open("#{@test_directory}/test_trace.out", 'w')
|
91
|
-
@conn.trace(trace_file)
|
92
|
-
trace_file.close
|
93
|
-
res = @conn.exec("SELECT 1 AS one")
|
94
|
-
@conn.untrace
|
95
|
-
res = @conn.exec("SELECT 2 AS two")
|
96
|
-
trace_file = open("#{@test_directory}/test_trace.out")
|
97
|
-
trace_data = trace_file.read
|
98
|
-
trace_file.close
|
99
|
-
trace_data.should == expected_trace_data
|
100
|
-
end
|
84
|
+
unless RUBY_PLATFORM =~ /mswin|mingw/
|
85
|
+
it "should trace and untrace client-server communication" do
|
86
|
+
# be careful to explicitly close files so that the
|
87
|
+
# directory can be removed and we don't have to wait for
|
88
|
+
# the GC to run.
|
101
89
|
|
90
|
+
expected_trace_file = File.join(Dir.getwd, "spec/data", "expected_trace.out")
|
91
|
+
expected_trace_data = open(expected_trace_file, 'rb').read
|
92
|
+
trace_file = open(File.join(@test_directory, "test_trace.out"), 'wb')
|
93
|
+
@conn.trace(trace_file)
|
94
|
+
trace_file.close
|
95
|
+
res = @conn.exec("SELECT 1 AS one")
|
96
|
+
@conn.untrace
|
97
|
+
res = @conn.exec("SELECT 2 AS two")
|
98
|
+
trace_file = open(File.join(@test_directory, "test_trace.out"), 'rb')
|
99
|
+
trace_data = trace_file.read
|
100
|
+
trace_file.close
|
101
|
+
trace_data.should == expected_trace_data
|
102
|
+
end
|
103
|
+
end
|
104
|
+
|
102
105
|
it "should cancel a query" do
|
103
106
|
error = false
|
104
107
|
@conn.send_query("SELECT pg_sleep(1000)")
|
@@ -114,8 +117,8 @@ describe PGconn do
|
|
114
117
|
puts ""
|
115
118
|
@conn.finish
|
116
119
|
cmds = []
|
117
|
-
cmds << "pg_ctl -D
|
118
|
-
cmds << "rm -rf
|
120
|
+
cmds << "pg_ctl -D \"#{@test_pgdata}\" stop"
|
121
|
+
cmds << "rm -rf \"#{@test_directory}\""
|
119
122
|
cmds.each do |cmd|
|
120
123
|
if not system(cmd) then
|
121
124
|
raise "Error executing cmd: #{cmd}: #{$?}"
|
data/spec/pgresult_spec.rb
CHANGED
@@ -8,22 +8,21 @@ describe PGconn do
|
|
8
8
|
|
9
9
|
before( :all ) do
|
10
10
|
puts "====== TESTING PGresult ======"
|
11
|
-
@test_directory =
|
12
|
-
@test_pgdata = @test_directory
|
11
|
+
@test_directory = File.join(Dir.getwd, "tmp_test_#{rand}")
|
12
|
+
@test_pgdata = File.join(@test_directory, 'data')
|
13
13
|
if File.exists?(@test_directory) then
|
14
14
|
raise "test directory exists!"
|
15
15
|
end
|
16
|
-
|
16
|
+
@port = 54321
|
17
|
+
@conninfo = "host=localhost port=#{@port} dbname=test"
|
17
18
|
Dir.mkdir(@test_directory)
|
18
19
|
Dir.mkdir(@test_pgdata)
|
19
20
|
cmds = []
|
20
|
-
cmds << "initdb -D
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
cmds << "sleep 2"
|
26
|
-
cmds << "createdb -h '#{@test_directory}' test"
|
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
|
+
|
27
26
|
cmds.each do |cmd|
|
28
27
|
if not system(cmd) then
|
29
28
|
raise "Error executing cmd: #{cmd}: #{$?}"
|
@@ -56,14 +55,16 @@ describe PGconn do
|
|
56
55
|
end
|
57
56
|
|
58
57
|
it "should return the same bytes in binary format that are sent in binary format" do
|
59
|
-
|
58
|
+
binary_file = File.join(Dir.pwd, 'spec/data', 'random_binary_data')
|
59
|
+
bytes = File.open(binary_file, 'rb').read
|
60
60
|
res = @conn.exec('VALUES ($1::bytea)',
|
61
61
|
[ { :value => bytes, :format => 1 } ], 1)
|
62
62
|
res[0]['column1'].should== bytes
|
63
63
|
end
|
64
64
|
|
65
65
|
it "should return the same bytes in binary format that are sent as inline text" do
|
66
|
-
|
66
|
+
binary_file = File.join(Dir.pwd, 'spec/data', 'random_binary_data')
|
67
|
+
in_bytes = File.open(binary_file, 'rb').read
|
67
68
|
out_bytes = nil
|
68
69
|
@conn.transaction do |conn|
|
69
70
|
conn.exec("SET standard_conforming_strings=on")
|
@@ -74,14 +75,17 @@ describe PGconn do
|
|
74
75
|
end
|
75
76
|
|
76
77
|
it "should return the same bytes in text format that are sent in binary format" do
|
77
|
-
|
78
|
+
binary_file = File.join(Dir.pwd, 'spec/data', 'random_binary_data')
|
79
|
+
bytes = File.open(binary_file, 'rb').read
|
78
80
|
res = @conn.exec('VALUES ($1::bytea)',
|
79
81
|
[ { :value => bytes, :format => 1 } ])
|
80
82
|
PGconn.unescape_bytea(res[0]['column1']).should== bytes
|
81
83
|
end
|
82
84
|
|
83
85
|
it "should return the same bytes in text format that are sent as inline text" do
|
84
|
-
|
86
|
+
binary_file = File.join(Dir.pwd, 'spec/data', 'random_binary_data')
|
87
|
+
in_bytes = File.open(binary_file, 'rb').read
|
88
|
+
|
85
89
|
out_bytes = nil
|
86
90
|
@conn.transaction do |conn|
|
87
91
|
conn.exec("SET standard_conforming_strings=on")
|
@@ -95,8 +99,8 @@ describe PGconn do
|
|
95
99
|
puts ""
|
96
100
|
@conn.finish
|
97
101
|
cmds = []
|
98
|
-
cmds << "pg_ctl -D
|
99
|
-
cmds << "rm -rf
|
102
|
+
cmds << "pg_ctl -D \"#{@test_pgdata}\" stop"
|
103
|
+
cmds << "rm -rf \"#{@test_directory}\""
|
100
104
|
cmds.each do |cmd|
|
101
105
|
if not system(cmd) then
|
102
106
|
raise "Error executing cmd: #{cmd}: #{$?}"
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pg
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.8.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Yukihiro Matsumoto
|
@@ -13,7 +13,7 @@ autorequire:
|
|
13
13
|
bindir: bin
|
14
14
|
cert_chain: []
|
15
15
|
|
16
|
-
date:
|
16
|
+
date: 2009-03-29 00:00:00 -07:00
|
17
17
|
default_executable:
|
18
18
|
dependencies: []
|
19
19
|
|
@@ -26,14 +26,27 @@ extensions:
|
|
26
26
|
extra_rdoc_files:
|
27
27
|
- ext/pg.c
|
28
28
|
files:
|
29
|
+
- Rakefile
|
30
|
+
- README
|
31
|
+
- LICENSE
|
32
|
+
- COPYING.txt
|
33
|
+
- ChangeLog
|
34
|
+
- Contributors
|
35
|
+
- GPL
|
36
|
+
- BSD
|
29
37
|
- doc/postgres.html
|
30
38
|
- doc/postgres.jp.html
|
31
39
|
- ext/extconf.rb
|
32
40
|
- ext/pg.h
|
41
|
+
- ext/vc
|
33
42
|
- ext/compat.c
|
34
43
|
- ext/pg.c
|
44
|
+
- ext/mingw
|
35
45
|
- ext/mkrf_config.rb
|
36
46
|
- ext/compat.h
|
47
|
+
- ext/mingw/Rakefile
|
48
|
+
- ext/mingw/build.rake
|
49
|
+
- ext/vc/pg.sln
|
37
50
|
- sample/losample.rb
|
38
51
|
- sample/psqlHelp.rb
|
39
52
|
- sample/psql.rb
|
@@ -56,7 +69,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
56
69
|
requirements:
|
57
70
|
- - ">="
|
58
71
|
- !ruby/object:Gem::Version
|
59
|
-
version:
|
72
|
+
version: 1.8.4
|
60
73
|
version:
|
61
74
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
62
75
|
requirements:
|