diff --git a/lib/active_record/connection_adapters/redshift/database_statements.rb b/lib/active_record/connection_adapters/redshift/database_statements.rb index f80fa5c..20a5d7d 100644 --- a/lib/active_record/connection_adapters/redshift/database_statements.rb +++ b/lib/active_record/connection_adapters/redshift/database_statements.rb @@ -46,7 +46,7 @@ def pp(result) # Executes a SELECT query and returns an array of rows. Each row is an # array of field values. - def select_rows(sql, name = nil) + def select_rows(sql, name = nil, binds = []) select_raw(sql, name).last end diff --git a/lib/active_record/connection_adapters/redshift_adapter.rb b/lib/active_record/connection_adapters/redshift_adapter.rb index 9925b85..6ae7df5 100644 --- a/lib/active_record/connection_adapters/redshift_adapter.rb +++ b/lib/active_record/connection_adapters/redshift_adapter.rb @@ -391,7 +391,7 @@ class Table < ActiveRecord::ConnectionAdapters::Table ADAPTER_NAME = 'Redshift' NATIVE_DATABASE_TYPES = { - primary_key: "serial primary key", + primary_key: "integer identity", string: { name: "character varying", limit: 255 }, text: { name: "text" }, integer: { name: "integer" }, @@ -867,15 +867,16 @@ def select_raw(sql, name = nil) # - format_type includes the column size constraint, e.g. varchar(50) # - ::regclass is a function that gives the id for a table name def column_definitions(table_name) #:nodoc: - exec_query(<<-end_sql, 'SCHEMA').rows + + exec_query(<<-SQL, 'SCHEMA').rows SELECT a.attname, format_type(a.atttypid, a.atttypmod), pg_get_expr(d.adbin, d.adrelid), a.attnotnull, a.atttypid, a.atttypmod FROM pg_attribute a LEFT JOIN pg_attrdef d ON a.attrelid = d.adrelid AND a.attnum = d.adnum - WHERE a.attrelid = '#{quote_table_name(table_name)}'::regclass + WHERE a.attrelid = '#{table_name}'::regclass AND a.attnum > 0 AND NOT a.attisdropped ORDER BY a.attnum - end_sql + SQL end def extract_pg_identifier_from_name(name) @@ -893,8 +894,8 @@ def extract_table_ref_from_insert_sql(sql) $1.strip if $1 end - def create_table_definition(name, temporary, options) - TableDefinition.new native_database_types, name, temporary, options + def create_table_definition(name, temporary, options, as = nil) + TableDefinition.new native_database_types, name, temporary, options, as end def update_table_definition(table_name, base)