# File lib/active_record/connection_adapters/abstract_adapter.rb, line 109 def initialize(conn) @conn = conn @cache = {} end
# File lib/active_record/connection_adapters/abstract_adapter.rb, line 114 def accept(o) m = @cache[o.class] ||= "visit_#{o.class.name.split('::').last}" send m, o end
# File lib/active_record/connection_adapters/abstract_adapter.rb, line 167 def add_column_options!(column_sql, column_options) @conn.add_column_options! column_sql, column_options column_sql end
# File lib/active_record/connection_adapters/abstract_adapter.rb, line 147 def column_options(o) column_options = {} column_options[:null] = o.null unless o.null.nil? column_options[:default] = o.default unless o.default.nil? column_options[:column] = o column_options end
# File lib/active_record/connection_adapters/abstract_adapter.rb, line 155 def quote_column_name(name) @conn.quote_column_name name end
# File lib/active_record/connection_adapters/abstract_adapter.rb, line 159 def quote_table_name(name) @conn.quote_table_name name end
# File lib/active_record/connection_adapters/abstract_adapter.rb, line 163 def type_to_sql(type, limit, precision, scale) @conn.type_to_sql type.to_sym, limit, precision, scale end
# File lib/active_record/connection_adapters/abstract_adapter.rb, line 126 def visit_AddColumn(o) sql_type = type_to_sql(o.type.to_sym, o.limit, o.precision, o.scale) sql = "ADD #{quote_column_name(o.name)} #{sql_type}" add_column_options!(sql, column_options(o)) end
# File lib/active_record/connection_adapters/abstract_adapter.rb, line 121 def visit_AlterTable(o) sql = "ALTER TABLE #{quote_table_name(o.name)} " sql << o.adds.map { |col| visit_AddColumn col }.join(' ') end
# File lib/active_record/connection_adapters/abstract_adapter.rb, line 132 def visit_ColumnDefinition(o) sql_type = type_to_sql(o.type.to_sym, o.limit, o.precision, o.scale) column_sql = "#{quote_column_name(o.name)} #{sql_type}" add_column_options!(column_sql, column_options(o)) unless o.primary_key? column_sql end
# File lib/active_record/connection_adapters/abstract_adapter.rb, line 139 def visit_TableDefinition(o) create_sql = "CREATE#{' TEMPORARY' if o.temporary} TABLE " create_sql << "#{quote_table_name(o.name)} (" create_sql << o.columns.map { |c| accept c }.join(', ') create_sql << ") #{o.options}" create_sql end