Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

DDL transactions and savepoints for sqlite

Sqlite has had DDL transactions since 2.0.0[1] and savepoints since
3.6.8[2].  This patch updates the connection_adapters.

[1] http://tinyurl.com/sqlite-v2-0-0
[2] http://tinyurl.com/sqlite-v3-6-8

Signed-off-by: Michael Koziarski <michael@koziarski.com>
[#2080 state:committed]
  • Loading branch information...
commit 38136f86dc5504bde94dc7399d4a854023d7481f 1 parent 04fdb6e
@smathy smathy authored NZKoz committed
View
21 activerecord/lib/active_record/connection_adapters/sqlite_adapter.rb
@@ -72,10 +72,29 @@ def binary_to_string(value)
#
# * <tt>:database</tt> - Path to the database file.
class SQLiteAdapter < AbstractAdapter
+
+ class Version
+ include Comparable
+ def initialize(vs)
+ @v = vs.split('.').map(&:to_i)
+ end
+ def <=>(rhs)
+ @v <=> rhs.split('.').map(&:to_i)
+ end
+ end
+
def adapter_name #:nodoc:
'SQLite'
end
+ def supports_ddl_transactions?
+ sqlite_version >= '2.0.0'
+ end
+
+ def supports_savepoints?
+ sqlite_version >= '3.6.8'
+ end
+
def supports_migrations? #:nodoc:
true
end
@@ -380,7 +399,7 @@ def catch_schema_changes
end
def sqlite_version
- @sqlite_version ||= select_value('select sqlite_version(*)')
+ @sqlite_version ||= SQLiteAdapter::Version.new(select_value('select sqlite_version(*)'))
end
def default_primary_key_type
Please sign in to comment.
Something went wrong with that request. Please try again.