Class: ActiveRecord::ConnectionAdapters::Duckdb::Column

Inherits:
ConnectionAdapters::Column
  • Object
show all
Defined in:
lib/active_record/connection_adapters/duckdb/column.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(auto_increment: nil, rowid: nil, generated_type: nil, extra: nil) ⇒ Column

Initialize a new DuckDB column with DuckDB-specific attributes

Parameters:

  • auto_increment (Boolean, nil) (defaults to: nil)

    whether this column is auto-incrementing

  • rowid (Boolean, nil) (defaults to: nil)

    whether this column is a rowid column

  • generated_type (Symbol, nil) (defaults to: nil)

    the type of generated column (:stored, :virtual)

  • extra (String, nil) (defaults to: nil)

    extra column definition information



12
13
14
15
16
17
18
# File 'lib/active_record/connection_adapters/duckdb/column.rb', line 12

def initialize(*, auto_increment: nil, rowid: nil, generated_type: nil, extra: nil, **)
  super(*, **)
  @auto_increment = auto_increment
  @rowid = rowid
  @generated_type = generated_type
  @extra = extra
end

Instance Attribute Details

#extraString? (readonly)

Returns extra column definition information.

Returns:

  • (String, nil)

    extra column definition information



28
29
30
# File 'lib/active_record/connection_adapters/duckdb/column.rb', line 28

def extra
  @extra
end

#rowidBoolean? (readonly)

Returns whether this column is a rowid column.

Returns:

  • (Boolean, nil)

    whether this column is a rowid column



30
31
32
# File 'lib/active_record/connection_adapters/duckdb/column.rb', line 30

def rowid
  @rowid
end

Instance Method Details

#auto_increment?Boolean

Check if this column is auto-incrementing We probably need to check if the column is a UUID

Returns:

  • (Boolean)

    true if the column auto-increments



55
56
57
# File 'lib/active_record/connection_adapters/duckdb/column.rb', line 55

def auto_increment?
  !!@auto_increment
end

#auto_incremented_by_db?Boolean

Check if this column's value is automatically incremented by the database

Returns:

  • (Boolean)

    true if the column is auto-incremented by the database



61
62
63
# File 'lib/active_record/connection_adapters/duckdb/column.rb', line 61

def auto_incremented_by_db?
  auto_increment? || !!rowid
end

#has_default?Boolean

Check if this column has a default value

Returns:

  • (Boolean)

    true if the column has a default value



47
48
49
50
# File 'lib/active_record/connection_adapters/duckdb/column.rb', line 47

def has_default?
  # super && !virtual?
  !!super
end

#quote_column_name(name) ⇒ String

Quotes a column name for use in SQL statements

Parameters:

  • name (String, Symbol)

    The column name to quote

Returns:

  • (String)

    The quoted column name wrapped in double quotes



23
24
25
# File 'lib/active_record/connection_adapters/duckdb/column.rb', line 23

def quote_column_name(name)
  %("#{name}")
end

#virtual?Boolean

Check if this column is a virtual/generated column https://duckdb.org/docs/stable/sql/statements/create_table#generated-columns TODO: Implement full virtual column support

Returns:

  • (Boolean)

    always returns false until virtual columns are fully implemented



36
37
38
39
# File 'lib/active_record/connection_adapters/duckdb/column.rb', line 36

def virtual?
  # /\b(?:VIRTUAL|STORED|GENERATED)\b/.match?(extra)
  false
end