do_postgres 0.10.8-java → 0.10.9-java

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/ChangeLog.markdown CHANGED
@@ -1,3 +1,8 @@
1
+ ## 0.10.9 2012-08-13
2
+
3
+ * Improved RETURNING handling on JRuby
4
+ * Allow for an empty database name
5
+
1
6
  ## 0.10.8 2012-02-10
2
7
 
3
8
  * Ruby 1.9.3 compatibility on Windows
data/Rakefile CHANGED
@@ -15,7 +15,7 @@ JRUBY = RUBY_PLATFORM =~ /java/
15
15
  IRONRUBY = defined?(RUBY_ENGINE) && RUBY_ENGINE == 'ironruby'
16
16
  WINDOWS = Gem.win_platform? || (JRUBY && ENV_JAVA['os.name'] =~ /windows/i)
17
17
  SUDO = WINDOWS ? '' : ('sudo' unless ENV['SUDOLESS'])
18
- BINARY_VERSION = '8.3.15'
18
+ BINARY_VERSION = '8.4.12'
19
19
 
20
20
  CLEAN.include(%w[ {tmp,pkg}/ **/*.{o,so,bundle,jar,log,a,gem,dSYM,obj,pdb,exp,DS_Store,rbc,db} ext/do_postgres/Makefile ext-java/target ])
21
21
 
@@ -185,6 +185,10 @@ VALUE data_objects_parse_date(const char *date) {
185
185
  return Qnil;
186
186
  }
187
187
 
188
+ if(!year && !month && !day) {
189
+ return Qnil;
190
+ }
191
+
188
192
  return rb_funcall(rb_cDate, ID_NEW, 3, INT2NUM(year), INT2NUM(month), INT2NUM(day));
189
193
  }
190
194
 
@@ -237,6 +241,10 @@ VALUE data_objects_parse_date_time(const char *date) {
237
241
  fmt_datetime = strchr(date, '.') ? _fmt_datetime_tz_subsec : _fmt_datetime_tz_normal;
238
242
  tokens_read = sscanf(date, fmt_datetime, &year, &month, &day, &hour, &min, &sec, &hour_offset, &minute_offset);
239
243
 
244
+ if(!year && !month && !day && !hour && !min && !sec) {
245
+ return Qnil;
246
+ }
247
+
240
248
  switch (tokens_read) {
241
249
  case 8:
242
250
  minute_offset *= hour_offset < 0 ? -1 : 1;
@@ -395,7 +395,7 @@ void do_postgres_full_connect(VALUE self, PGconn *db) {
395
395
  }
396
396
 
397
397
  if (!database || !*database) {
398
- rb_raise(eConnectionError, "Database must be specified");
398
+ database = NULL;
399
399
  }
400
400
 
401
401
  VALUE r_query = rb_iv_get(self, "@query");
data/lib/do_postgres.rb CHANGED
@@ -11,7 +11,7 @@ if RUBY_PLATFORM =~ /java/
11
11
 
12
12
  begin
13
13
  java.lang.Thread.currentThread.getContextClassLoader().loadClass(DataObjects::Postgres::JDBC_DRIVER, true)
14
- rescue
14
+ rescue java.lang.ClassNotFoundException
15
15
  require 'jdbc/postgres' # the JDBC driver, packaged as a gem
16
16
  end
17
17
 
Binary file
@@ -1,5 +1,5 @@
1
1
  module DataObjects
2
2
  module Postgres
3
- VERSION = '0.10.8'
3
+ VERSION = '0.10.9'
4
4
  end
5
5
  end
data/spec/command_spec.rb CHANGED
@@ -6,4 +6,40 @@ require 'data_objects/spec/shared/command_spec'
6
6
  describe DataObjects::Postgres::Command do
7
7
  it_should_behave_like 'a Command'
8
8
  it_should_behave_like 'a Command with async'
9
+
10
+ describe 'query with RETURNING while not returning result' do
11
+ before do
12
+ @connection = DataObjects::Connection.new(CONFIG.uri)
13
+ @select_command = @connection.create_command("SELECT name FROM users WHERE id = 900")
14
+ @upsert_command = @connection.create_command("
15
+ WITH upsert AS
16
+ (UPDATE users SET name = ? WHERE id = 900 RETURNING id)
17
+ INSERT INTO users (id, name)
18
+ SELECT 900, 'dbussink' WHERE NOT EXISTS (SELECT 1 FROM upsert)")
19
+ end
20
+
21
+ after do
22
+ @connection.close
23
+ end
24
+
25
+ it "should work with a writable CTE acting as an Upsert" do
26
+ reader = @select_command.execute_reader
27
+ reader.to_a.size.should == 0
28
+ reader.close
29
+
30
+ @upsert_command.execute_non_query('jwkoelewijn')
31
+
32
+ reader = @select_command.execute_reader
33
+ reader.next!
34
+ reader.values[0].should == 'dbussink'
35
+ reader.close
36
+
37
+ @upsert_command.execute_non_query('jwkoelewijn')
38
+
39
+ reader = @select_command.execute_reader
40
+ reader.next!
41
+ reader.values[0].should == 'jwkoelewijn'
42
+ reader.close
43
+ end
44
+ end
9
45
  end
@@ -16,6 +16,7 @@ describe DataObjects::Postgres::Connection do
16
16
 
17
17
  it_should_behave_like 'a Connection'
18
18
  it_should_behave_like 'a Connection with authentication support'
19
+ it_should_behave_like 'a Connection allowing default database'
19
20
  it_should_behave_like 'a Connection with JDBC URL support' if JRUBY
20
21
 
21
22
  describe 'byte array quoting' do
data/tasks/compile.rake CHANGED
@@ -40,7 +40,7 @@ begin
40
40
  At the time of building this gem, the necessary DLL files where available
41
41
  in the following download:
42
42
 
43
- http://wwwmaster.postgresql.org/redir/107/h/binary/v#{BINARY_VERSION}/win32/postgresql-#{BINARY_VERSION}-1-binaries-no-installer.zip
43
+ http://wwwmaster.postgresql.org/redir/107/h/binary/v#{BINARY_VERSION}/win32/postgresql-#{BINARY_VERSION}-1-windows-binaries.zip
44
44
 
45
45
  You can put the following files available in this package in your Ruby bin
46
46
  directory, for example C:\\Ruby\\bin
@@ -70,7 +70,7 @@ begin
70
70
  ext.classpath = '../do_jdbc/lib/do_jdbc_internal.jar'
71
71
  ext.java_compiling do |gem|
72
72
  gem.add_dependency 'jdbc-postgres', '>=8.2'
73
- gem.add_dependency 'do_jdbc', '0.10.8'
73
+ gem.add_dependency 'do_jdbc', '0.10.9'
74
74
  end
75
75
  end
76
76
  rescue LoadError
data/tasks/retrieve.rake CHANGED
@@ -33,7 +33,7 @@ begin
33
33
  end
34
34
 
35
35
  version = BINARY_VERSION
36
- file "vendor/postgresql-#{version}-1-binaries-no-installer.zip" => ['vendor'] do |t|
36
+ file "vendor/postgresql-#{version}-1-windows-binaries.zip" => ['vendor'] do |t|
37
37
  url = "http://wwwmaster.postgresql.org/redir/107/h/binary/v#{version}/win32/#{File.basename(t.name)}"
38
38
  when_writing "downloading #{t.name}" do
39
39
  cd File.dirname(t.name) do
@@ -42,7 +42,7 @@ begin
42
42
  end
43
43
  end
44
44
 
45
- file "vendor/pgsql/include/pg_config.h" => ["vendor/postgresql-#{version}-1-binaries-no-installer.zip"] do |t|
45
+ file "vendor/pgsql/include/pg_config.h" => ["vendor/postgresql-#{version}-1-windows-binaries.zip"] do |t|
46
46
  full_file = File.expand_path(t.prerequisites.last)
47
47
  when_writing "creating #{t.name}" do
48
48
  cd "vendor" do
metadata CHANGED
@@ -1,13 +1,12 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: do_postgres
3
3
  version: !ruby/object:Gem::Version
4
- hash: 39
5
- prerelease:
4
+ prerelease: false
6
5
  segments:
7
6
  - 0
8
7
  - 10
9
- - 8
10
- version: 0.10.8
8
+ - 9
9
+ version: 0.10.9
11
10
  platform: java
12
11
  authors:
13
12
  - Dirkjan Bussink
@@ -15,84 +14,75 @@ autorequire:
15
14
  bindir: bin
16
15
  cert_chain: []
17
16
 
18
- date: 2011-03-29 00:00:00 Z
17
+ date: 2011-03-29 00:00:00 +02:00
18
+ default_executable:
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
21
+ prerelease: false
22
+ type: :runtime
23
+ name: data_objects
21
24
  version_requirements: &id001 !ruby/object:Gem::Requirement
22
- none: false
23
25
  requirements:
24
26
  - - "="
25
27
  - !ruby/object:Gem::Version
26
- hash: 39
27
28
  segments:
28
29
  - 0
29
30
  - 10
30
- - 8
31
- version: 0.10.8
32
- name: data_objects
33
- prerelease: false
34
- type: :runtime
31
+ - 9
32
+ version: 0.10.9
35
33
  requirement: *id001
36
34
  - !ruby/object:Gem::Dependency
35
+ prerelease: false
36
+ type: :development
37
+ name: rspec
37
38
  version_requirements: &id002 !ruby/object:Gem::Requirement
38
- none: false
39
39
  requirements:
40
40
  - - ~>
41
41
  - !ruby/object:Gem::Version
42
- hash: 9
43
42
  segments:
44
43
  - 2
45
44
  - 5
46
45
  version: "2.5"
47
- name: rspec
48
- prerelease: false
49
- type: :development
50
46
  requirement: *id002
51
47
  - !ruby/object:Gem::Dependency
48
+ prerelease: false
49
+ type: :development
50
+ name: rake-compiler
52
51
  version_requirements: &id003 !ruby/object:Gem::Requirement
53
- none: false
54
52
  requirements:
55
53
  - - ~>
56
54
  - !ruby/object:Gem::Version
57
- hash: 5
58
55
  segments:
59
56
  - 0
60
57
  - 7
61
58
  version: "0.7"
62
- name: rake-compiler
63
- prerelease: false
64
- type: :development
65
59
  requirement: *id003
66
60
  - !ruby/object:Gem::Dependency
61
+ prerelease: false
62
+ type: :runtime
63
+ name: jdbc-postgres
67
64
  version_requirements: &id004 !ruby/object:Gem::Requirement
68
- none: false
69
65
  requirements:
70
66
  - - ">="
71
67
  - !ruby/object:Gem::Version
72
- hash: 47
73
68
  segments:
74
69
  - 8
75
70
  - 2
76
71
  version: "8.2"
77
- name: jdbc-postgres
78
- prerelease: false
79
- type: :runtime
80
72
  requirement: *id004
81
73
  - !ruby/object:Gem::Dependency
74
+ prerelease: false
75
+ type: :runtime
76
+ name: do_jdbc
82
77
  version_requirements: &id005 !ruby/object:Gem::Requirement
83
- none: false
84
78
  requirements:
85
79
  - - "="
86
80
  - !ruby/object:Gem::Version
87
- hash: 39
88
81
  segments:
89
82
  - 0
90
83
  - 10
91
- - 8
92
- version: 0.10.8
93
- name: do_jdbc
94
- prerelease: false
95
- type: :runtime
84
+ - 9
85
+ version: 0.10.9
96
86
  requirement: *id005
97
87
  description: Implements the DataObjects API for PostgreSQL
98
88
  email: d.bussink@gmail.com
@@ -146,6 +136,7 @@ files:
146
136
  - tasks/retrieve.rake
147
137
  - tasks/spec.rake
148
138
  - lib/do_postgres/do_postgres.jar
139
+ has_rdoc: true
149
140
  homepage:
150
141
  licenses: []
151
142
 
@@ -155,27 +146,23 @@ rdoc_options: []
155
146
  require_paths:
156
147
  - lib
157
148
  required_ruby_version: !ruby/object:Gem::Requirement
158
- none: false
159
149
  requirements:
160
150
  - - ">="
161
151
  - !ruby/object:Gem::Version
162
- hash: 3
163
152
  segments:
164
153
  - 0
165
154
  version: "0"
166
155
  required_rubygems_version: !ruby/object:Gem::Requirement
167
- none: false
168
156
  requirements:
169
157
  - - ">="
170
158
  - !ruby/object:Gem::Version
171
- hash: 3
172
159
  segments:
173
160
  - 0
174
161
  version: "0"
175
162
  requirements: []
176
163
 
177
164
  rubyforge_project: dorb
178
- rubygems_version: 1.8.14
165
+ rubygems_version: 1.3.6
179
166
  signing_key:
180
167
  specification_version: 3
181
168
  summary: DataObjects PostgreSQL Driver