Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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 @@ -406,7 +406,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 @@ -115,4 +115,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