aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/lib/active_record/connection_adapters
diff options
context:
space:
mode:
authorJeremy Kemper <jeremy@bitsweat.net>2005-06-12 06:56:51 +0000
committerJeremy Kemper <jeremy@bitsweat.net>2005-06-12 06:56:51 +0000
commitd0bd3b5af4a796d8f0b83815a3f164ae811c0626 (patch)
tree02ebe7f6eeab523dcf5190845b95a9b91ed1affb /activerecord/lib/active_record/connection_adapters
parent3cb26e9cb3c1f3a069e7654988c650ca12322ede (diff)
downloadrails-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.rb35
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