diff options
author | gkemmey <gray.kemmey@gmail.com> | 2018-09-13 16:00:51 -0400 |
---|---|---|
committer | gkemmey <gray.kemmey@gmail.com> | 2018-09-13 16:11:09 -0400 |
commit | 3a36cb08687aa337efca4dff12d20901d4d8029e (patch) | |
tree | 162409e8c479b0062c67f78632f8422238d7c7f7 /activerecord/lib/active_record | |
parent | b20762e56c0412aee02bd244a3128c933c484e52 (diff) | |
download | rails-3a36cb08687aa337efca4dff12d20901d4d8029e.tar.gz rails-3a36cb08687aa337efca4dff12d20901d4d8029e.tar.bz2 rails-3a36cb08687aa337efca4dff12d20901d4d8029e.zip |
SQLite3 adapter supports expression indexes
Diffstat (limited to 'activerecord/lib/active_record')
-rw-r--r-- | activerecord/lib/active_record/connection_adapters/sqlite3/schema_statements.rb | 6 | ||||
-rw-r--r-- | activerecord/lib/active_record/connection_adapters/sqlite3_adapter.rb | 4 |
2 files changed, 9 insertions, 1 deletions
diff --git a/activerecord/lib/active_record/connection_adapters/sqlite3/schema_statements.rb b/activerecord/lib/active_record/connection_adapters/sqlite3/schema_statements.rb index 24e7bc65fa..0e254455b6 100644 --- a/activerecord/lib/active_record/connection_adapters/sqlite3/schema_statements.rb +++ b/activerecord/lib/active_record/connection_adapters/sqlite3/schema_statements.rb @@ -21,12 +21,16 @@ module ActiveRecord WHERE name = #{quote(row['name'])} AND type = 'index' SQL - /\sWHERE\s+(?<where>.+)$/i =~ index_sql + /\sON\s+"(\w+?)"\s+\((?<expressions>.+?)\)(\sWHERE\s+(?<where>.+))?$/i =~ index_sql columns = exec_query("PRAGMA index_info(#{quote(row['name'])})", "SCHEMA").map do |col| col["name"] end + if columns.any?(&:nil?) # index created with an expression + columns = expressions.split(", ").map { |e| e.gsub(/^\"|\"?$/, "") } + end + # Add info on sort order for columns (only desc order is explicitly specified, asc is # the default) orders = {} diff --git a/activerecord/lib/active_record/connection_adapters/sqlite3_adapter.rb b/activerecord/lib/active_record/connection_adapters/sqlite3_adapter.rb index efe454fa7f..51f4944808 100644 --- a/activerecord/lib/active_record/connection_adapters/sqlite3_adapter.rb +++ b/activerecord/lib/active_record/connection_adapters/sqlite3_adapter.rb @@ -125,6 +125,10 @@ module ActiveRecord true end + def supports_expression_index? + sqlite_version >= "3.9.0" + end + def requires_reloading? true end |