Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

procedure and custom type with the same name #1

Closed
lkurylo opened this issue Feb 25, 2016 · 2 comments
Closed

procedure and custom type with the same name #1

lkurylo opened this issue Feb 25, 2016 · 2 comments

Comments

@lkurylo
Copy link

lkurylo commented Feb 25, 2016

I have noticed that, when procedure and custom type is specified with the same name and schema, the SpyProcedure throws an error. Simply repro:

create schema tsqlt_collision_names_test

go

create type tsqlt_collision_names_test.test_type as table (id int)

go

create procedure tsqlt_collision_names_test.test_type(
    @param tsqlt_collision_names_test.test_type readonly
)
as
begin
    select 1
end

go

create procedure tsqlt_collision_names_test.test_type2(
    @param tsqlt_collision_names_test.test_type readonly
)
as
begin
    select 1
end

go

tSQLt.SpyProcedure 'tsqlt_collision_names_test.test_type2' --works

go

tSQLt.SpyProcedure 'tsqlt_collision_names_test.test_type' --exception
@mbt1
Copy link
Collaborator

mbt1 commented Feb 25, 2016

Thanks for letting me know. This will be fixed in the next version. If you need it fixed quicker than that, add a third parameter to the sp_rename call in tSQLt.Private_RenameObjectToUniqueName like this:

SET @RenameCmd = 'EXEC sp_rename ''' +
@SchemaName + '.' + @ObjectName + ''', ''' +
@NewName + ''',''OBJECT'';';

@mbt1 mbt1 closed this as completed Feb 25, 2016
@mbt1
Copy link
Collaborator

mbt1 commented Feb 25, 2016

From a5c992583be561b2b826eb0538e5f01b3c83601a Mon Sep 17 00:00:00 2001
From: maibotian <...>
Date: Thu, 25 Feb 2016 12:39:11 -0500
Subject: [PATCH] SpyProcedure (and also
 tSQLt.Private_RenameObjectToUniqueName) can now handle procedures (objects)
 when a type with the same name exists.

---
 .../tSQLt.Private_RenameObjectToUniqueName.ssp.sql |  2 +-
 Tests/SpyProcedureTests.class.sql                  | 47 +++++++++++++++++++++-
 2 files changed, 47 insertions(+), 2 deletions(-)

diff --git a/Source/tSQLt.Private_RenameObjectToUniqueName.ssp.sql b/Source/tSQLt.Private_RenameObjectToUniqueName.ssp.sql
index eeb4275..8b87f57 100644
--- a/Source/tSQLt.Private_RenameObjectToUniqueName.ssp.sql
+++ b/Source/tSQLt.Private_RenameObjectToUniqueName.ssp.sql
@@ -12,7 +12,7 @@ BEGIN
    DECLARE @RenameCmd NVARCHAR(MAX);
    SET @RenameCmd = 'EXEC sp_rename ''' + 
                           @SchemaName + '.' + @ObjectName + ''', ''' + 
-                          @NewName + ''';';
+                          @NewName + ''',''OBJECT'';';

    EXEC tSQLt.Private_MarkObjectBeforeRename @SchemaName, @ObjectName;

diff --git a/Tests/SpyProcedureTests.class.sql b/Tests/SpyProcedureTests.class.sql
index 3b0795c..d94e9c3 100644
--- a/Tests/SpyProcedureTests.class.sql
+++ b/Tests/SpyProcedureTests.class.sql
@@ -570,4 +570,49 @@ BEGIN
       EXEC tSQLt.Fail 'Unexpected error message was: ', @Err;
   END;

-END
+END;
+GO
+CREATE PROC SpyProcedureTests.[test SpyProcedure works on procedure if type with same name exists]
+AS
+BEGIN
+   CREATE TYPE SpyProcedureTests.ProcedureAndType FROM BIGINT;
+   EXEC('CREATE PROC SpyProcedureTests.ProcedureAndType AS RETURN;');
+
+   EXEC tSQLt.SpyProcedure @ProcedureName = 'SpyProcedureTests.ProcedureAndType';
+
+   EXEC ('EXEC SpyProcedureTests.ProcedureAndType');
+
+   SELECT _id_
+     INTO #Actual
+     FROM SpyProcedureTests.ProcedureAndType_SpyProcedureLog;
+
+   SELECT TOP(0) A.* INTO #Expected FROM #Actual A RIGHT JOIN #Actual X ON 1=0;
+   
+   INSERT INTO #Expected
+   VALUES(1);
+
+   EXEC tSQLt.AssertEqualsTable '#Expected','#Actual';
+END;
+GO
+CREATE PROC SpyProcedureTests.[test SpyProcedure works on procedure if table type with same name exists]
+AS
+BEGIN
+   CREATE TYPE SpyProcedureTests.ProcedureAndType AS TABLE(id INT);
+   EXEC('CREATE PROC SpyProcedureTests.ProcedureAndType AS RETURN;');
+SELECT OBJECT_ID('SpyProcedureTests.ProcedureAndType'),TYPE_ID('SpyProcedureTests.ProcedureAndType');
+   EXEC tSQLt.SpyProcedure @ProcedureName = 'SpyProcedureTests.ProcedureAndType';
+
+   EXEC ('EXEC SpyProcedureTests.ProcedureAndType');
+
+   SELECT _id_
+     INTO #Actual
+     FROM SpyProcedureTests.ProcedureAndType_SpyProcedureLog;
+
+   SELECT TOP(0) A.* INTO #Expected FROM #Actual A RIGHT JOIN #Actual X ON 1=0;
+   
+   INSERT INTO #Expected
+   VALUES(1);
+
+   EXEC tSQLt.AssertEqualsTable '#Expected','#Actual';
+END;
+GO
-- 
1.9.5.msysgit.1

mbt1 pushed a commit that referenced this issue Feb 13, 2022
mbt1 added a commit that referenced this issue Feb 16, 2022
…to-Case-sensitive-server-#155

Case sensitive fix #1
mbt1 pushed a commit that referenced this issue Mar 1, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants