Merge pull request #50809 from Shopify/freeze-cached-strings

Freeze and dedup `quote_column_name` and `quote_table_name` caches
This commit is contained in:
Jean Boussier 2024-01-19 15:23:55 +01:00 committed by GitHub
commit 2ddbca3e6a
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 8 additions and 10 deletions

@ -30,11 +30,11 @@ def cast_bound_value(value)
end
def quote_column_name(name)
QUOTED_COLUMN_NAMES[name] ||= "`#{super.gsub('`', '``')}`"
QUOTED_COLUMN_NAMES[name] ||= "`#{super.gsub('`', '``')}`".freeze
end
def quote_table_name(name)
QUOTED_TABLE_NAMES[name] ||= super.gsub(".", "`.`").freeze
QUOTED_TABLE_NAMES[name] ||= -super.gsub(".", "`.`").freeze
end
def unquoted_true

@ -86,12 +86,7 @@ def quote_string(s) # :nodoc:
# - "schema.name".table_name
# - "schema.name"."table.name"
def quote_table_name(name) # :nodoc:
QUOTED_TABLE_NAMES[name] ||= Utils.extract_schema_qualified_name(name.to_s).quoted.freeze
end
# Quotes schema names for use in SQL queries.
def quote_schema_name(name)
PG::Connection.quote_ident(name)
QUOTED_TABLE_NAMES[name] ||= -Utils.extract_schema_qualified_name(name.to_s).quoted.freeze
end
def quote_table_name_for_assignment(table, attr)
@ -103,6 +98,9 @@ def quote_column_name(name) # :nodoc:
QUOTED_COLUMN_NAMES[name] ||= PG::Connection.quote_ident(super).freeze
end
# Quotes schema names for use in SQL queries.
alias_method :quote_schema_name, :quote_column_name
# Quote date/time values for use in SQL input.
def quoted_date(value) # :nodoc:
if value.year <= 0

@ -16,11 +16,11 @@ def quote_table_name_for_assignment(table, attr)
end
def quote_table_name(name)
QUOTED_TABLE_NAMES[name] ||= super.gsub(".", "\".\"").freeze
QUOTED_TABLE_NAMES[name] ||= -super.gsub(".", "\".\"").freeze
end
def quote_column_name(name)
QUOTED_COLUMN_NAMES[name] ||= %Q("#{super.gsub('"', '""')}")
QUOTED_COLUMN_NAMES[name] ||= %Q("#{super.gsub('"', '""')}").freeze
end
def quoted_time(value)