Skip to content

Commit 29f6759

Browse files
authored
Merge pull request #125 from tSQLt-org/TransactionFree
Transaction free
2 parents 31ffbc3 + 70ec9a2 commit 29f6759

File tree

87 files changed

+5963
-691
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

87 files changed

+5963
-691
lines changed

CI/Azure-DevOps/AZ_MainPipeline.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,8 @@ stages:
8888
inputs:
8989
azureSubscription: 'Azure DevOps Main Pipeline Service Principal'
9090
KeyVaultName: 'tSQLtSigningKey'
91+
SecretsFilter: '*'
92+
RunAsPreJob: false
9193

9294
- task: PowerShell@2
9395
name: CreateResourceGroupName

Experiments/CollationTests.sql

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
/*--
2+
RELEVANT LINKS
3+
https://www.red-gate.com/simple-talk/databases/sql-server/t-sql-programming-sql-server/questions-sql-server-collations-shy-ask/
4+
https://docs.microsoft.com/en-us/sql/t-sql/statements/windows-collation-name-transact-sql?view=sql-server-ver15
5+
--*/
6+
7+
SELECT DATABASEPROPERTYEX('tempdb','Collation') [tempdb collation],
8+
DATABASEPROPERTYEX(DB_NAME(),'Collation') [database collation]
9+
GO
10+
11+
DROP TABLE IF EXISTS dbo.atable;
12+
DROP TABLE IF EXISTS tempdb..#Actual;
13+
SELECT
14+
'Hello World!' COLLATE SQL_Polish_CP1250_CI_AS c1,
15+
'Hello World!' COLLATE SQL_Latin1_General_CP437_BIN c2,
16+
'Hello World!' COLLATE Albanian_BIN2 c3
17+
INTO dbo.atable
18+
SELECT * INTO #Actual FROM dbo.atable
19+
20+
SELECT 'dbo.atable' [table],* FROM sys.columns WHERE object_id = OBJECT_ID('dbo.atable')
21+
22+
SELECT '#Actual',* FROM tempdb.sys.columns WHERE object_id = OBJECT_ID('tempdb..#Actual');
23+
24+
GO
25+
26+
DROP TABLE IF EXISTS tempdb..#E;
27+
CREATE TABLE #E(
28+
C1 NVARCHAR(MAX) COLLATE DATABASE_DEFAULT,
29+
C2 NVARCHAR(MAX)
30+
);
31+
32+
SELECT '#E',* FROM tempdb.sys.columns WHERE object_id = OBJECT_ID('tempdb..#E');
33+
GO
34+
SELECT *
35+
FROM #E E1
36+
JOIN #E E2
37+
ON E2.C2 = E1.C1

Experiments/Debugging tSQLt.tdf

2.92 KB
Binary file not shown.

