Class: ActiveRecord::ConnectionAdapters::QualifiedColumn

Inherits:
Column
  • Object
show all
Defined in:
lib/active_record/connection_adapters/qualified_column.rb

Overview

Like a regular database, each table in Hypertable has a fixed list of columns. However, Hypertable allows flexible schemas through the use of column qualifiers. Suppose a table is defined to have a single column called misc.

CREATE TABLE pages (

'misc'

)

In Hypertable, each traditional database column is referred to as a column family. Each column family can have a theoretically infinite number of qualified instances. An instance of a qualified column is referred to using the column_family:qualifer notation. e.g.,

misc:red misc:green misc:blue

These qualified column instances do not need to be declared as part of the table schema. The table schema itself does not provide an indication of whether a column family has been used with qualifiers. As a results, we must explicitly declare intent to use a column family in a qualified manner in our class definition. The resulting AR object models the column family as a Hash.

class Page < ActiveRecord::HyperBase

qualified_column :misc

end

p = Page.new p.ROW = ‘page_1’ p.misc = ‘www.zvents.com/’ p.misc = 127 p.save

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(name, default, sql_type = nil, null = true) ⇒ QualifiedColumn

Returns a new instance of QualifiedColumn.



41
42
43
44
# File 'lib/active_record/connection_adapters/qualified_column.rb', line 41

def initialize(name, default, sql_type = nil, null = true)
  @qualifiers ||= []
  super
end

Instance Attribute Details

#qualifiersObject

Returns the value of attribute qualifiers.



39
40
41
# File 'lib/active_record/connection_adapters/qualified_column.rb', line 39

def qualifiers
  @qualifiers
end

Instance Method Details

#defaultObject



50
51
52
53
54
# File 'lib/active_record/connection_adapters/qualified_column.rb', line 50

def default
  h = Hash.new
  h.default = @default
  h
end

#klassObject



46
47
48
# File 'lib/active_record/connection_adapters/qualified_column.rb', line 46

def klass
  Hash
end