class DuckDB::Result
The Result
class encapsulates a execute result of DuckDB
database.
The usage is as follows:
require 'duckdb' db = DuckDB::Database.open # database in memory con = db.connect con.execute('CREATE TABLE users (id INTEGER, name VARCHAR(30))') con.execute("INSERT into users VALUES(1, 'Alice')") con.execute("INSERT into users VALUES(2, 'Bob')") con.execute("INSERT into users VALUES(3, 'Cathy')") result = con.execute('SELECT * from users') result.each do |row| p row end
Constants
- RETURN_TYPES
Attributes
Public Class Methods
Source
# File lib/duckdb/result.rb, line 34 def new raise DuckDB::Error, 'DuckDB::Result cannot be instantiated directly.' end
Source
# File lib/duckdb/result.rb, line 40 def use_chunk_each? @use_chunk_each end
Public Instance Methods
Source
static VALUE duckdb_result_column_count(VALUE oDuckDBResult) { rubyDuckDBResult *ctx; TypedData_Get_Struct(oDuckDBResult, rubyDuckDBResult, &result_data_type, ctx); return LL2NUM(duckdb_column_count(&(ctx->result))); }
Returns the column size of the result.
DuckDB::Database.open do |db| db.connect do |con| r = con.query('CREATE TABLE t2 (id INT, name VARCHAR(128))') r = con.query("INSERT INTO t2 VALUES (1, 'Alice'), (2, 'Bob'), (3, 'Catherine')") r = con.query('SELECT id FROM t2') r.column_count # => 1 r = con.query('SELECT id, name FROM t2') r.column_count # => 2 end end
Also aliased as: column_size
Alias for: column_count
Source
static VALUE duckdb_result_columns(VALUE oDuckDBResult) { rubyDuckDBResult *ctx; TypedData_Get_Struct(oDuckDBResult, rubyDuckDBResult, &result_data_type, ctx); idx_t col_idx; idx_t column_count = duckdb_column_count(&(ctx->result)); VALUE ary = rb_ary_new2(column_count); for(col_idx = 0; col_idx < column_count; col_idx++) { VALUE column = rbduckdb_create_column(oDuckDBResult, col_idx); rb_ary_store(ary, col_idx, column); } return ary; }
Returns the column class Lists.
Source
# File lib/duckdb/result.rb, line 45 def each(&) if self.class.use_chunk_each? return chunk_each unless block_given? chunk_each(&) else return _chunk_stream unless block_given? _chunk_stream(&) end end
Source
static VALUE duckdb_result_rows_changed(VALUE oDuckDBResult) { rubyDuckDBResult *ctx; TypedData_Get_Struct(oDuckDBResult, rubyDuckDBResult, &result_data_type, ctx); return LL2NUM(duckdb_rows_changed(&(ctx->result))); }
Returns the count of rows changed.
DuckDB::Database.open do |db| db.connect do |con| r = con.query('CREATE TABLE t2 (id INT)') r.rows_changed # => 0 r = con.query('INSERT INTO t2 VALUES (1), (2), (3)') r.rows_changed # => 3 r = con.query('UPDATE t2 SET id = id + 1 WHERE id > 1') r.rows_changed # => 2 r = con.query('DELETE FROM t2 WHERE id = 0') r.rows_changed # => 0 r = con.query('DELETE FROM t2 WHERE id = 4') r.rows_changed # => 1 end end