Class: DuckDB::Column

Inherits:
Object
  • Object
show all
Defined in:
lib/duckdb/column.rb,
ext/duckdb/column.c

Instance Method Summary collapse

Instance Method Details

#logical_typeDuckDB::LogicalType

Returns the logical type class.

Returns:



56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
# File 'ext/duckdb/column.c', line 56

VALUE duckdb_column__logical_type(VALUE oDuckDBColumn) {
    rubyDuckDBColumn *ctx;
    rubyDuckDBResult *ctxresult;
    VALUE result;
    duckdb_logical_type _logical_type;
    VALUE logical_type = Qnil;

    TypedData_Get_Struct(oDuckDBColumn, rubyDuckDBColumn, &column_data_type, ctx);

    result = rb_ivar_get(oDuckDBColumn, rb_intern("result"));
    ctxresult = get_struct_result(result);
    _logical_type = duckdb_column_logical_type(&(ctxresult->result), ctx->col);

    if (_logical_type) {
        logical_type = rbduckdb_create_logical_type(_logical_type);
    }

    return logical_type;
}

#nameObject

Returns the column name.



83
84
85
86
87
88
89
90
91
92
93
94
95
# File 'ext/duckdb/column.c', line 83

VALUE duckdb_column_get_name(VALUE oDuckDBColumn) {
    rubyDuckDBColumn *ctx;
    VALUE result;
    rubyDuckDBResult *ctxresult;

    TypedData_Get_Struct(oDuckDBColumn, rubyDuckDBColumn, &column_data_type, ctx);

    result = rb_ivar_get(oDuckDBColumn, rb_intern("result"));

    ctxresult = get_struct_result(result);

    return rb_utf8_str_new_cstr(duckdb_column_name(&(ctxresult->result), ctx->col));
}

#typeObject

returns column type symbol ‘:unknown` means that the column type is unknown/unsupported by ruby-duckdb. `:invalid` means that the column type is invalid in duckdb.

require 'duckdb'
db = DuckDB::Database.open
con = db.connect
con.query('CREATE TABLE users (id INTEGER, name VARCHAR(30))')

users = con.query('SELECT * FROM users')
columns = users.columns
columns.first.type #=> :integer


17
18
19
20
# File 'lib/duckdb/column.rb', line 17

def type
  type_id = _type
  DuckDB::Converter::IntToSym.type_to_sym(type_id)
end