Skip to content

Commit 831712a

Browse files
aidanharanAidan Haran
authored andcommitted
Fix creation of stored procedures that contain insert statements (#1088)
1 parent d248f4e commit 831712a

File tree

3 files changed

+23
-1
lines changed

3 files changed

+23
-1
lines changed

CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,10 @@
44

55
- [#1073](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/pull/1073) Improve performance of view default function lookup
66

7+
#### Fixed
8+
9+
- [#1088](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/pull/1088) Fix creation of stored procedures that contain insert statements
10+
711
## v7.0.3.0
812

913
#### Fixed

lib/active_record/connection_adapters/sqlserver/database_statements.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -426,7 +426,7 @@ def query_requires_identity_insert?(sql)
426426
end
427427

428428
def insert_sql?(sql)
429-
!(sql =~ /^\s*(INSERT|EXEC sp_executesql N'INSERT)/i).nil?
429+
!(sql =~ /\A\s*(INSERT|EXEC sp_executesql N'INSERT)/i).nil?
430430
end
431431

432432
def identity_columns(table_name)

test/cases/migration_test_sqlserver.rb

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -115,4 +115,22 @@ class MigrationTestSQLServer < ActiveRecord::TestCase
115115
refute_includes schemas, { "name" => "some schema" }
116116
end
117117
end
118+
119+
describe 'creating stored procedure' do
120+
it 'stored procedure contains inserts are created successfully' do
121+
sql = <<-SQL
122+
CREATE OR ALTER PROCEDURE do_some_task
123+
AS
124+
IF NOT EXISTS(SELECT * FROM sys.objects WHERE type = 'U' AND name = 'SomeTableName')
125+
BEGIN
126+
CREATE TABLE SomeTableName (SomeNum int PRIMARY KEY CLUSTERED);
127+
INSERT INTO SomeTableName(SomeNum) VALUES(1);
128+
END
129+
SQL
130+
131+
assert_nothing_raised { connection.execute(sql) }
132+
ensure
133+
connection.execute("DROP PROCEDURE IF EXISTS dbo.do_some_task;")
134+
end
135+
end
118136
end

0 commit comments

Comments
 (0)