aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/lib/arel
diff options
context:
space:
mode:
authorRyuta Kamizono <kamipo@gmail.com>2019-03-19 02:12:44 +0900
committerRyuta Kamizono <kamipo@gmail.com>2019-03-19 04:15:52 +0900
commit8072d8653a32e7719342df25eecab688ac9e39cc (patch)
treeb2ee162819fc85b9bd4b2b5f16395e4a1a66c244 /activerecord/lib/arel
parent98d0f93506b0b97804d0d510ffcc435af9b2a2d5 (diff)
downloadrails-8072d8653a32e7719342df25eecab688ac9e39cc.tar.gz
rails-8072d8653a32e7719342df25eecab688ac9e39cc.tar.bz2
rails-8072d8653a32e7719342df25eecab688ac9e39cc.zip
Extract `sanitize_as_sql_comment` from SQL visitor into connection
Probably that is useful for any other feature as well.
Diffstat (limited to 'activerecord/lib/arel')
-rw-r--r--activerecord/lib/arel/visitors/ibm_db.rb3
-rw-r--r--activerecord/lib/arel/visitors/informix.rb3
-rw-r--r--activerecord/lib/arel/visitors/mssql.rb3
-rw-r--r--activerecord/lib/arel/visitors/to_sql.rb10
4 files changed, 11 insertions, 8 deletions
diff --git a/activerecord/lib/arel/visitors/ibm_db.rb b/activerecord/lib/arel/visitors/ibm_db.rb
index 0ffc0725f7..5cf958f5f0 100644
--- a/activerecord/lib/arel/visitors/ibm_db.rb
+++ b/activerecord/lib/arel/visitors/ibm_db.rb
@@ -10,7 +10,8 @@ module Arel # :nodoc: all
end
def visit_Arel_Nodes_OptimizerHints(o, collector)
- collector << "/* <OPTGUIDELINES>#{sanitize_as_sql_comment(o).join}</OPTGUIDELINES> */"
+ hints = o.expr.map { |v| sanitize_as_sql_comment(v) }.join
+ collector << "/* <OPTGUIDELINES>#{hints}</OPTGUIDELINES> */"
end
def visit_Arel_Nodes_Limit(o, collector)
diff --git a/activerecord/lib/arel/visitors/informix.rb b/activerecord/lib/arel/visitors/informix.rb
index cd43be8858..1a4ad1c8d8 100644
--- a/activerecord/lib/arel/visitors/informix.rb
+++ b/activerecord/lib/arel/visitors/informix.rb
@@ -43,7 +43,8 @@ module Arel # :nodoc: all
end
def visit_Arel_Nodes_OptimizerHints(o, collector)
- collector << "/*+ #{sanitize_as_sql_comment(o).join(", ")} */"
+ hints = o.expr.map { |v| sanitize_as_sql_comment(v) }.join(", ")
+ collector << "/*+ #{hints} */"
end
def visit_Arel_Nodes_Offset(o, collector)
diff --git a/activerecord/lib/arel/visitors/mssql.rb b/activerecord/lib/arel/visitors/mssql.rb
index 85815baca2..05fe37c26f 100644
--- a/activerecord/lib/arel/visitors/mssql.rb
+++ b/activerecord/lib/arel/visitors/mssql.rb
@@ -82,7 +82,8 @@ module Arel # :nodoc: all
end
def visit_Arel_Nodes_OptimizerHints(o, collector)
- collector << "OPTION (#{sanitize_as_sql_comment(o).join(", ")})"
+ hints = o.expr.map { |v| sanitize_as_sql_comment(v) }.join(", ")
+ collector << "OPTION (#{hints})"
end
def get_offset_limit_clause(o)
diff --git a/activerecord/lib/arel/visitors/to_sql.rb b/activerecord/lib/arel/visitors/to_sql.rb
index 583f920290..e44dacd0ff 100644
--- a/activerecord/lib/arel/visitors/to_sql.rb
+++ b/activerecord/lib/arel/visitors/to_sql.rb
@@ -219,7 +219,8 @@ module Arel # :nodoc: all
end
def visit_Arel_Nodes_OptimizerHints(o, collector)
- collector << "/*+ #{sanitize_as_sql_comment(o).join(" ")} */"
+ hints = o.expr.map { |v| sanitize_as_sql_comment(v) }.join(" ")
+ collector << "/*+ #{hints} */"
end
def collect_nodes_for(nodes, collector, spacer, connector = COMMA)
@@ -785,10 +786,9 @@ module Arel # :nodoc: all
@connection.quote_column_name(name)
end
- def sanitize_as_sql_comment(o)
- o.expr.map { |v|
- v.gsub(%r{ (/ (?: | \g<1>) \*) \+? \s* | \s* (\* (?: | \g<2>) /) }x, "")
- }
+ def sanitize_as_sql_comment(value)
+ return value if Arel::Nodes::SqlLiteral === value
+ @connection.sanitize_as_sql_comment(value)
end
def collect_optimizer_hints(o, collector)