diff options
author | Jeremy Kemper <jeremy@bitsweat.net> | 2005-06-12 06:56:51 +0000 |
---|---|---|
committer | Jeremy Kemper <jeremy@bitsweat.net> | 2005-06-12 06:56:51 +0000 |
commit | d0bd3b5af4a796d8f0b83815a3f164ae811c0626 (patch) | |
tree | 02ebe7f6eeab523dcf5190845b95a9b91ed1affb /activerecord/lib/active_record/connection_adapters | |
parent | 3cb26e9cb3c1f3a069e7654988c650ca12322ede (diff) | |
download | rails-d0bd3b5af4a796d8f0b83815a3f164ae811c0626.tar.gz rails-d0bd3b5af4a796d8f0b83815a3f164ae811c0626.tar.bz2 rails-d0bd3b5af4a796d8f0b83815a3f164ae811c0626.zip |
Return PostgreSQL columns in the order they are declared #1374 (perlguy@gmail.com). Unit test column order, adapter housekeeping, simplify users of columns_hash.
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@1405 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
Diffstat (limited to 'activerecord/lib/active_record/connection_adapters')
-rw-r--r-- | activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb | 35 |
1 files changed, 17 insertions, 18 deletions
diff --git a/activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb b/activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb index 9161878d5a..39990db8fc 100644 --- a/activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb +++ b/activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb @@ -78,19 +78,21 @@ module ActiveRecord end def insert(sql, name = nil, pk = nil, id_value = nil) - execute(sql, name = nil) + execute(sql, name) table = sql.split(" ", 4)[2] return id_value || last_insert_id(table, pk) end + def query(sql, name = nil) + log(sql, name) { @connection.query(sql) } + end + def execute(sql, name = nil) - log(sql, name, @connection) { |connection| connection.query(sql) } + log(sql, name) { @connection.exec(sql) } end def update(sql, name = nil) - result = nil - log(sql, name, @connection) { |connection| result = connection.exec(sql) } - result.cmdtuples + execute(sql, name).cmdtuples end alias_method :delete, :update @@ -122,9 +124,7 @@ module ActiveRecord end def select(sql, name = nil) - res = nil - log(sql, name, @connection) { |connection| res = connection.exec(sql) } - + res = execute(sql, name) results = res.result rows = [] if results.length > 0 @@ -169,23 +169,22 @@ module ActiveRecord def table_structure(table_name) database_name = @connection.db schema_name, table_name = split_table_schema(table_name) - + # Grab a list of all the default values for the columns. sql = "SELECT column_name, column_default, character_maximum_length, data_type " sql << " FROM information_schema.columns " sql << " WHERE table_catalog = '#{database_name}' " sql << " AND table_schema = '#{schema_name}' " - sql << " AND table_name = '#{table_name}';" + sql << " AND table_name = '#{table_name}'" + sql << " ORDER BY ordinal_position" - column_defaults = nil - log(sql, nil, @connection) { |connection| column_defaults = connection.query(sql) } - column_defaults.collect do |row| - field = row[0] - type = type_as_string(row[3], row[2]) - default = default_value(row[1]) - length = row[2] + query(sql).collect do |row| + field = row[0] + type = type_as_string(row[3], row[2]) + default = default_value(row[1]) + length = row[2] - [field, type, default, length] + [field, type, default, length] end end |