swift-db-postgres 0.1.1 → 0.1.2
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG +4 -0
- data/ext/swift/db/postgres/adapter.c +3 -1
- data/ext/swift/db/postgres/statement.c +2 -0
- data/test/test_adapter.rb +19 -0
- metadata +7 -8
data/CHANGELOG
CHANGED
@@ -70,7 +70,7 @@ VALUE db_postgres_adapter_initialize(VALUE self, VALUE options) {
|
|
70
70
|
|
71
71
|
db = rb_hash_aref(options, ID2SYM(rb_intern("db")));
|
72
72
|
user = rb_hash_aref(options, ID2SYM(rb_intern("user")));
|
73
|
-
pass = rb_hash_aref(options, ID2SYM(rb_intern("
|
73
|
+
pass = rb_hash_aref(options, ID2SYM(rb_intern("password")));
|
74
74
|
host = rb_hash_aref(options, ID2SYM(rb_intern("host")));
|
75
75
|
port = rb_hash_aref(options, ID2SYM(rb_intern("port")));
|
76
76
|
ssl = rb_hash_aref(options, ID2SYM(rb_intern("ssl")));
|
@@ -137,6 +137,7 @@ VALUE db_postgres_adapter_execute(int argc, VALUE *argv, VALUE self) {
|
|
137
137
|
bind_args_fmt = (int *) malloc(sizeof(int) * RARRAY_LEN(bind));
|
138
138
|
bind_args_data = (char **) malloc(sizeof(char *) * RARRAY_LEN(bind));
|
139
139
|
|
140
|
+
rb_gc_register_address(&bind);
|
140
141
|
for (n = 0; n < RARRAY_LEN(bind); n++) {
|
141
142
|
data = rb_ary_entry(bind, n);
|
142
143
|
if (NIL_P(data)) {
|
@@ -166,6 +167,7 @@ VALUE db_postgres_adapter_execute(int argc, VALUE *argv, VALUE self) {
|
|
166
167
|
};
|
167
168
|
|
168
169
|
pg_result = (PGresult *)rb_thread_blocking_region(nogvl_pq_exec_params, &q, RUBY_UBF_IO, 0);
|
170
|
+
rb_gc_unregister_address(&bind);
|
169
171
|
free(bind_args_size);
|
170
172
|
free(bind_args_data);
|
171
173
|
free(bind_args_fmt);
|
@@ -110,6 +110,7 @@ VALUE db_postgres_statement_execute(int argc, VALUE *argv, VALUE self) {
|
|
110
110
|
bind_args_fmt = (int *) malloc(sizeof(int) * RARRAY_LEN(bind));
|
111
111
|
bind_args_data = (char **) malloc(sizeof(char *) * RARRAY_LEN(bind));
|
112
112
|
|
113
|
+
rb_gc_register_address(&bind);
|
113
114
|
for (n = 0; n < RARRAY_LEN(bind); n++) {
|
114
115
|
data = rb_ary_entry(bind, n);
|
115
116
|
if (NIL_P(data)) {
|
@@ -138,6 +139,7 @@ VALUE db_postgres_statement_execute(int argc, VALUE *argv, VALUE self) {
|
|
138
139
|
};
|
139
140
|
|
140
141
|
result = (PGresult *)rb_thread_blocking_region(nogvl_pq_exec_prepared, &q, RUBY_UBF_IO, 0);
|
142
|
+
rb_gc_unregister_address(&bind);
|
141
143
|
free(bind_args_fmt);
|
142
144
|
free(bind_args_size);
|
143
145
|
free(bind_args_data);
|
data/test/test_adapter.rb
CHANGED
@@ -46,6 +46,9 @@ require 'helper'
|
|
46
46
|
result = db.execute('select * from users')
|
47
47
|
assert_equal %w(id name age created_at).map(&:to_sym), result.fields
|
48
48
|
assert_equal %w(integer text integer timestamp), result.types
|
49
|
+
|
50
|
+
# like query
|
51
|
+
assert db.execute('select * from users where name like ?', '%foo%')
|
49
52
|
end
|
50
53
|
|
51
54
|
it 'should close handle' do
|
@@ -105,4 +108,20 @@ require 'helper'
|
|
105
108
|
assert_raises(Swift::RuntimeError) { db.write("users", "bar") }
|
106
109
|
assert_raises(Swift::RuntimeError) { db.write("users", %w(name), "bar") }
|
107
110
|
end
|
111
|
+
|
112
|
+
# TODO
|
113
|
+
it 'should not change the hstore ? operator' do
|
114
|
+
skip
|
115
|
+
assert db.execute('create extension if not exists hstore')
|
116
|
+
assert db.execute('drop table if exists hstore_test')
|
117
|
+
assert db.execute('create table hstore_test(id int, payload hstore)')
|
118
|
+
assert db.execute('insert into hstore_test values(1, ?)', 'a => 1, b => 2')
|
119
|
+
|
120
|
+
assert_equal 1, db.execute('select * from hstore_test where payload ? $1', 'a').selected_rows
|
121
|
+
assert_equal 0, db.execute('select * from hstore_test where payload ? $1', 'c').selected_rows
|
122
|
+
assert_equal 1, db.execute('select * from hstore_test where payload ? ?', 'a').selected_rows
|
123
|
+
|
124
|
+
assert_equal 1, db.execute('select * from hstore_test where payload ?| ARRAY[?, ?]', 'a', 'b').selected_rows
|
125
|
+
assert_equal 1, db.execute('select * from hstore_test where payload ?& ARRAY[?, ?]', 'a', 'b').selected_rows
|
126
|
+
end
|
108
127
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: swift-db-postgres
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.2
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-07-
|
12
|
+
date: 2012-07-29 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rake
|
@@ -36,12 +36,12 @@ extensions:
|
|
36
36
|
extra_rdoc_files: []
|
37
37
|
files:
|
38
38
|
- ext/swift/db/postgres/datetime.c
|
39
|
-
- ext/swift/db/postgres/result.c
|
40
|
-
- ext/swift/db/postgres/common.c
|
41
|
-
- ext/swift/db/postgres/typecast.c
|
42
39
|
- ext/swift/db/postgres/statement.c
|
43
|
-
- ext/swift/db/postgres/
|
40
|
+
- ext/swift/db/postgres/typecast.c
|
41
|
+
- ext/swift/db/postgres/common.c
|
44
42
|
- ext/swift/db/postgres/main.c
|
43
|
+
- ext/swift/db/postgres/result.c
|
44
|
+
- ext/swift/db/postgres/adapter.c
|
45
45
|
- ext/swift/db/postgres/typecast.h
|
46
46
|
- ext/swift/db/postgres/common.h
|
47
47
|
- ext/swift/db/postgres/datetime.h
|
@@ -52,8 +52,8 @@ files:
|
|
52
52
|
- test/test_ssl.rb
|
53
53
|
- test/test_adapter.rb
|
54
54
|
- test/test_encoding.rb
|
55
|
-
- test/helper.rb
|
56
55
|
- test/test_async.rb
|
56
|
+
- test/helper.rb
|
57
57
|
- lib/swift/db/postgres.rb
|
58
58
|
- lib/swift-db-postgres.rb
|
59
59
|
- README.md
|
@@ -84,4 +84,3 @@ signing_key:
|
|
84
84
|
specification_version: 3
|
85
85
|
summary: Swift postgres adapter
|
86
86
|
test_files: []
|
87
|
-
has_rdoc:
|