aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord
diff options
context:
space:
mode:
authorHongli Lai (Phusion) <hongli@phusion.nl>2008-10-09 15:41:56 +0200
committerHongli Lai (Phusion) <hongli@phusion.nl>2008-11-03 20:56:14 +0100
commit885c11b8f9e18f34b12076023455e72166365f00 (patch)
treebfe3f92932d8f8209a8608fc34a9fdeb3d3d150a /activerecord
parente981eaaf342d06e399b5138553c964adcfadd87c (diff)
downloadrails-885c11b8f9e18f34b12076023455e72166365f00.tar.gz
rails-885c11b8f9e18f34b12076023455e72166365f00.tar.bz2
rails-885c11b8f9e18f34b12076023455e72166365f00.zip
Make SQLite3 pass the unit tests for savepoints.
Diffstat (limited to 'activerecord')
-rwxr-xr-xactiverecord/lib/active_record/connection_adapters/abstract_adapter.rb6
-rw-r--r--activerecord/lib/active_record/connection_adapters/mysql_adapter.rb4
-rw-r--r--activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb4
-rw-r--r--activerecord/test/cases/transactions_test.rb8
4 files changed, 18 insertions, 4 deletions
diff --git a/activerecord/lib/active_record/connection_adapters/abstract_adapter.rb b/activerecord/lib/active_record/connection_adapters/abstract_adapter.rb
index 45a6cff346..81260eeecc 100755
--- a/activerecord/lib/active_record/connection_adapters/abstract_adapter.rb
+++ b/activerecord/lib/active_record/connection_adapters/abstract_adapter.rb
@@ -65,6 +65,12 @@ module ActiveRecord
def supports_ddl_transactions?
false
end
+
+ # Does this adapter support savepoints? PostgreSQL and MySQL do, SQLite
+ # does not.
+ def supports_savepoints?
+ false
+ end
# Should primary key values be selected from their corresponding
# sequence before the insert statement? If true, next_sequence_value
diff --git a/activerecord/lib/active_record/connection_adapters/mysql_adapter.rb b/activerecord/lib/active_record/connection_adapters/mysql_adapter.rb
index 721b365bc7..76ade2a980 100644
--- a/activerecord/lib/active_record/connection_adapters/mysql_adapter.rb
+++ b/activerecord/lib/active_record/connection_adapters/mysql_adapter.rb
@@ -205,6 +205,10 @@ module ActiveRecord
def supports_migrations? #:nodoc:
true
end
+
+ def supports_savepoints? #:nodoc:
+ true
+ end
def native_database_types #:nodoc:
NATIVE_DATABASE_TYPES
diff --git a/activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb b/activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb
index cfeef30d06..828f321767 100644
--- a/activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb
+++ b/activerecord/lib/active_record/connection_adapters/postgresql_adapter.rb
@@ -272,6 +272,10 @@ module ActiveRecord
def supports_ddl_transactions?
true
end
+
+ def supports_savepoints?
+ true
+ end
# Returns the configured supported identifier length supported by PostgreSQL,
# or report the default of 63 on PostgreSQL 7.x.
diff --git a/activerecord/test/cases/transactions_test.rb b/activerecord/test/cases/transactions_test.rb
index 4bbcd272b7..3c6bfd7e22 100644
--- a/activerecord/test/cases/transactions_test.rb
+++ b/activerecord/test/cases/transactions_test.rb
@@ -239,7 +239,7 @@ class TransactionTest < ActiveRecord::TestCase
assert @first.reload.approved?
assert !@second.reload.approved?
- end
+ end if Topic.connection.supports_savepoints?
def test_no_savepoint_in_nested_transaction_without_force
Topic.transaction do
@@ -260,7 +260,7 @@ class TransactionTest < ActiveRecord::TestCase
assert !@first.reload.approved?
assert !@second.reload.approved?
- end
+ end if Topic.connection.supports_savepoints?
def test_many_savepoints
Topic.transaction do
@@ -304,7 +304,7 @@ class TransactionTest < ActiveRecord::TestCase
assert_equal "One", @one
assert_equal "Two", @two
assert_equal "Three", @three
- end
+ end if Topic.connection.supports_savepoints?
uses_mocha 'mocking connection.commit_db_transaction' do
def test_rollback_when_commit_raises
@@ -411,7 +411,7 @@ class TransactionsWithTransactionalFixturesTest < ActiveRecord::TestCase
assert !@first.reload.approved?
end
-end
+end if Topic.connection.supports_savepoints?
if current_adapter?(:PostgreSQLAdapter)
class ConcurrentTransactionTest < TransactionTest