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



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)



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

def extra
  @extra
end

#rowidBoolean? (readonly)



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



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



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



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



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



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