Skip to content

Commit

Permalink
Fix creation of stored procedures that contain insert statements (rai…
Browse files Browse the repository at this point in the history
  • Loading branch information
aidanharan authored and Lavika committed Sep 26, 2023
1 parent 9ceef91 commit 3fb7780
Show file tree
Hide file tree
Showing 3 changed files with 23 additions and 1 deletion.
4 changes: 4 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,10 @@

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

#### Fixed

- [#1088](https://github.com/rails-sqlserver/activerecord-sqlserver-adapter/pull/1088) Fix creation of stored procedures that contain insert statements

## v7.0.3.0

#### Fixed
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -449,7 +449,7 @@ def query_requires_identity_insert?(sql)
end

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

def identity_columns(table_name)
Expand Down
18 changes: 18 additions & 0 deletions test/cases/migration_test_sqlserver.rb
Original file line number Diff line number Diff line change
Expand Up @@ -123,4 +123,22 @@ class MigrationTestSQLServer < ActiveRecord::TestCase
refute_includes schemas, { "name" => "some schema" }
end
end

describe 'creating stored procedure' do
it 'stored procedure contains inserts are created successfully' do
sql = <<-SQL
CREATE OR ALTER PROCEDURE do_some_task
AS
IF NOT EXISTS(SELECT * FROM sys.objects WHERE type = 'U' AND name = 'SomeTableName')
BEGIN
CREATE TABLE SomeTableName (SomeNum int PRIMARY KEY CLUSTERED);
INSERT INTO SomeTableName(SomeNum) VALUES(1);
END
SQL

assert_nothing_raised { connection.execute(sql) }
ensure
connection.execute("DROP PROCEDURE IF EXISTS dbo.do_some_task;")
end
end
end

0 comments on commit 3fb7780

Please sign in to comment.