Experiments/Experiments.ssmssqlproj

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,12 @@
3636
<AssociatedConnUserName />
3737
<FullPath>CertificateTest.sql</FullPath>
3838
</FileNode>
39+
<FileNode Name="CollationTests.sql">
40+
<AssociatedConnectionMoniker />
41+
<AssociatedConnSrvName />
42+
<AssociatedConnUserName />
43+
<FullPath>CollationTests.sql</FullPath>
44+
</FileNode>
3945
<FileNode Name="EXPERIMENTS.sql">
4046
<AssociatedConnectionMoniker />
4147
<AssociatedConnSrvName />
@@ -60,6 +66,12 @@
6066
<AssociatedConnUserName />
6167
<FullPath>LIKE4000.sql</FullPath>
6268
</FileNode>
69+
<FileNode Name="MSSQL Defect Try-Catch Invalidates Transaction.sql">
70+
<AssociatedConnectionMoniker />
71+
<AssociatedConnSrvName />
72+
<AssociatedConnUserName />
73+
<FullPath>MSSQL Defect Try-Catch Invalidates Transaction.sql</FullPath>
74+
</FileNode>
6375
<FileNode Name="NameResolutionResearch.sql">
6476
<AssociatedConnectionMoniker />
6577
<AssociatedConnSrvName />
@@ -102,6 +114,12 @@
102114
<AssociatedConnUserName />
103115
<FullPath>SQLCmdTest.1.sql</FullPath>
104116
</FileNode>
117+
<FileNode Name="TestingTransactionNames.sql">
118+
<AssociatedConnectionMoniker />
119+
<AssociatedConnSrvName />
120+
<AssociatedConnUserName />
121+
<FullPath>TestingTransactionNames.sql</FullPath>
122+
</FileNode>
105123
<FileNode Name="tSQLtListObjects.sql">
106124
<AssociatedConnectionMoniker />
107125
<AssociatedConnSrvName />
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
PRINT 'No TRY...CATCH:';
2+
EXEC ('BEGIN TRAN');
3+
SELECT XACT_STATE() AS [XACT_STATE()],@@TRANCOUNT AS [@@TRANCOUNT];
4+
GO
5+
IF(XACT_STATE()<>0)ROLLBACK;
6+
GO
7+
8+
9+
10+
GO
11+
PRINT 'In TRY...CATCH:';
12+
BEGIN TRY
13+
EXEC ('BEGIN TRAN');
14+
END TRY
15+
BEGIN CATCH
16+
END CATCH;
17+
SELECT XACT_STATE() AS [XACT_STATE()],@@TRANCOUNT AS [@@TRANCOUNT];
18+
GO
19+
IF(XACT_STATE()<>0)ROLLBACK;
20+
GO
Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
SELECT
2+
R.EventSequence,
3+
TE.name,
4+
TSV.subclass_name,
5+
R.ObjectName,
6+
R.LineNumber,
7+
R.TransactionID,
8+
R.XactSequence,
9+
ISNULL(REPLICATE(' ',(R.NestLevel-1)),'')+CAST(R.TextData AS NVARCHAR(MAX)) AS TextData,
10+
R.Error,
11+
R.Severity,
12+
R.NestLevel,
13+
R.RowNumber,
14+
R.EventClass,
15+
R.EventSubClass,
16+
R.ApplicationName,
17+
R.ClientProcessID,
18+
R.DatabaseID,
19+
R.DatabaseName,
20+
R.GroupID,
21+
R.HostName,
22+
R.IsSystem,
23+
R.LoginName,
24+
R.LoginSid,
25+
R.NTDomainName,
26+
R.NTUserName,
27+
R.RequestID,
28+
R.SPID,
29+
R.ServerName,
30+
R.SessionLoginName,
31+
R.StartTime,
32+
R.Success,
33+
R.GUID,
34+
R.BinaryData,
35+
R.Duration,
36+
R.EndTime,
37+
R.IntegerData,
38+
R.CPU,
39+
R.IntegerData2,
40+
R.Offset,
41+
R.Reads,
42+
R.RowCounts,
43+
R.Writes,
44+
R.State,
45+
R.ObjectID,
46+
R.ObjectType,
47+
R.SourceDatabaseID,
48+
R.IndexID,
49+
R.Type,
50+
R.Mode,
51+
R.OwnerID,
52+
R.ObjectID2,
53+
R.BigintData1
54+
FROM dbo.run4 R
55+
LEFT JOIN sys.trace_events AS TE
56+
ON R.EventClass = TE.trace_event_id
57+
LEFT JOIN sys.trace_subclass_values AS TSV
58+
ON TSV.trace_event_id = TE.trace_event_id
59+
AND R.EventSubClass = TSV.subclass_value
60+
WHERE ISNULL(R.ObjectName,'???') NOT IN ('Private_Print','sp_rename', 'sp_validname','GetTestResultFormatter','sp_addextendedproperty','sp_updateextendedproperty')
61+
ORDER BY R.EventSequence
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
IF(XACT_STATE()<>0)ROLLBACK
2+
GO
3+
DROP TABLE IF EXISTS #Actual
4+
GO
5+
DECLARE @TranName NVARCHAR(32) = NULL;
6+
SELECT 1,@@TRANCOUNT
7+
SELECT 1 X,@@TRANCOUNT TC INTO #Actual
8+
BEGIN TRAN;
9+
SELECT 2,@@TRANCOUNT
10+
INSERT INTO #Actual VALUES(2,@@TRANCOUNT);
11+
SAVE TRAN @TranName;
12+
SELECT 3,@@TRANCOUNT
13+
SELECT * FROM sys.dm_tran_current_transaction AS DTCT JOIN sys.dm_tran_session_transactions
14+
AS DTAT ON DTAT.transaction_id = DTCT.transaction_id
15+
INSERT INTO #Actual VALUES(3,@@TRANCOUNT);
16+
SELECT * FROM #Actual AS A
17+
ROLLBACK TRAN @TranName;
18+
SELECT 4,@@TRANCOUNT
19+
INSERT INTO #Actual VALUES(4,@@TRANCOUNT);
20+
COMMIT;
21+
SELECT * FROM #Actual AS A

Facade/Facade.CreateAllObjects.ssp.sql

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ BEGIN
4545
@CreateProcedureStatement = @CreateProcedureStatement OUT,
4646
@LogTableName = NULL,
4747
@CommandToExecute = NULL,
48+
@CallOriginal = 0,
4849
@CreateLogTableStatement = NULL;
4950

5051
EXEC Facade.CreateSchemaIfNotExists @FacadeDbName = @FacadeDbName, @SchemaName = @SchemaName;

