diff options
author | Aaron Patterson <aaron.patterson@gmail.com> | 2011-04-11 14:08:27 -0700 |
---|---|---|
committer | Aaron Patterson <aaron.patterson@gmail.com> | 2011-04-11 14:08:27 -0700 |
commit | f6c0c8ff6101fed24dd176fb0cce0383807c502d (patch) | |
tree | da6efd845f5bd29b0be05802d62eca0f59425934 /activerecord/lib/active_record/connection_adapters | |
parent | a9e8554b46a29573094eec139b16778e29e5c37a (diff) | |
download | rails-f6c0c8ff6101fed24dd176fb0cce0383807c502d.tar.gz rails-f6c0c8ff6101fed24dd176fb0cce0383807c502d.tar.bz2 rails-f6c0c8ff6101fed24dd176fb0cce0383807c502d.zip |
only use the primary_key method, refactor schema and table name parsing
Diffstat (limited to 'activerecord/lib/active_record/connection_adapters')
-rw-r--r-- | activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb | 28 |
1 files changed, 15 insertions, 13 deletions
diff --git a/activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb b/activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb index 468f8d75d7..d76b03e80a 100644 --- a/activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb +++ b/activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb @@ -433,12 +433,9 @@ module ActiveRecord # Executes an INSERT query and returns the new record's ID def insert_sql(sql, name = nil, pk = nil, id_value = nil, sequence_name = nil) # Extract the table from the insert sql. Yuck. - table = sql.split(" ", 4)[2].gsub('"', '') + _, table = extract_schema_and_table(sql.split(" ", 4)[2]) - # If neither pk nor sequence name is given, look them up. - unless pk || sequence_name - pk, sequence_name = *pk_and_sequence_for(table) - end + pk ||= primary_key(table) if pk select_value("#{sql} RETURNING #{quote_column_name(pk)}") @@ -638,7 +635,18 @@ module ActiveRecord end def table_exists?(name) - name = name.to_s + schema, table = extract_schema_and_table(name.to_s) + + query(<<-SQL, 'SCHEMA').first[0].to_i > 0 + SELECT COUNT(*) + FROM pg_tables + WHERE tablename = '#{table.gsub(/(^"|"$)/,'')}' + #{schema ? "AND schemaname = '#{schema}'" : ''} + SQL + end + + # Extracts the table and schema name from +name+ + def extract_schema_and_table(name) schema, table = name.split('.', 2) unless table # A table was provided without a schema @@ -650,13 +658,7 @@ module ActiveRecord table = name schema = nil end - - query(<<-SQL, 'SCHEMA').first[0].to_i > 0 - SELECT COUNT(*) - FROM pg_tables - WHERE tablename = '#{table.gsub(/(^"|"$)/,'')}' - #{schema ? "AND schemaname = '#{schema}'" : ''} - SQL + [schema, table] end # Returns the list of all indexes for a table. |