diff --git a/Source/tSQLt.FakeTable.ssp.sql b/Source/tSQLt.FakeTable.ssp.sql index 95790ea13..9a4acccc7 100644 --- a/Source/tSQLt.FakeTable.ssp.sql +++ b/Source/tSQLt.FakeTable.ssp.sql @@ -16,7 +16,9 @@ BEGIN DECLARE @TargetObjectFullName NVARCHAR(MAX) = NULL; DECLARE @OriginalObjectObjectId INT; DECLARE @TargetObjectObjectId INT; - + DECLARE @IsNode BIT = 0; + DECLARE @IsEdge BIT = 0; + IF(@TableName NOT IN (PARSENAME(@TableName,1),QUOTENAME(PARSENAME(@TableName,1))) AND @SchemaName IS NOT NULL) BEGIN @@ -31,6 +33,11 @@ BEGIN SET @OrigObjectFullName = @OrigObjectCleanQuotedSchemaName + '.' + @OrigObjectCleanQuotedName; + -- Retrieve node and edge information for the original object + SELECT + @IsNode = is_node, @IsEdge = is_edge FROM sys.tables + WHERE [name] = PARSENAME(@OrigObjectFullName,1) AND schema_name([schema_id]) = PARSENAME(@OrigObjectFullName,2); + EXEC tSQLt.Private_RenameObjectToUniqueName @OrigObjectCleanQuotedSchemaName, @OrigObjectCleanQuotedName, @OrigObjectNewName OUTPUT; SET @OriginalObjectObjectId = OBJECT_ID(@OrigObjectCleanQuotedSchemaName + '.' + QUOTENAME(@OrigObjectNewName)); @@ -52,7 +59,7 @@ BEGIN SET @TargetObjectObjectId = @OriginalObjectObjectId; END; - EXEC tSQLt.Private_CreateFakeOfTable @OrigObjectCleanQuotedSchemaName, @OrigObjectCleanQuotedName, @TargetObjectObjectId, @Identity, @ComputedColumns, @Defaults; + EXEC tSQLt.Private_CreateFakeOfTable @OrigObjectCleanQuotedSchemaName, @OrigObjectCleanQuotedName, @TargetObjectObjectId, @Identity, @ComputedColumns, @Defaults, @IsNode, @IsEdge; EXEC tSQLt.Private_MarktSQLtTempObject @OrigObjectFullName, N'TABLE', @OrigObjectNewName; END diff --git a/Source/tSQLt.Private_CreateFakeOfTable.ssp.sql b/Source/tSQLt.Private_CreateFakeOfTable.ssp.sql index 625d910b8..2e9704b1e 100644 --- a/Source/tSQLt.Private_CreateFakeOfTable.ssp.sql +++ b/Source/tSQLt.Private_CreateFakeOfTable.ssp.sql @@ -7,12 +7,14 @@ CREATE PROCEDURE tSQLt.Private_CreateFakeOfTable @OrigTableObjectId INT, @Identity BIT, @ComputedColumns BIT, - @Defaults BIT + @Defaults BIT, + @IsNode BIT = 0, + @IsEdge BIT = 0 AS BEGIN DECLARE @cmd NVARCHAR(MAX) = (SELECT CreateTableStatement - FROM tSQLt.Private_CreateFakeTableStatement(@OrigTableObjectId, @SchemaName+'.'+@TableName,@Identity,@ComputedColumns,@Defaults,0)); + FROM tSQLt.Private_CreateFakeTableStatement(@OrigTableObjectId, @SchemaName+'.'+@TableName,@Identity,@ComputedColumns,@Defaults,0, @IsNode, @IsEdge)); EXEC (@cmd); END; ---Build- diff --git a/Source/tSQLt.Private_CreateFakeTableStatement.sfn.sql b/Source/tSQLt.Private_CreateFakeTableStatement.sfn.sql index 7e3d17c58..6194098ff 100644 --- a/Source/tSQLt.Private_CreateFakeTableStatement.sfn.sql +++ b/Source/tSQLt.Private_CreateFakeTableStatement.sfn.sql @@ -8,13 +8,20 @@ CREATE FUNCTION tSQLt.Private_CreateFakeTableStatement( @Identity BIT, @ComputedColumns BIT, @Defaults BIT, - @PreserveNOTNULL BIT + @PreserveNOTNULL BIT, + @IsNode BIT = 0, + @IsEdge BIT = 0 ) RETURNS TABLE AS RETURN SELECT - 'CREATE TABLE ' + @FullFakeTableName + '(' + STUFF(Cols,1,1,'') + ')' CreateTableStatement, + 'CREATE TABLE ' + @FullFakeTableName + '(' + STUFF(Cols,1,1,'') + + CASE + WHEN @IsNode = 1 THEN ') AS NODE' + WHEN @IsEdge = 1 THEN ') AS EDGE' + ELSE ')' + END CreateTableStatement, 'CREATE TYPE ' + @FullFakeTableName + ' AS TABLE(' + STUFF(Cols,1,1,'') + ')' CreateTableTypeStatement FROM (