From b36259af29624d4a440589c71800063afcb36296 Mon Sep 17 00:00:00 2001 From: Seamus Abshere Date: Tue, 20 Mar 2012 16:38:39 -0500 Subject: [PATCH] Solving #50 - memoize MySQL's max_allowed_packet instead of querying it every time you run .import --- lib/activerecord-import/adapters/mysql_adapter.rb | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/lib/activerecord-import/adapters/mysql_adapter.rb b/lib/activerecord-import/adapters/mysql_adapter.rb index 44ade0d..5254212 100644 --- a/lib/activerecord-import/adapters/mysql_adapter.rb +++ b/lib/activerecord-import/adapters/mysql_adapter.rb @@ -5,10 +5,12 @@ module ActiveRecord::Import::MysqlAdapter # Returns the maximum number of bytes that the server will allow # in a single packet def max_allowed_packet # :nodoc: - result = execute( "SHOW VARIABLES like 'max_allowed_packet';" ) - # original Mysql gem responds to #fetch_row while Mysql2 responds to #first - val = result.respond_to?(:fetch_row) ? result.fetch_row[1] : result.first[1] - val.to_i + @max_allowed_packet ||= begin + result = execute( "SHOW VARIABLES like 'max_allowed_packet';" ) + # original Mysql gem responds to #fetch_row while Mysql2 responds to #first + val = result.respond_to?(:fetch_row) ? result.fetch_row[1] : result.first[1] + val.to_i + end end # Returns a generated ON DUPLICATE KEY UPDATE statement given the passed