swift-db-sqlite3 0.1.1 → 0.1.2
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 +6 -0
- data/ext/swift/db/sqlite3/extconf.rb +27 -3
- data/ext/swift/db/sqlite3/result.c +13 -12
- data/ext/swift/db/sqlite3/statement.c +5 -3
- metadata +12 -13
data/CHANGELOG
CHANGED
@@ -4,7 +4,31 @@ require 'mkmf'
|
|
4
4
|
|
5
5
|
$CFLAGS = '-std=c99 -Os'
|
6
6
|
|
7
|
-
|
8
|
-
|
9
|
-
|
7
|
+
inc_paths = %w(
|
8
|
+
/usr/include
|
9
|
+
/usr/local/include
|
10
|
+
/opt/local/include
|
11
|
+
/sw/include
|
12
|
+
)
|
13
|
+
|
14
|
+
lib_paths = %w(
|
15
|
+
/usr/lib
|
16
|
+
/usr/local/lib
|
17
|
+
/opt/local/lib
|
18
|
+
/sw/lib
|
19
|
+
)
|
20
|
+
|
21
|
+
def ensure_library name, lib_paths, hint = nil
|
22
|
+
unless find_library(name, 'main', *lib_paths)
|
23
|
+
puts $/, '#' * 80, hint, '#' * 80, $/ if hint
|
24
|
+
raise "unable to find #{name}"
|
25
|
+
end
|
26
|
+
end
|
10
27
|
|
28
|
+
find_header('sqlite3.h', *inc_paths) or raise 'unable to locate sqlite3 headers'
|
29
|
+
find_header('uuid/uuid.h', *inc_paths) or raise 'unable to locate uuid headers'
|
30
|
+
|
31
|
+
ensure_library 'sqlite3', lib_paths, 'please install sqlite3 development libraries'
|
32
|
+
ensure_library 'uuid', lib_paths, 'please install uuid development libraries'
|
33
|
+
|
34
|
+
create_makefile('swift_db_sqlite3_ext')
|
@@ -38,14 +38,14 @@ Result* db_sqlite3_result_handle(VALUE self) {
|
|
38
38
|
|
39
39
|
void db_sqlite3_result_mark(Result *r) {
|
40
40
|
if (r) {
|
41
|
-
if (
|
42
|
-
|
43
|
-
if (
|
44
|
-
|
45
|
-
if (
|
46
|
-
|
47
|
-
if (
|
48
|
-
|
41
|
+
if (r->rows)
|
42
|
+
rb_gc_mark(r->rows);
|
43
|
+
if (r->statement)
|
44
|
+
rb_gc_mark(r->statement);
|
45
|
+
if (r->fields)
|
46
|
+
rb_gc_mark(r->fields);
|
47
|
+
if (r->types)
|
48
|
+
rb_gc_mark(r->types);
|
49
49
|
}
|
50
50
|
}
|
51
51
|
|
@@ -101,7 +101,7 @@ VALUE db_sqlite3_result_consume(VALUE self) {
|
|
101
101
|
};
|
102
102
|
|
103
103
|
int lazy_types = 0;
|
104
|
-
size_t ntypes
|
104
|
+
size_t ntypes = sizeof(types) / sizeof(Type);
|
105
105
|
|
106
106
|
rb_ary_clear(r->fields);
|
107
107
|
rb_ary_clear(r->types);
|
@@ -181,9 +181,9 @@ VALUE db_sqlite3_result_each(VALUE self) {
|
|
181
181
|
int n, f;
|
182
182
|
Result *r = db_sqlite3_result_handle(self);
|
183
183
|
|
184
|
-
if (!r->rows)
|
184
|
+
if (!r->rows)
|
185
|
+
return Qnil;
|
185
186
|
|
186
|
-
rb_gc_register_address(&r->rows);
|
187
187
|
for (n = 0; n < RARRAY_LEN(r->rows); n++) {
|
188
188
|
VALUE tuple = rb_hash_new();
|
189
189
|
VALUE row = rb_ary_entry(r->rows, n);
|
@@ -191,7 +191,8 @@ VALUE db_sqlite3_result_each(VALUE self) {
|
|
191
191
|
rb_hash_aset(tuple, rb_ary_entry(r->fields, f), rb_ary_entry(row, f));
|
192
192
|
rb_yield(tuple);
|
193
193
|
}
|
194
|
-
|
194
|
+
|
195
|
+
return Qtrue;
|
195
196
|
}
|
196
197
|
|
197
198
|
VALUE db_sqlite3_result_selected_rows(VALUE self) {
|
@@ -33,8 +33,8 @@ Statement* db_sqlite3_statement_handle_safe(VALUE self) {
|
|
33
33
|
}
|
34
34
|
|
35
35
|
void db_sqlite3_statement_mark(Statement *s) {
|
36
|
-
if (s &&
|
37
|
-
|
36
|
+
if (s && s->adapter)
|
37
|
+
rb_gc_mark(s->adapter);
|
38
38
|
}
|
39
39
|
|
40
40
|
VALUE db_sqlite3_statement_deallocate(Statement *s) {
|
@@ -80,8 +80,9 @@ VALUE db_sqlite3_statement_execute(int argc, VALUE *argv, VALUE self) {
|
|
80
80
|
rb_scan_args(argc, argv, "00*", &bind);
|
81
81
|
expect = sqlite3_bind_parameter_count(s->s);
|
82
82
|
if (expect != RARRAY_LEN(bind))
|
83
|
-
rb_raise(eSwiftArgumentError, "expected %d bind values got %d", expect, RARRAY_LEN(bind));
|
83
|
+
rb_raise(eSwiftArgumentError, "expected %d bind values got %d", expect, (int)RARRAY_LEN(bind));
|
84
84
|
|
85
|
+
rb_gc_register_address(&bind);
|
85
86
|
for (n = 0; n < expect; n++) {
|
86
87
|
VALUE value = rb_ary_entry(bind, n);
|
87
88
|
if (NIL_P(value))
|
@@ -95,6 +96,7 @@ VALUE db_sqlite3_statement_execute(int argc, VALUE *argv, VALUE self) {
|
|
95
96
|
result = db_sqlite3_result_allocate(cDSR);
|
96
97
|
db_sqlite3_result_initialize(result, self);
|
97
98
|
db_sqlite3_result_consume(result);
|
99
|
+
rb_gc_unregister_address(&bind);
|
98
100
|
return result;
|
99
101
|
}
|
100
102
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: swift-db-sqlite3
|
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
|
@@ -35,25 +35,25 @@ extensions:
|
|
35
35
|
- ext/swift/db/sqlite3/extconf.rb
|
36
36
|
extra_rdoc_files: []
|
37
37
|
files:
|
38
|
-
- ext/swift/db/sqlite3/
|
39
|
-
- ext/swift/db/sqlite3/result.c
|
40
|
-
- ext/swift/db/sqlite3/datetime.c
|
41
|
-
- ext/swift/db/sqlite3/typecast.c
|
38
|
+
- ext/swift/db/sqlite3/adapter.c
|
42
39
|
- ext/swift/db/sqlite3/common.c
|
40
|
+
- ext/swift/db/sqlite3/datetime.c
|
43
41
|
- ext/swift/db/sqlite3/main.c
|
44
|
-
- ext/swift/db/sqlite3/
|
42
|
+
- ext/swift/db/sqlite3/result.c
|
43
|
+
- ext/swift/db/sqlite3/statement.c
|
44
|
+
- ext/swift/db/sqlite3/typecast.c
|
45
45
|
- ext/swift/db/sqlite3/adapter.h
|
46
|
-
- ext/swift/db/sqlite3/statement.h
|
47
|
-
- ext/swift/db/sqlite3/typecast.h
|
48
46
|
- ext/swift/db/sqlite3/common.h
|
49
|
-
- ext/swift/db/sqlite3/result.h
|
50
47
|
- ext/swift/db/sqlite3/datetime.h
|
48
|
+
- ext/swift/db/sqlite3/result.h
|
49
|
+
- ext/swift/db/sqlite3/statement.h
|
50
|
+
- ext/swift/db/sqlite3/typecast.h
|
51
51
|
- ext/swift/db/sqlite3/extconf.rb
|
52
|
-
- test/test_encoding.rb
|
53
52
|
- test/helper.rb
|
54
53
|
- test/test_adapter.rb
|
55
|
-
-
|
54
|
+
- test/test_encoding.rb
|
56
55
|
- lib/swift-db-sqlite3.rb
|
56
|
+
- lib/swift/db/sqlite3.rb
|
57
57
|
- README.md
|
58
58
|
- CHANGELOG
|
59
59
|
homepage: http://github.com/deepfryed/swift-db-sqlite3
|
@@ -82,4 +82,3 @@ signing_key:
|
|
82
82
|
specification_version: 3
|
83
83
|
summary: Swift sqlite3 adapter
|
84
84
|
test_files: []
|
85
|
-
has_rdoc:
|