diff options
author | Aaron Patterson <aaron.patterson@gmail.com> | 2014-09-22 14:57:07 -0700 |
---|---|---|
committer | Aaron Patterson <aaron.patterson@gmail.com> | 2014-09-22 14:57:19 -0700 |
commit | 9a4e183fe9f81365f7815c391512b3d46622d8c8 (patch) | |
tree | 4a6bc21833c73d5d098dc398560a43bd1d854f07 /activerecord/lib/active_record | |
parent | 53a8a7f9cb7ee93513c445302f25643423fea8e7 (diff) | |
download | rails-9a4e183fe9f81365f7815c391512b3d46622d8c8.tar.gz rails-9a4e183fe9f81365f7815c391512b3d46622d8c8.tar.bz2 rails-9a4e183fe9f81365f7815c391512b3d46622d8c8.zip |
add a truncate method to the connection
it doesn't work on SQLite3 since it doesn't support truncate, but that's
OK. If you call truncate on the connection, you're now bound to that
database (same as if you use hstore or any other db specific feature).
Diffstat (limited to 'activerecord/lib/active_record')
3 files changed, 13 insertions, 0 deletions
diff --git a/activerecord/lib/active_record/connection_adapters/abstract/database_statements.rb b/activerecord/lib/active_record/connection_adapters/abstract/database_statements.rb index 98e96099cb..ff8b3e9890 100644 --- a/activerecord/lib/active_record/connection_adapters/abstract/database_statements.rb +++ b/activerecord/lib/active_record/connection_adapters/abstract/database_statements.rb @@ -83,6 +83,11 @@ module ActiveRecord exec_query(sql, name, binds) end + # Executes the truncate statement. + def truncate(table_name, name = nil) + raise NotImplementedError + end + # Executes update +sql+ statement in the context of this connection using # +binds+ as the bind substitutes. +name+ is logged along with # the executed +sql+ statement. diff --git a/activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rb b/activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rb index 037fb69dfb..e4cfe843a8 100644 --- a/activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rb +++ b/activerecord/lib/active_record/connection_adapters/abstract_mysql_adapter.rb @@ -389,6 +389,10 @@ module ActiveRecord end end + def truncate(table_name, name = nil) + execute "TRUNCATE TABLE #{quote_table_name(table_name)}", name + end + def table_exists?(name) return false unless name.present? return true if tables(nil, nil, name).any? diff --git a/activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb b/activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb index 80461f3910..0d74cb6707 100644 --- a/activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb +++ b/activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb @@ -255,6 +255,10 @@ module ActiveRecord @statements.clear end + def truncate(table_name, name = nil) + exec_query "TRUNCATE TABLE #{quote_table_name(table_name)}", name, [] + end + # Is this connection alive and ready for queries? def active? @connection.query 'SELECT 1' |