blob: d945aa79ee790b47282fdd22bc74b19bd823f7b2 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
|
# encoding: utf-8
require File.expand_path(File.join(File.dirname(__FILE__), 'spec_helper'))
require 'data_objects/spec/shared/command_spec'
describe DataObjects::Postgres::Command do
it_should_behave_like 'a Command'
it_should_behave_like 'a Command with async'
describe 'query with RETURNING while not returning result' do
before do
@connection = DataObjects::Connection.new(CONFIG.uri)
@select_command = @connection.create_command("SELECT name FROM users WHERE id = 900")
@upsert_command = @connection.create_command("
WITH upsert AS
(UPDATE users SET name = ? WHERE id = 900 RETURNING id)
INSERT INTO users (id, name)
SELECT 900, 'dbussink' WHERE NOT EXISTS (SELECT 1 FROM upsert)")
end
after do
@connection.close
end
it "should work with a writable CTE acting as an Upsert" do
reader = @select_command.execute_reader
reader.to_a.size.should == 0
reader.close
@upsert_command.execute_non_query('jwkoelewijn')
reader = @select_command.execute_reader
reader.next!
reader.values[0].should == 'dbussink'
reader.close
@upsert_command.execute_non_query('jwkoelewijn')
reader = @select_command.execute_reader
reader.next!
reader.values[0].should == 'jwkoelewijn'
reader.close
end
end
end
|