diff options
author | Pratik Naik <pratiknaik@gmail.com> | 2008-05-20 11:10:38 +0100 |
---|---|---|
committer | Pratik Naik <pratiknaik@gmail.com> | 2008-05-20 11:10:38 +0100 |
commit | 089251581137b041828a7e6dcbf75ecbef55b4a3 (patch) | |
tree | 6f39bcaf9c8c4ca8df27660277ed271eee2a64a0 /activerecord/lib/active_record/connection_adapters | |
parent | 1b0128c5413ace12dee45e9db328cff866a5bb06 (diff) | |
download | rails-089251581137b041828a7e6dcbf75ecbef55b4a3.tar.gz rails-089251581137b041828a7e6dcbf75ecbef55b4a3.tar.bz2 rails-089251581137b041828a7e6dcbf75ecbef55b4a3.zip |
Ensure add_column gives valid error for sqlite. [Gunnar Wolf, Pratik] [#197 state:resolved]
SQLite#add_column executes "VACUUM", which fails if inside a live transaction. This patch
ensures a valid exception is raised if add_column is executed within a live transaction for
sqlite adapter.
Diffstat (limited to 'activerecord/lib/active_record/connection_adapters')
-rw-r--r-- | activerecord/lib/active_record/connection_adapters/sqlite_adapter.rb | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/activerecord/lib/active_record/connection_adapters/sqlite_adapter.rb b/activerecord/lib/active_record/connection_adapters/sqlite_adapter.rb index 8abbc6d0a4..51cfd10e5c 100644 --- a/activerecord/lib/active_record/connection_adapters/sqlite_adapter.rb +++ b/activerecord/lib/active_record/connection_adapters/sqlite_adapter.rb @@ -214,6 +214,10 @@ module ActiveRecord end def add_column(table_name, column_name, type, options = {}) #:nodoc: + if @connection.respond_to?(:transaction_active?) && @connection.transaction_active? + raise StatementInvalid, 'Cannot add columns to a SQLite database while inside a transaction' + end + super(table_name, column_name, type, options) # See last paragraph on http://www.sqlite.org/lang_altertable.html execute "VACUUM" |