From 94f3c412b154100e53b0800622a503ee56e39a6d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andreas=20B=C3=BChmann?= Date: Sun, 27 Aug 2017 09:24:41 +0200 Subject: [PATCH] Properly quote table names in table_stats_query --- lib/database_cleaner/active_record/deletion.rb | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/lib/database_cleaner/active_record/deletion.rb b/lib/database_cleaner/active_record/deletion.rb index 59a41c4..d172355 100644 --- a/lib/database_cleaner/active_record/deletion.rb +++ b/lib/database_cleaner/active_record/deletion.rb @@ -66,14 +66,16 @@ def table_stats_query(connection, db_name) if @cache_tables && !@table_stats_query.nil? return @table_stats_query else - @table_stats_query = connection.select_values(<<-SQL).join(' UNION ') - SELECT CONCAT('SELECT \"', table_name, '\" AS table_name, COUNT(*) AS exact_row_count FROM ', table_name) - FROM - INFORMATION_SCHEMA.TABLES - WHERE - table_schema = '#{db_name}' - AND #{::DatabaseCleaner::ActiveRecord::Base.exclusion_condition('table_name')}; + tables = connection.select_values(<<-SQL) + SELECT table_name + FROM information_schema.tables + WHERE table_schema = '#{db_name}' + AND #{::DatabaseCleaner::ActiveRecord::Base.exclusion_condition('table_name')}; SQL + queries = tables.map do |table| + "SELECT #{connection.quote(table)} AS table_name, COUNT(*) AS exact_row_count FROM #{connection.quote_table_name(table)}" + end + @table_stats_query = queries.join(' UNION ') end end