Skip to content

Commit

Permalink
Allow INSERT statements with SELECT notation
Browse files Browse the repository at this point in the history
  • Loading branch information
aidanharan committed Oct 15, 2024
1 parent 13349d9 commit 569c0da
Show file tree
Hide file tree
Showing 3 changed files with 11 additions and 0 deletions.
6 changes: 6 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,9 @@
## Unreleased

#### Fixed

- [#](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/pull/) Allow INSERT statements with SELECT notation

## v7.2.1

#### Fixed
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -681,6 +681,7 @@ def get_raw_table_name(sql)
s.split(/INSERT INTO/i)[1]
.split(/OUTPUT INSERTED/i)[0]
.split(/(DEFAULT)?\s+VALUES/i)[0]
.split(/\bSELECT\b(?![^\[]*\])/i)[0]
.match(/\s*([^(]*)/i)[0]
elsif s.match?(/^\s*UPDATE\s+.*/i)
s.match(/UPDATE\s+([^\(\s]+)\s*/i)[1]
Expand Down
4 changes: 4 additions & 0 deletions test/cases/schema_test_sqlserver.rb
Original file line number Diff line number Diff line change
Expand Up @@ -96,6 +96,10 @@ class SchemaTestSQLServer < ActiveRecord::TestCase
it do
assert_equal "[test].[aliens]", connection.send(:get_raw_table_name, "EXEC sp_executesql N'INSERT INTO [test].[aliens] ([name]) OUTPUT INSERTED.[id] VALUES (@0)', N'@0 varchar(255)', @0 = 'Trisolarans'")
end

it do
assert_equal "[with].[select notation]", connection.send(:get_raw_table_name, "INSERT INTO [with].[select notation] SELECT * FROM [table_name]")
end
end
end
end

0 comments on commit 569c0da

Please sign in to comment.