ext/adapter.cc in swift-0.7.2 vs ext/adapter.cc in swift-0.8.0
- old
+ new
@@ -84,22 +84,18 @@
try {
Query query;
query.sql = CSTRING(statement);
query.handle = handle;
- if (RARRAY_LEN(bind_values) > 0) query_bind_values(&query, bind_values, handle->driver());
+ if (RARRAY_LEN(bind_values) > 0) query_bind_values(&query, bind_values);
if (dbi::_trace) dbi::logMessage(dbi::_trace_fd, dbi::formatParams(query.sql, query.bind));
if ((rows = rb_thread_blocking_region(((VALUE (*)(void*))query_execute), &query, RUBY_UBF_IO, 0)) == Qfalse)
rb_raise(eSwiftRuntimeError, "%s", query.error);
- if (rb_block_given_p()) {
- dbi::AbstractResult *result = handle->results();
- return result_each(result_wrap_handle(cSwiftResult, self, result, false));
- }
- else
- return rows;
+ VALUE result = result_wrap_handle(cSwiftResult, self, handle->conn()->result(), true);
+ return rb_block_given_p() ? result_each(result) : result;
}
CATCH_DBI_EXCEPTIONS();
}
static VALUE adapter_initialize(VALUE self, VALUE options) {
@@ -108,11 +104,11 @@
VALUE user = rb_hash_aref(options, ID2SYM(rb_intern("user")));
if (NIL_P(db)) rb_raise(eSwiftArgumentError, "Adapter#new called without :db");
if (NIL_P(driver)) rb_raise(eSwiftArgumentError, "Adapter#new called without :driver");
- user = NIL_P(user) ? rb_str_new2(getlogin()) : user;
+ user = NIL_P(user) ? CURRENT_USER() : user;
try {
DATA_PTR(self) = new dbi::Handle(
CSTRING(driver),
CSTRING(user),
@@ -213,31 +209,22 @@
handle when the writing has started.
*/
rb_gc();
if (TYPE(stream) == T_STRING) {
- dbi::IOStream io(RSTRING_PTR(stream), RSTRING_LEN(stream));
+ dbi::StringIO io(RSTRING_PTR(stream), RSTRING_LEN(stream));
rows = handle->write(RSTRING_PTR(table), write_fields, &io);
}
else {
- IOStream io(stream);
+ AdapterIO io(stream);
rows = handle->write(RSTRING_PTR(table), write_fields, &io);
}
return SIZET2NUM(rows);
}
CATCH_DBI_EXCEPTIONS();
}
-VALUE adapter_results(VALUE self) {
- dbi::Handle *handle = adapter_handle(self);
- try {
- dbi::AbstractResult *result = handle->results();
- return result_wrap_handle(cSwiftResult, self, result, false);
- }
- CATCH_DBI_EXCEPTIONS();
-}
-
void init_swift_adapter() {
VALUE mSwift = rb_define_module("Swift");
cSwiftAdapter = rb_define_class_under(mSwift, "Adapter", rb_cObject);
rb_define_method(cSwiftAdapter, "begin", RUBY_METHOD_FUNC(adapter_begin), -1);
@@ -252,11 +239,8 @@
rb_define_method(cSwiftAdapter, "rollback", RUBY_METHOD_FUNC(adapter_rollback), -1);
rb_define_method(cSwiftAdapter, "transaction", RUBY_METHOD_FUNC(adapter_transaction), -1);
rb_define_method(cSwiftAdapter, "write", RUBY_METHOD_FUNC(adapter_write), -1);
rb_define_alloc_func(cSwiftAdapter, adapter_alloc);
-
- // TODO Figure out how to avoid race conditions.
- rb_define_method(cSwiftAdapter, "results", RUBY_METHOD_FUNC(adapter_results), 0);
}