From 1aae38280d60b4bbc79d264217c355d359ab7098 Mon Sep 17 00:00:00 2001 From: Nuno Costa Date: Wed, 20 Aug 2014 15:47:34 +0100 Subject: [PATCH 1/4] FIX: ArgumentError: wrong number of arguments (4 for 3) --- lib/active_record/connection_adapters/redshift_adapter.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/active_record/connection_adapters/redshift_adapter.rb b/lib/active_record/connection_adapters/redshift_adapter.rb index 9925b85..f93195e 100644 --- a/lib/active_record/connection_adapters/redshift_adapter.rb +++ b/lib/active_record/connection_adapters/redshift_adapter.rb @@ -893,8 +893,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) From 734d6338027c13c3266cea49f53897eb341cd8be Mon Sep 17 00:00:00 2001 From: Nuno Costa Date: Wed, 20 Aug 2014 15:48:56 +0100 Subject: [PATCH 2/4] ERROR: Column "table_name.id" has unsupported type "serial". --- lib/active_record/connection_adapters/redshift_adapter.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/active_record/connection_adapters/redshift_adapter.rb b/lib/active_record/connection_adapters/redshift_adapter.rb index f93195e..c396a18 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" }, From eeb83b013fba8120ecff097c1c325e469d5cc01c Mon Sep 17 00:00:00 2001 From: Nuno Costa Date: Wed, 20 Aug 2014 17:21:27 +0100 Subject: [PATCH 3/4] FIX: ArgumentError: wrong number of arguments (3 for 1..2) --- .../connection_adapters/redshift/database_statements.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 From 15620fbabf47848c4c1b1d4568592b834b697416 Mon Sep 17 00:00:00 2001 From: Nuno Costa Date: Wed, 27 Aug 2014 18:11:13 +0100 Subject: [PATCH 4/4] FIX: ERROR: relation "FactSale" does not exist Was creating a query with '"FactSale"'::regclass that was incorrect (quotes followed by double quotes) --- lib/active_record/connection_adapters/redshift_adapter.rb | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/lib/active_record/connection_adapters/redshift_adapter.rb b/lib/active_record/connection_adapters/redshift_adapter.rb index c396a18..6ae7df5 100644 --- a/lib/active_record/connection_adapters/redshift_adapter.rb +++ b/lib/active_record/connection_adapters/redshift_adapter.rb @@ -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)