From 4c6ca4fd30b43123a5feed40e5f31b769abf5c91 Mon Sep 17 00:00:00 2001 From: Geremia Taglialatela Date: Fri, 22 Sep 2023 10:50:31 +0200 Subject: [PATCH] Use quoted table name Retrieving quoted table name directly from the class instead of re-calculating it from the connection is an order of magnitude faster ```rb class User < ActiveRecord::Base def self.qtn quoted_table_name end def self.cqtn connection.quote_table_name(table_name) end end ``` Ruby 2.2 / Rails 5.0: ``` User.qtn: 3003860.8 i/s User.cqtn: 259818.5 i/s - 11.56x slower ``` Ruby 3.2 / Rails 7.0: ``` Comparison: User.qtn: 13504395.2 i/s User.cqtn: 517189.1 i/s - 26.11x slower ``` --- lib/chrono_model/time_machine/timeline.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/chrono_model/time_machine/timeline.rb b/lib/chrono_model/time_machine/timeline.rb index baa65a9..f67c0d2 100644 --- a/lib/chrono_model/time_machine/timeline.rb +++ b/lib/chrono_model/time_machine/timeline.rb @@ -108,7 +108,7 @@ def timeline_associations_from(names) def quoted_history_fields @quoted_history_fields ||= begin - validity = "#{connection.quote_table_name(table_name)}.#{connection.quote_column_name('validity')}" + validity = "#{quoted_table_name}.#{connection.quote_column_name('validity')}" %w[lower upper].map! { |func| "#{func}(#{validity})" } end