| Class | ActiveRecord::ConnectionAdapters::PostgreSQLAdapter |
| In: |
vendor/rails/activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb
|
| Parent: | AbstractAdapter |
The PostgreSQL adapter works both with the C-based (www.postgresql.jp/interfaces/ruby/) and the Ruby-base (available both as gem and from rubyforge.org/frs/?group_id=234&release_id=1145) drivers.
Options:
| BYTEA_COLUMN_TYPE_OID | = | 17 |
# File vendor/rails/activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb, line 134
134: def adapter_name
135: 'PostgreSQL'
136: end
# File vendor/rails/activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb, line 118
118: def begin_db_transaction() execute "BEGIN" end
# File vendor/rails/activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb, line 153
153: def change_column(table_name, column_name, type, options = {})
154: execute = "ALTER TABLE #{table_name} ALTER #{column_name} TYPE #{type}"
155: change_column_default(table_name, column_name, options[:default]) unless options[:default].nil?
156: end
# File vendor/rails/activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb, line 158
158: def change_column_default(table_name, column_name, default)
159: execute "ALTER TABLE #{table_name} ALTER COLUMN #{column_name} SET DEFAULT '#{default}'"
160: end
# File vendor/rails/activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb, line 92
92: def columns(table_name, name = nil)
93: column_definitions(table_name).collect do |name, type, default|
94: Column.new(name, default_value(default), translate_field_type(type))
95: end
96: end
# File vendor/rails/activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb, line 119
119: def commit_db_transaction() execute "COMMIT" end
# File vendor/rails/activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb, line 108
108: def execute(sql, name = nil)
109: log(sql, name) { @connection.exec(sql) }
110: end
# File vendor/rails/activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb, line 98
98: def insert(sql, name = nil, pk = nil, id_value = nil)
99: execute(sql, name)
100: table = sql.split(" ", 4)[2]
101: return id_value || last_insert_id(table, pk)
102: end
# File vendor/rails/activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb, line 63
63: def native_database_types
64: {
65: :primary_key => "serial primary key",
66: :string => { :name => "character varying", :limit => 255 },
67: :text => { :name => "text" },
68: :integer => { :name => "integer" },
69: :float => { :name => "float" },
70: :datetime => { :name => "timestamp" },
71: :timestamp => { :name => "timestamp" },
72: :time => { :name => "timestamp" },
73: :date => { :name => "date" },
74: :binary => { :name => "bytea" },
75: :boolean => { :name => "boolean"}
76: }
77: end
# File vendor/rails/activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb, line 104
104: def query(sql, name = nil)
105: log(sql, name) { @connection.query(sql) }
106: end
# File vendor/rails/activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb, line 122
122: def quote(value, column = nil)
123: if value.class == String && column && column.type == :binary
124: quote_bytea(value)
125: else
126: super
127: end
128: end
# File vendor/rails/activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb, line 130
130: def quote_column_name(name)
131: %("#{name}")
132: end
# File vendor/rails/activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb, line 166
166: def remove_index(table_name, column_name)
167: execute "DROP INDEX #{table_name}_#{column_name}_index"
168: end
# File vendor/rails/activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb, line 162
162: def rename_column(table_name, column_name, new_column_name)
163: execute "ALTER TABLE #{table_name} RENAME COLUMN #{column_name} TO #{new_column_name}"
164: end
# File vendor/rails/activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb, line 120
120: def rollback_db_transaction() execute "ROLLBACK" end
# File vendor/rails/activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb, line 149
149: def schema_search_path
150: @schema_search_path ||= query('SHOW search_path')[0][0]
151: end
Set the schema search path to a string of comma-separated schema names. Names beginning with $ are quoted (e.g. $user => ’$user’) See www.postgresql.org/docs/8.0/interactive/ddl-schemas.html
# File vendor/rails/activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb, line 142
142: def schema_search_path=(schema_csv)
143: if schema_csv
144: execute "SET search_path TO #{schema_csv}"
145: @schema_search_path = nil
146: end
147: end
# File vendor/rails/activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb, line 83
83: def select_all(sql, name = nil)
84: select(sql, name)
85: end
# File vendor/rails/activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb, line 87
87: def select_one(sql, name = nil)
88: result = select(sql, name)
89: result.nil? ? nil : result.first
90: end
# File vendor/rails/activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb, line 79
79: def supports_migrations?
80: true
81: end