Skip to content

Commit 3fb7780

Browse files
aidanharanLavika
authored andcommitted
Fix creation of stored procedures that contain insert statements (rails-sqlserver#1088)
1 parent 9ceef91 commit 3fb7780

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
@@ -449,7 +449,7 @@ def query_requires_identity_insert?(sql)
449449
end
450450

451451
def insert_sql?(sql)
452-
!(sql =~ /^\s*(INSERT|EXEC sp_executesql N'INSERT)/i).nil?
452+
!(sql =~ /\A\s*(INSERT|EXEC sp_executesql N'INSERT)/i).nil?
453453
end
454454

455455
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
@@ -123,4 +123,22 @@ class MigrationTestSQLServer < ActiveRecord::TestCase
123123
refute_includes schemas, { "name" => "some schema" }
124124
end
125125
end
126+
127+
describe 'creating stored procedure' do
128+
it 'stored procedure contains inserts are created successfully' do
129+
sql = <<-SQL
130+
CREATE OR ALTER PROCEDURE do_some_task
131+
AS
132+
IF NOT EXISTS(SELECT * FROM sys.objects WHERE type = 'U' AND name = 'SomeTableName')
133+
BEGIN
134+
CREATE TABLE SomeTableName (SomeNum int PRIMARY KEY CLUSTERED);
135+
INSERT INTO SomeTableName(SomeNum) VALUES(1);
136+
END
137+
SQL
138+
139+
assert_nothing_raised { connection.execute(sql) }
140+
ensure
141+
connection.execute("DROP PROCEDURE IF EXISTS dbo.do_some_task;")
142+
end
143+
end
126144
end

0 commit comments

Comments
 (0)