Source/BuildOrder.txt

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ tSQLt._Header.sql
33
tSQLt.schema.sql
44
tSQLt.TestClass.user.sql
55
tSQLt.Private_GetDropItemCmd.sfn.sql
6+
tSQLt.Private_Results.view.sql
67
tSQLt.DropClass.ssp.sql
78
tSQLt.Uninstall.ssp.sql
89
tSQLt.TestClasses.view.sql
@@ -41,6 +42,8 @@ tSQLt.Private_RenameObjectToUniqueName.ssp.sql
4142
tSQLt.Private_RenameObjectToUniqueNameUsingObjectId.ssp.sql
4243
tSQLt.RemoveObject.ssp.sql
4344
tSQLt.RemoveObjectIfExists.ssp.sql
45+
tSQLt.Private_GetFormattedErrorInfo.sfn.sql
46+
tSQLt.Private_HandleMessageAndResult.sfn.sql
4447
tSQLt.Private_CleanTestResult.ssp.sql
4548
tSQLt.Private_ListTestAnnotations.sfn.sql
4649
tSQLt.Private_ProcessTestAnnotations.ssp.sql
@@ -50,8 +53,16 @@ tSQLt.Private_SqlVersion.sfn.sql
5053
tSQLt.Private_SplitSqlVersion.sfn.sql
5154
tSQLt.FriendlySQLServerVersion.sfn.sql
5255
tSQLt.Info.sfn.sql
56+
tSQLt.Private_Seize.tbl.sql
5357
tSQLt.Private_Init.ssp.sql
5458
tSQLt.Private_HostPlatform.svw.sql
59+
tSQLt.Private_NoTransactionTableAction.view.sql
60+
tSQLt.Private_NoTransactionHandleTable.ssp.sql
61+
tSQLt.Private_NoTransactionHandleTables.ssp.sql
62+
tSQLt.Private_CleanUpCmdHandler.ssp.sql
63+
tSQLt.Private_CleanUp.ssp.sql
64+
tSQLt.Private_AssertNoSideEffects_GenerateCommand.sfn.sql
65+
tSQLt.Private_AssertNoSideEffects.ssp.sql
5566
Run_Methods.sql
5667
tSQLt.Private_SysTypes.svw.sql
5768
tSQLt.Private_GetFullTypeName.sfn.sql
@@ -60,6 +71,7 @@ tSQLt.Private_ScriptIndex.sfn.sql
6071
tSQLt.Private_RemoveSchemaBinding.ssp.sql
6172
tSQLt.Private_RemoveSchemaBoundReferences.ssp.sql
6273
tSQLt.Private_GetForeignKeyDefinition.sfn.sql
74+
tSQLt.Private_MarktSQLtTempObject.ssp.sql
6375
ApplyConstraint_Methods.sql
6476
tSQLt.Private_ValidateFakeTableParameters.ssp.sql
6577
tSQLt.Private_GetDataTypeOrComputedColumnDefinition.sfn.sql
@@ -68,17 +80,16 @@ tSQLt.Private_GetDefaultConstraintDefinition.sfn.sql
6880
tSQLt.Private_GetUniqueConstraintDefinition.sfn.sql
6981
tSQLt.Private_CreateFakeTableStatement.sfn.sql
7082
tSQLt.Private_CreateFakeOfTable.ssp.sql
71-
tSQLt.Private_MarktSQLtTempObject.ssp.sql
7283
tSQLt.FakeTable.ssp.sql
7384
tSQLt.Private_GenerateCreateProcedureSpyStatement.ssp.sql
7485
tSQLt.Private_CreateProcedureSpy.ssp.sql
86+
tSQLt.Private_ValidateProcedureCanBeUsedWithSpyProcedure.ssp.sql
7587
tSQLt.SpyProcedure.ssp.sql
7688
tSQLt.Private_GetCommaSeparatedColumnList.sfn.sql
7789
tSQLt.Private_CreateResultTableForCompareTables.ssp.sql
7890
tSQLt.Private_ValidateThatAllDataTypesInTableAreSupported.ssp.sql
7991
tSQLt.Private_CompareTablesFailIfUnequalRowsExists.ssp.sql
8092
tSQLt.Private_CompareTables.ssp.sql
81-
tSQLt.Private_NullCellTable.tbl.sql
8293
tSQLt.AssertObjectExists.ssp.sql
8394
tSQLt.AssertObjectDoesNotExist.ssp.sql
8495
tSQLt.AssertEqualsString.ssp.sql
@@ -94,7 +105,6 @@ tSQLt.Private_ValidateObjectsCompatibleWithFakeFunction.ssp.sql
94105
tSQLt.Private_CreateFakeFunction.ssp.sql
95106
tSQLt.FakeFunction.ssp.sql
96107
tSQLt.RenameClass.ssp.sql
97-
tSQLt.AssertEqualsTableSchema.tables.sql
98108
tSQLt.AssertEqualsTableSchema.ssp.sql
99109
tSQLt.AssertStringTable.udt.sql
100110
tSQLt.AssertStringIn.ssp.sql
@@ -105,6 +115,7 @@ tSQLt.(at)tSQLt_SkipTest.sfn.sql
105115
tSQLt.(at)tSQLt_MinSqlMajorVersion.sfn.sql
106116
tSQLt.(at)tSQLt_MaxSqlMajorVersion.sfn.sql
107117
tSQLt.(at)tSQLt_RunOnlyOnHostPlatform.sfn.sql
118+
tSQLt.(at)tSQLt_NoTransaction.sfn.sql
108119
tSQLt.RemoveExternalAccessKey.ssp.sql
109120
tSQLt.InstallExternalAccessKey.ssp.sql
110121
tSQLt.Private_InstallationInfo.sfn.sql

0 commit comments

Comments
 (0)