From 1340498d2102423665cc5cfe7be7cdba32c72928 Mon Sep 17 00:00:00 2001 From: Ryuta Kamizono Date: Sun, 9 Jun 2019 14:03:31 +0900 Subject: Refactor `disallow_raw_sql!` to avoid `split(/\s*,\s*/)` to order args `split(/\s*,\s*/)` to order args and then `permit.match?` one by one is much slower than `permit.match?` once. --- .../connection_adapters/sqlite3/quoting.rb | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) (limited to 'activerecord/lib/active_record/connection_adapters/sqlite3/quoting.rb') diff --git a/activerecord/lib/active_record/connection_adapters/sqlite3/quoting.rb b/activerecord/lib/active_record/connection_adapters/sqlite3/quoting.rb index 79d477cdb2..88a16599f7 100644 --- a/activerecord/lib/active_record/connection_adapters/sqlite3/quoting.rb +++ b/activerecord/lib/active_record/connection_adapters/sqlite3/quoting.rb @@ -53,13 +53,22 @@ module ActiveRecord COLUMN_NAME_WITH_ORDER end - COLUMN_NAME = /\A(?:("?)\w+\k<1>\.)?("?)\w+\k<2>\z/i + COLUMN_NAME = / + \A + ( + (?:\w+\.|"\w+"\.)?(?:\w+|"\w+") + ) + (?:\s*,\s*\g<1>)* + \z + /ix COLUMN_NAME_WITH_ORDER = / \A - (?:("?)\w+\k<1>\.)? - ("?)\w+\k<2> - (?:\s+ASC|\s+DESC)? + ( + (?:\w+\.|"\w+"\.)?(?:\w+|"\w+") + (?:\s+ASC|\s+DESC)? + ) + (?:\s*,\s*\g<1>)* \z /ix -- cgit v1.2.3