Skip to content

Commit c2be57c

Browse files
aidanharanwpolicarpo
authored andcommitted
Quoted table names containing square brackets need to be regex escaped
Use method from Rails master
1 parent a3565cc commit c2be57c

File tree

2 files changed

+27
-0
lines changed

2 files changed

+27
-0
lines changed
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
require 'active_record/relation'
2+
require 'active_record/version'
3+
4+
module ActiveRecord
5+
module ConnectionAdapters
6+
module SQLServer
7+
module CoreExt
8+
module QueryMethods
9+
10+
private
11+
12+
# Copy of original from Rails master. This patch can be removed when adapter supports Rails 6.
13+
def table_name_matches?(from)
14+
table_name = Regexp.escape(table.name)
15+
quoted_table_name = Regexp.escape(connection.quote_table_name(table.name))
16+
/(?:\A|(?<!FROM)\s)(?:\b#{table_name}\b|#{quoted_table_name})(?!\.)/i.match?(from.to_s)
17+
end
18+
end
19+
end
20+
end
21+
end
22+
end
23+
24+
ActiveSupport.on_load(:active_record) do
25+
ActiveRecord::Relation.include(ActiveRecord::ConnectionAdapters::SQLServer::CoreExt::QueryMethods)
26+
end

lib/active_record/connection_adapters/sqlserver_adapter.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
require 'active_record/connection_adapters/sqlserver/core_ext/explain_subscriber'
99
require 'active_record/connection_adapters/sqlserver/core_ext/attribute_methods'
1010
require 'active_record/connection_adapters/sqlserver/core_ext/finder_methods'
11+
require 'active_record/connection_adapters/sqlserver/core_ext/query_methods'
1112
require 'active_record/connection_adapters/sqlserver/version'
1213
require 'active_record/connection_adapters/sqlserver/type'
1314
require 'active_record/connection_adapters/sqlserver/database_limits'

0 commit comments

Comments
 (0)