Skip to content

Commit 78ac7a1

Browse files
committed
Do not cache internal introspection queries
1 parent 2641dc0 commit 78ac7a1

File tree

2 files changed

+11
-6
lines changed

2 files changed

+11
-6
lines changed

lib/active_record/connection_adapters/sqlserver/schema_statements.rb

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -415,11 +415,15 @@ def column_definitions(table_name)
415415
ci[:default_function] = begin
416416
default = ci[:default_value]
417417
if default.nil? && view_exists
418-
default = select_value "
419-
SELECT c.COLUMN_DEFAULT
420-
FROM #{database}.INFORMATION_SCHEMA.COLUMNS c
421-
WHERE c.TABLE_NAME = '#{view_tblnm}'
422-
AND c.COLUMN_NAME = '#{views_real_column_name(table_name, ci[:name])}'".squish, 'SCHEMA'
418+
default = uncached do
419+
select_value %{
420+
SELECT c.COLUMN_DEFAULT
421+
FROM #{database}.INFORMATION_SCHEMA.COLUMNS c
422+
WHERE
423+
c.TABLE_NAME = '#{view_tblnm}'
424+
AND c.COLUMN_NAME = '#{views_real_column_name(table_name, ci[:name])}'
425+
}.squish, 'SCHEMA'
426+
end
423427
end
424428
case default
425429
when nil
@@ -438,7 +442,7 @@ def column_definitions(table_name)
438442
else ci[:type]
439443
end
440444
value = default.match(/\A\((.*)\)\Z/m)[1]
441-
value = select_value "SELECT CAST(#{value} AS #{type}) AS value", 'SCHEMA'
445+
value = uncached { select_value("SELECT CAST(#{value} AS #{type}) AS value3", 'SCHEMA') }
442446
[value, nil]
443447
end
444448
end

test/cases/coerced_tests.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -605,6 +605,7 @@ def test_merge_options_coerced
605605

606606

607607

608+
require 'models/parrot'
608609
require 'models/topic'
609610
class PersistenceTest < ActiveRecord::TestCase
610611
# We can not UPDATE identity columns.

0 commit comments

Comments
 (0)