Skip to content

Commit 033f0ff

Browse files
committed
Quoted table names containing square brackets need to be regex escaped
1 parent 0a0ee51 commit 033f0ff

File tree

2 files changed

+25
-0
lines changed

2 files changed

+25
-0
lines changed
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
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+
# Same as original except quoted table name is regex escapes.
13+
def table_name_matches?(from)
14+
/(?:\A|(?<!FROM)\s)(?:\b#{table.name}\b|#{Regexp.escape(connection.quote_table_name(table.name))})(?!\.)/i.match?(from.to_s)
15+
end
16+
end
17+
end
18+
end
19+
end
20+
end
21+
22+
ActiveSupport.on_load(:active_record) do
23+
ActiveRecord::Relation.include(ActiveRecord::ConnectionAdapters::SQLServer::CoreExt::QueryMethods)
24+
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)