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); }