do_postgres 0.10.8 → 0.10.9

Sign up to get free protection for your applications and to get access to all the features.
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");
@@ -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/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
 
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: ruby
12
11
  authors:
13
12
  - Dirkjan Bussink
@@ -15,33 +14,30 @@ 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
21
  name: data_objects
22
22
  prerelease: false
23
23
  requirement: &id001 !ruby/object:Gem::Requirement
24
- none: false
25
24
  requirements:
26
25
  - - "="
27
26
  - !ruby/object:Gem::Version
28
- hash: 39
29
27
  segments:
30
28
  - 0
31
29
  - 10
32
- - 8
33
- version: 0.10.8
30
+ - 9
31
+ version: 0.10.9
34
32
  type: :runtime
35
33
  version_requirements: *id001
36
34
  - !ruby/object:Gem::Dependency
37
35
  name: rspec
38
36
  prerelease: false
39
37
  requirement: &id002 !ruby/object:Gem::Requirement
40
- none: false
41
38
  requirements:
42
39
  - - ~>
43
40
  - !ruby/object:Gem::Version
44
- hash: 9
45
41
  segments:
46
42
  - 2
47
43
  - 5
@@ -52,11 +48,9 @@ dependencies:
52
48
  name: rake-compiler
53
49
  prerelease: false
54
50
  requirement: &id003 !ruby/object:Gem::Requirement
55
- none: false
56
51
  requirements:
57
52
  - - ~>
58
53
  - !ruby/object:Gem::Version
59
- hash: 5
60
54
  segments:
61
55
  - 0
62
56
  - 7
@@ -114,6 +108,7 @@ files:
114
108
  - tasks/release.rake
115
109
  - tasks/retrieve.rake
116
110
  - tasks/spec.rake
111
+ has_rdoc: true
117
112
  homepage:
118
113
  licenses: []
119
114
 
@@ -123,27 +118,23 @@ rdoc_options: []
123
118
  require_paths:
124
119
  - lib
125
120
  required_ruby_version: !ruby/object:Gem::Requirement
126
- none: false
127
121
  requirements:
128
122
  - - ">="
129
123
  - !ruby/object:Gem::Version
130
- hash: 3
131
124
  segments:
132
125
  - 0
133
126
  version: "0"
134
127
  required_rubygems_version: !ruby/object:Gem::Requirement
135
- none: false
136
128
  requirements:
137
129
  - - ">="
138
130
  - !ruby/object:Gem::Version
139
- hash: 3
140
131
  segments:
141
132
  - 0
142
133
  version: "0"
143
134
  requirements: []
144
135
 
145
136
  rubyforge_project: dorb
146
- rubygems_version: 1.8.14
137
+ rubygems_version: 1.3.6
147
138
  signing_key:
148
139
  specification_version: 3
149
140
  summary: DataObjects PostgreSQL Driver