diff options
author | Ryuta Kamizono <kamipo@gmail.com> | 2018-12-11 04:33:48 +0900 |
---|---|---|
committer | Ryuta Kamizono <kamipo@gmail.com> | 2018-12-11 04:51:54 +0900 |
commit | bde898c1df17722a83e5e8866b2009273c5190c6 (patch) | |
tree | 6925a7791b971874e52cc8f499eed833765520f9 /activerecord/lib/active_record/connection_adapters/sqlite3_adapter.rb | |
parent | bad1041b82df941d588ae2565f62424d88104933 (diff) | |
download | rails-bde898c1df17722a83e5e8866b2009273c5190c6.tar.gz rails-bde898c1df17722a83e5e8866b2009273c5190c6.tar.bz2 rails-bde898c1df17722a83e5e8866b2009273c5190c6.zip |
Prevent write queries for `exec_query`
Follow up #34505.
Diffstat (limited to 'activerecord/lib/active_record/connection_adapters/sqlite3_adapter.rb')
-rw-r--r-- | activerecord/lib/active_record/connection_adapters/sqlite3_adapter.rb | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/activerecord/lib/active_record/connection_adapters/sqlite3_adapter.rb b/activerecord/lib/active_record/connection_adapters/sqlite3_adapter.rb index dcad230335..0b77dc7bc9 100644 --- a/activerecord/lib/active_record/connection_adapters/sqlite3_adapter.rb +++ b/activerecord/lib/active_record/connection_adapters/sqlite3_adapter.rb @@ -209,7 +209,7 @@ module ActiveRecord # DATABASE STATEMENTS ====================================== #++ - READ_QUERY = ActiveRecord::ConnectionAdapters::AbstractAdapter.build_read_query_regexp(:select) # :nodoc: + READ_QUERY = ActiveRecord::ConnectionAdapters::AbstractAdapter.build_read_query_regexp(:select, :pragma) # :nodoc: private_constant :READ_QUERY def write_query?(sql) # :nodoc: @@ -222,6 +222,10 @@ module ActiveRecord end def exec_query(sql, name = nil, binds = [], prepare: false) + if preventing_writes? && write_query?(sql) + raise ActiveRecord::ReadOnlyError, "Write query attempted while in readonly mode: #{sql}" + end + materialize_transactions type_casted_binds = type_casted_binds(binds) |