diff --git a/SqlScriptDom/Parser/TSql/Ast.xml b/SqlScriptDom/Parser/TSql/Ast.xml index 5c73908..d02bc3b 100644 --- a/SqlScriptDom/Parser/TSql/Ast.xml +++ b/SqlScriptDom/Parser/TSql/Ast.xml @@ -1459,6 +1459,10 @@ + + + + @@ -2674,6 +2678,9 @@ + + + @@ -2706,6 +2713,11 @@ + + + + + diff --git a/SqlScriptDom/Parser/TSql/CodeGenerationSupporter.cs b/SqlScriptDom/Parser/TSql/CodeGenerationSupporter.cs index f9a8834..daa8b35 100644 --- a/SqlScriptDom/Parser/TSql/CodeGenerationSupporter.cs +++ b/SqlScriptDom/Parser/TSql/CodeGenerationSupporter.cs @@ -208,6 +208,7 @@ internal static class CodeGenerationSupporter internal const string Cluster = "CLUSTER"; internal const string Clustered = "CLUSTERED"; internal const string ClearPort = "CLEAR_PORT"; + internal const string Clone = "CLONE"; internal const string CodePage = "CODEPAGE"; internal const string Collection = "COLLECTION"; internal const string Column = "COLUMN"; diff --git a/SqlScriptDom/Parser/TSql/TSqlFabricDW.g b/SqlScriptDom/Parser/TSql/TSqlFabricDW.g index 588ff07..0923abc 100644 --- a/SqlScriptDom/Parser/TSql/TSqlFabricDW.g +++ b/SqlScriptDom/Parser/TSql/TSqlFabricDW.g @@ -13006,6 +13006,93 @@ functionParameterList[FunctionStatementBody vResult] )* ; +scalarFunctionParameter[ProcedureParameter vParent] +{ + DataTypeReference vDataType; + ScalarExpression vDefault; +} + : vDataType=scalarDataType + { + vParent.DataType = vDataType; + } + ( + EqualsSign + ( + vDefault=possibleNegativeConstantOrIdentifierWithDefault + { + vParent.Value = vDefault; + } + ) + )? + ( + tId2:Identifier + { + if (TryMatch(tId2, CodeGenerationSupporter.Output) || TryMatch(tId2, CodeGenerationSupporter.Out)) + { + ThrowParseErrorException("SQL46039", tId2, TSqlParserResource.SQL46039Message); + } + else + { + ThrowParseErrorException("SQL46026", tId2, TSqlParserResource.SQL46026Message, tId2.getText()); + } + } + )? + ; + +scalarFunctionAttributeNoExecuteAs returns [FunctionOption vResult = FragmentFactory.CreateFragment()] + : tOption:Identifier + { + if (TryMatch(tOption, CodeGenerationSupporter.SchemaBinding)) + { + vResult.OptionKind = FunctionOptionKind.SchemaBinding; + } + else + { + ThrowParseErrorException("SQL46026", tOption, TSqlParserResource.SQL46026Message, tOption.getText()); + } + UpdateTokenInfo(vResult, tOption); + } + | tReturns:Identifier Null On Null tInput:Identifier + { + Match(tReturns,CodeGenerationSupporter.Returns); + Match(tInput,CodeGenerationSupporter.Input); + vResult.OptionKind = FunctionOptionKind.ReturnsNullOnNullInput; + UpdateTokenInfo(vResult, tInput); + } + | tCalled:Identifier On Null tInput2:Identifier + { + Match(tCalled,CodeGenerationSupporter.Called); + Match(tInput2,CodeGenerationSupporter.Input); + vResult.OptionKind = FunctionOptionKind.CalledOnNullInput; + UpdateTokenInfo(vResult, tInput2); + } + ; + + +scalarFunctionAttribute returns [FunctionOption vResult] + : vResult=scalarFunctionAttributeNoExecuteAs + | vResult=functionExecuteAsOption + ; + +scalarFunctionAttributes [FunctionStatementBody vParent] +{ + FunctionOption vOption; + long encounteredOptions = 0; +} + : With vOption=scalarFunctionAttribute + { + CheckOptionDuplication(ref encounteredOptions, (int)vOption.OptionKind, vOption); + AddAndUpdateTokenInfo(vParent, vParent.Options, vOption); + } + ( + Comma vOption=scalarFunctionAttribute + { + CheckOptionDuplication(ref encounteredOptions, (int)vOption.OptionKind, vOption); + AddAndUpdateTokenInfo(vParent, vParent.Options, vOption); + } + )* + ; + functionParameter returns[ProcedureParameter vResult = FragmentFactory.CreateFragment()] { Identifier vIdentifier; @@ -13014,7 +13101,7 @@ functionParameter returns[ProcedureParameter vResult = FragmentFactory.CreateFra { vResult.VariableName = vIdentifier; } - scalarProcedureParameter[vResult, false, true] + scalarFunctionParameter[vResult] ; functionReturnTypeAndBody [FunctionStatementBody vParent, out bool vParseErrorOccurred] @@ -13034,7 +13121,7 @@ functionReturnTypeAndBody [FunctionStatementBody vParent, out bool vParseErrorOc vScalarResult.DataType = vDataType; vParent.ReturnType = vScalarResult; } - (functionAttributes[vParent])? (As)? + (scalarFunctionAttributes[vParent])? (As)? ( vCompoundStatement = beginEndBlockStatement { @@ -26504,6 +26591,8 @@ createTableStatement returns [CreateTableStatement vResult = this.FragmentFactor TableDefinition vTableDefinition; FederationScheme vFederationScheme; FileGroupOrPartitionScheme vFileGroupOrPartitionScheme; + SchemaObjectName vCloneSource; + ScalarExpression vCloneTime; } : tCreate:Create Table vSchemaObjectName=schemaObjectThreePartName { @@ -26534,6 +26623,19 @@ createTableStatement returns [CreateTableStatement vResult = this.FragmentFactor ) | ctasCreateTableStatement[vResult] + | + As tClone:Identifier Of vCloneSource=schemaObjectThreePartName + { + Match(tClone, CodeGenerationSupporter.Clone); + vResult.CloneSource = vCloneSource; + } + ( + tAt:Identifier vCloneTime=stringLiteral + { + Match(tAt, CodeGenerationSupporter.At); + vResult.ClonePointInTime = vCloneTime; + } + )? | As tFileTableOrGraphEdge:Identifier { @@ -26735,6 +26837,9 @@ createTableOption returns [TableOption vResult] | {NextTokenMatches(CodeGenerationSupporter.Distribution)}? vResult = tableDistributionOption + | + {NextTokenMatches(CodeGenerationSupporter.Cluster)}? + vResult = clusterByTableOption | vResult = tableIndexOption | @@ -26961,6 +27066,15 @@ tableRoundRobinDistributionPolicy returns [TableRoundRobinDistributionPolicy vRe } ; +clusterByTableOption returns [ClusterByTableOption vResult = this.FragmentFactory.CreateFragment()] + : tCluster:Identifier By + { + Match(tCluster, CodeGenerationSupporter.Cluster); + UpdateTokenInfo(vResult, tCluster); + } + identifierColumnList[vResult, vResult.Columns] + ; + tableIndexOption returns [TableIndexOption vResult = FragmentFactory.CreateFragment()] { TableIndexType vTableIndexType; @@ -27898,6 +28012,7 @@ alterTableStatement returns [AlterTableStatement vResult = null] {NextTokenMatches(CodeGenerationSupporter.FileTableNamespace, 2)}? vResult=alterTableFileTableNamespaceStatement | vResult=alterTableSetStatement + | vResult=alterTableAddClusterByStatement ) { // Update position later, because instantiation is lazy @@ -28040,6 +28155,21 @@ alterTableSetStatement returns [AlterTableSetStatement vResult = FragmentFactory } ; +alterTableAddClusterByStatement returns [AlterTableAddClusterByStatement vResult = FragmentFactory.CreateFragment()] +{ + ClusterByTableOption vClusterByOption; +} + : tAdd:Add LeftParenthesis vClusterByOption = clusterByTableOption + { + vResult.ClusterByOption = vClusterByOption; + UpdateTokenInfo(vResult, tAdd); + } + tRParen:RightParenthesis + { + UpdateTokenInfo(vResult, tRParen); + } + ; + tableOption returns [TableOption vResult = null] : {NextTokenMatches(CodeGenerationSupporter.LockEscalation)}? diff --git a/SqlScriptDom/ScriptDom/SqlServer/ScriptGenerator/SqlScriptGeneratorVisitor.AlterTableAddClusterByStatement.cs b/SqlScriptDom/ScriptDom/SqlServer/ScriptGenerator/SqlScriptGeneratorVisitor.AlterTableAddClusterByStatement.cs new file mode 100644 index 0000000..b335635 --- /dev/null +++ b/SqlScriptDom/ScriptDom/SqlServer/ScriptGenerator/SqlScriptGeneratorVisitor.AlterTableAddClusterByStatement.cs @@ -0,0 +1,33 @@ +//------------------------------------------------------------------------------ +// +// Copyright (c) Microsoft Corporation. All rights reserved. +// +//------------------------------------------------------------------------------ +using Microsoft.SqlServer.TransactSql.ScriptDom; + +namespace Microsoft.SqlServer.TransactSql.ScriptDom.ScriptGenerator +{ + partial class SqlScriptGeneratorVisitor + { + public override void ExplicitVisit(AlterTableAddClusterByStatement node) + { + AlignmentPoint start = new AlignmentPoint(); + MarkAndPushAlignmentPoint(start); + + GenerateAlterTableHead(node); + + NewLineAndIndent(); + + GenerateKeyword(TSqlTokenType.Add); + GenerateSpace(); + if (node.ClusterByOption != null) + { + GenerateSymbol(TSqlTokenType.LeftParenthesis); + GenerateFragmentIfNotNull(node.ClusterByOption); + GenerateSymbol(TSqlTokenType.RightParenthesis); + } + + PopAlignmentPoint(); + } + } +} diff --git a/SqlScriptDom/ScriptDom/SqlServer/ScriptGenerator/SqlScriptGeneratorVisitor.ClusterByTableOption.cs b/SqlScriptDom/ScriptDom/SqlServer/ScriptGenerator/SqlScriptGeneratorVisitor.ClusterByTableOption.cs new file mode 100644 index 0000000..059ec08 --- /dev/null +++ b/SqlScriptDom/ScriptDom/SqlServer/ScriptGenerator/SqlScriptGeneratorVisitor.ClusterByTableOption.cs @@ -0,0 +1,20 @@ +//------------------------------------------------------------------------------ +// +// Copyright (c) Microsoft Corporation. All rights reserved. +// +//------------------------------------------------------------------------------ +using Microsoft.SqlServer.TransactSql.ScriptDom; + +namespace Microsoft.SqlServer.TransactSql.ScriptDom.ScriptGenerator +{ + partial class SqlScriptGeneratorVisitor + { + public override void ExplicitVisit(ClusterByTableOption node) + { + GenerateIdentifier(CodeGenerationSupporter.Cluster); + GenerateSpaceAndKeyword(TSqlTokenType.By); + GenerateSpace(); + GenerateParenthesisedCommaSeparatedList(node.Columns); + } + } +} diff --git a/SqlScriptDom/ScriptDom/SqlServer/ScriptGenerator/SqlScriptGeneratorVisitor.CreateTableStatement.cs b/SqlScriptDom/ScriptDom/SqlServer/ScriptGenerator/SqlScriptGeneratorVisitor.CreateTableStatement.cs index 514b512..3f96d44 100644 --- a/SqlScriptDom/ScriptDom/SqlServer/ScriptGenerator/SqlScriptGeneratorVisitor.CreateTableStatement.cs +++ b/SqlScriptDom/ScriptDom/SqlServer/ScriptGenerator/SqlScriptGeneratorVisitor.CreateTableStatement.cs @@ -20,6 +20,20 @@ public override void ExplicitVisit(CreateTableStatement node) GenerateSpaceAndFragmentIfNotNull(node.SchemaObjectName); + if (node.CloneSource != null) + { + GenerateSpaceAndKeyword(TSqlTokenType.As); + GenerateSpaceAndIdentifier(CodeGenerationSupporter.Clone); + GenerateSpaceAndKeyword(TSqlTokenType.Of); + GenerateSpaceAndFragmentIfNotNull(node.CloneSource); + + if (node.ClonePointInTime != null) + { + GenerateSpaceAndIdentifier(CodeGenerationSupporter.At); + GenerateSpaceAndFragmentIfNotNull(node.ClonePointInTime); + } + } + if (node.Definition != null) { List columnsAndConstraintsAndIndexesAndPeriods = new List(); diff --git a/Test/SqlDom/BaselinesFabricDW/CloneTableTestsFabricDW.sql b/Test/SqlDom/BaselinesFabricDW/CloneTableTestsFabricDW.sql new file mode 100644 index 0000000..32c3106 --- /dev/null +++ b/Test/SqlDom/BaselinesFabricDW/CloneTableTestsFabricDW.sql @@ -0,0 +1,7 @@ +CREATE TABLE dbo.Employee AS CLONE OF dbo.EmployeeUSA; + +CREATE TABLE dbo.Employee AS CLONE OF dbo1.EmployeeUSA; + +CREATE TABLE dbo.Employee AS CLONE OF dbo.EmployeeUSA AT '2023-05-23T14:24:10.325'; + +CREATE TABLE dbo.Employee AS CLONE OF dbo1.EmployeeUSA AT '2023-05-23T14:24:10'; \ No newline at end of file diff --git a/Test/SqlDom/BaselinesFabricDW/CreateAlterTableClusterByTestsFabricDW.sql b/Test/SqlDom/BaselinesFabricDW/CreateAlterTableClusterByTestsFabricDW.sql new file mode 100644 index 0000000..05f8e02 --- /dev/null +++ b/Test/SqlDom/BaselinesFabricDW/CreateAlterTableClusterByTestsFabricDW.sql @@ -0,0 +1,38 @@ +CREATE TABLE Customers ( + CustomerID INT , + Name NVARCHAR (100) +) +WITH (CLUSTER BY (CustomerID)); + + +GO +CREATE TABLE sales.Orders ( + OrderID INT , + CustomerID INT , + OrderDate DATE +) +WITH (CLUSTER BY (CustomerID, OrderDate), DISTRIBUTION = HASH(CustomerID)); + + +GO +CREATE TABLE Inventory ( + ProductID INT , + ProductName VARCHAR (255), + InStock BIT +) +WITH (CLUSTER BY (ProductID)); + + +GO +ALTER TABLE Customers + ADD (CLUSTER BY (CustomerID)); + + +GO +ALTER TABLE sales.Orders + ADD (CLUSTER BY (CustomerID, OrderDate)); + + +GO +ALTER TABLE Inventory + ADD (CLUSTER BY (ProductID)); \ No newline at end of file diff --git a/Test/SqlDom/BaselinesFabricDW/CreateExternalTableStatementTestsFabricDW.sql b/Test/SqlDom/BaselinesFabricDW/CreateExternalTableStatementTestsFabricDW.sql new file mode 100644 index 0000000..e2459a0 --- /dev/null +++ b/Test/SqlDom/BaselinesFabricDW/CreateExternalTableStatementTestsFabricDW.sql @@ -0,0 +1,51 @@ +CREATE EXTERNAL TABLE t1 ( + c1 INT, + c2 CHAR (16) COLLATE Latin1_General_BIN2 NOT NULL, + c3 DATE, + c4 DECIMAL (5, 2) NULL, + c5 VARCHAR (50) COLLATE Latin1_General_BIN2 NULL +) + WITH ( + DATA_SOURCE = eds1, + LOCATION = '/test/test.txt', + FILE_FORMAT = eff1, + TABLE_OPTIONS = N'{"READ_OPTIONS": +["ALLOW_INCONSISTENT_READS"] +}' + ); + +CREATE EXTERNAL TABLE t2 ( + c1 INT, + c2 CHAR (16) COLLATE Latin1_General_BIN2 NOT NULL, + c3 DATE, + c4 DECIMAL (5, 2) NULL, + c5 VARCHAR (50) COLLATE Latin1_General_BIN2 NULL +) + WITH ( + DATA_SOURCE = eds1, + LOCATION = '/test/test.txt', + FILE_FORMAT = eff1, + TABLE_OPTIONS = N'randomstring��?Ƕ�' + ); + +CREATE EXTERNAL TABLE finance.Transactions2024 ( + TransactionID BIGINT, + AccountNumber VARCHAR (20), + TransactionDate DATE, + Amount FLOAT +) + WITH ( + LOCATION = 'https://storage.blob.core.windows.net/data/transactions2024/', + FILE_FORMAT = AvroFormat + ); + +CREATE EXTERNAL TABLE analytics.WebEvents ( + EventID INT, + UserID INT, + EventTime DATETIME, + EventType NVARCHAR (50) +) + WITH ( + LOCATION = '/logs/web/events/', + FILE_FORMAT = JsonFormat + ); \ No newline at end of file diff --git a/Test/SqlDom/BaselinesFabricDW/CreateProcedureCloneTableTestsFabricDW.sql b/Test/SqlDom/BaselinesFabricDW/CreateProcedureCloneTableTestsFabricDW.sql new file mode 100644 index 0000000..a6cf794 --- /dev/null +++ b/Test/SqlDom/BaselinesFabricDW/CreateProcedureCloneTableTestsFabricDW.sql @@ -0,0 +1,21 @@ +CREATE PROCEDURE CloneEmployeeLocal +AS +CREATE TABLE dbo.Employee AS CLONE OF dbo.EmployeeUSA; + + +GO +CREATE PROCEDURE CloneEmployeeFromDbo1 +AS +CREATE TABLE dbo.Employee AS CLONE OF dbo1.EmployeeUSA; + + +GO +CREATE PROCEDURE CloneEmployeeAtTimestamp +AS +CREATE TABLE dbo.Employee AS CLONE OF dbo.EmployeeUSA AT '2023-05-23T14:24:10.325'; + + +GO +CREATE PROCEDURE CloneEmployeeFromDbo1AtTimestamp +AS +CREATE TABLE dbo.Employee AS CLONE OF dbo1.EmployeeUSA AT '2023-05-23T14:24:10'; \ No newline at end of file diff --git a/Test/SqlDom/BaselinesFabricDW/ScalarFunctionIntTestsFabricDW.sql b/Test/SqlDom/BaselinesFabricDW/ScalarFunctionIntTestsFabricDW.sql deleted file mode 100644 index d348a7e..0000000 --- a/Test/SqlDom/BaselinesFabricDW/ScalarFunctionIntTestsFabricDW.sql +++ /dev/null @@ -1,11 +0,0 @@ -CREATE FUNCTION dbo.ConvertInput -(@MyValueIn INT) -RETURNS DECIMAL (10, 2) -AS -BEGIN - DECLARE @MyValueOut AS INT; - SET @MyValueOut = CAST (@MyValueIn AS DECIMAL (10, 2)); - RETURN (@MyValueOut); -END -GO -SELECT dbo.ConvertInput(15) AS 'ConvertedValue'; \ No newline at end of file diff --git a/Test/SqlDom/BaselinesFabricDW/ScalarFunctionTestsFabricDW.sql b/Test/SqlDom/BaselinesFabricDW/ScalarFunctionTestsFabricDW.sql new file mode 100644 index 0000000..fed9aef --- /dev/null +++ b/Test/SqlDom/BaselinesFabricDW/ScalarFunctionTestsFabricDW.sql @@ -0,0 +1,53 @@ +CREATE OR ALTER FUNCTION dbo.GetFullName +(@firstName NVARCHAR (50)='John', @lastName NVARCHAR (50)) +RETURNS NVARCHAR (101) +WITH SCHEMABINDING, RETURNS NULL ON NULL INPUT +AS +BEGIN + RETURN @firstName + ' ' + @lastName; +END + + +GO +CREATE OR ALTER FUNCTION dbo.CalculateTotal +(@price DECIMAL (10, 2), @quantity INT=1) +RETURNS DECIMAL (10, 2) +WITH EXECUTE AS SELF, CALLED ON NULL INPUT +AS +BEGIN + RETURN @price * @quantity; +END + + +GO +CREATE OR ALTER FUNCTION sales.ComputeDiscount +(@amount FLOAT, @discount FLOAT) +RETURNS FLOAT +WITH RETURNS NULL ON NULL INPUT +AS +BEGIN + RETURN @amount - (@amount * @discount / 100); +END + + +GO +CREATE FUNCTION dbo.GetFullName +(@FirstName VARCHAR (50), @LastName VARCHAR (50)) +RETURNS VARCHAR (101) +AS +BEGIN + RETURN @FirstName + ' ' + @LastName; +END + +GO +CREATE FUNCTION dbo.ConvertInput +(@MyValueIn INT) +RETURNS DECIMAL (10, 2) +AS +BEGIN + DECLARE @MyValueOut AS INT; + SET @MyValueOut = CAST (@MyValueIn AS DECIMAL (10, 2)); + RETURN (@MyValueOut); +END +GO +SELECT dbo.ConvertInput(15) AS 'ConvertedValue'; \ No newline at end of file diff --git a/Test/SqlDom/BaselinesFabricDW/ScalarFunctionVarCharTestsFabricDW.sql b/Test/SqlDom/BaselinesFabricDW/ScalarFunctionVarCharTestsFabricDW.sql deleted file mode 100644 index 6c492a3..0000000 --- a/Test/SqlDom/BaselinesFabricDW/ScalarFunctionVarCharTestsFabricDW.sql +++ /dev/null @@ -1,7 +0,0 @@ -CREATE FUNCTION dbo.GetFullName -(@FirstName VARCHAR (50), @LastName VARCHAR (50)) -RETURNS VARCHAR (101) -AS -BEGIN - RETURN @FirstName + ' ' + @LastName; -END \ No newline at end of file diff --git a/Test/SqlDom/OnlyFabricDWSyntaxTests.cs b/Test/SqlDom/OnlyFabricDWSyntaxTests.cs index 7ae7fc2..58537c4 100644 --- a/Test/SqlDom/OnlyFabricDWSyntaxTests.cs +++ b/Test/SqlDom/OnlyFabricDWSyntaxTests.cs @@ -9,8 +9,11 @@ public partial class SqlDomTests // Note: These filenames are case sensitive, make sure they match the checked-in file exactly private static readonly ParserTest[] OnlyFabricDWTestInfos = { - new ParserTestFabricDW("ScalarFunctionIntTestsFabricDW.sql", nErrors80: 0, nErrors90: 0, nErrors100: 0, nErrors110: 0, nErrors120: 0, nErrors130: 0, nErrors140: 0, nErrors150: 0, nErrors160: 0, nErrors170: 0), - new ParserTestFabricDW("ScalarFunctionVarCharTestsFabricDW.sql", nErrors80: 0, nErrors90: 0, nErrors100: 0, nErrors110: 0, nErrors120: 0, nErrors130: 0, nErrors140: 0, nErrors150: 0, nErrors160: 0, nErrors170: 0) + new ParserTestFabricDW("CloneTableTestsFabricDW.sql", nErrors80: 4, nErrors90: 4, nErrors100: 4, nErrors110: 4, nErrors120: 4, nErrors130: 4, nErrors140: 4, nErrors150: 4, nErrors160: 4, nErrors170: 4), + new ParserTestFabricDW("CreateProcedureCloneTableTestsFabricDW.sql", nErrors80: 4, nErrors90: 4, nErrors100: 4, nErrors110: 4, nErrors120: 4, nErrors130: 4, nErrors140: 4, nErrors150: 4, nErrors160: 4, nErrors170: 4), + new ParserTestFabricDW("ScalarFunctionTestsFabricDW.sql", nErrors80: 3, nErrors90: 2, nErrors100: 2, nErrors110: 2, nErrors120: 2, nErrors130: 0, nErrors140: 0, nErrors150: 0, nErrors160: 0, nErrors170: 0), + new ParserTestFabricDW("CreateAlterTableClusterByTestsFabricDW.sql", nErrors80: 6, nErrors90: 6, nErrors100: 6, nErrors110: 6, nErrors120: 6, nErrors130: 6, nErrors140: 6, nErrors150: 6, nErrors160: 6, nErrors170: 6), + new ParserTestFabricDW("CreateExternalTableStatementTestsFabricDW.sql", nErrors80: 2, nErrors90: 2, nErrors100: 2, nErrors110: 2, nErrors120: 2, nErrors130: 2, nErrors140: 2, nErrors150: 2, nErrors160: 0, nErrors170: 0), }; [TestMethod] @@ -25,13 +28,201 @@ public void TSqlFabricDWSyntaxParserTest() ParserTest.ParseAndVerify(parser, scriptGen, ti._scriptFilename, ti._resultFabricDW); } - parser = new TSqlFabricDWParser(true, SqlEngineType.All); - scriptGen = ParserTestUtils.CreateScriptGen(SqlVersion.SqlFabricDW); scriptGen.Options.SqlEngineType = SqlEngineType.All; foreach (ParserTest ti in OnlyFabricDWTestInfos) { ParserTest.ParseAndVerify(parser, scriptGen, ti._scriptFilename, ti._resultFabricDW); } } + + [TestMethod] + [Priority(0)] + [SqlStudioTestCategory(Category.UnitTest)] + public void TSqlFabricDWSyntaxIn80ParserTest() + { + TSql80Parser parser = new TSql80Parser(true); + SqlScriptGenerator scriptGen = ParserTestUtils.CreateScriptGen(SqlVersion.Sql80); + foreach (ParserTest ti in OnlyFabricDWTestInfos) + { + ParserTest.ParseAndVerify(parser, scriptGen, ti._scriptFilename, ti._result80); + } + + scriptGen.Options.SqlEngineType = SqlEngineType.All; + foreach (ParserTest ti in OnlyFabricDWTestInfos) + { + ParserTest.ParseAndVerify(parser, scriptGen, ti._scriptFilename, ti._result80); + } + } + + [TestMethod] + [Priority(0)] + [SqlStudioTestCategory(Category.UnitTest)] + public void TSqlFabricDWSyntaxIn90ParserTest() + { + TSql90Parser parser = new TSql90Parser(true); + SqlScriptGenerator scriptGen = ParserTestUtils.CreateScriptGen(SqlVersion.Sql90); + foreach (ParserTest ti in OnlyFabricDWTestInfos) + { + ParserTest.ParseAndVerify(parser, scriptGen, ti._scriptFilename, ti._result90); + } + + scriptGen.Options.SqlEngineType = SqlEngineType.All; + foreach (ParserTest ti in OnlyFabricDWTestInfos) + { + ParserTest.ParseAndVerify(parser, scriptGen, ti._scriptFilename, ti._result90); + } + } + + [TestMethod] + [Priority(0)] + [SqlStudioTestCategory(Category.UnitTest)] + public void TSqlFabricDWSyntaxIn100ParserTest() + { + TSql100Parser parser = new TSql100Parser(true); + SqlScriptGenerator scriptGen = ParserTestUtils.CreateScriptGen(SqlVersion.Sql100); + foreach (ParserTest ti in OnlyFabricDWTestInfos) + { + ParserTest.ParseAndVerify(parser, scriptGen, ti._scriptFilename, ti._result100); + } + + scriptGen.Options.SqlEngineType = SqlEngineType.All; + foreach (ParserTest ti in OnlyFabricDWTestInfos) + { + ParserTest.ParseAndVerify(parser, scriptGen, ti._scriptFilename, ti._result100); + } + } + + [TestMethod] + [Priority(0)] + [SqlStudioTestCategory(Category.UnitTest)] + public void TSqlFabricDWSyntaxIn110ParserTest() + { + TSql110Parser parser = new TSql110Parser(true); + SqlScriptGenerator scriptGen = ParserTestUtils.CreateScriptGen(SqlVersion.Sql110); + foreach (ParserTest ti in OnlyFabricDWTestInfos) + { + ParserTest.ParseAndVerify(parser, scriptGen, ti._scriptFilename, ti._result110); + } + + scriptGen.Options.SqlEngineType = SqlEngineType.All; + foreach (ParserTest ti in OnlyFabricDWTestInfos) + { + ParserTest.ParseAndVerify(parser, scriptGen, ti._scriptFilename, ti._result110); + } + } + + [TestMethod] + [Priority(0)] + [SqlStudioTestCategory(Category.UnitTest)] + public void TSqlFabricDWSyntaxIn120ParserTest() + { + TSql120Parser parser = new TSql120Parser(true); + SqlScriptGenerator scriptGen = ParserTestUtils.CreateScriptGen(SqlVersion.Sql120); + foreach (ParserTest ti in OnlyFabricDWTestInfos) + { + ParserTest.ParseAndVerify(parser, scriptGen, ti._scriptFilename, ti._result120); + } + + scriptGen.Options.SqlEngineType = SqlEngineType.All; + foreach (ParserTest ti in OnlyFabricDWTestInfos) + { + ParserTest.ParseAndVerify(parser, scriptGen, ti._scriptFilename, ti._result120); + } + } + + [TestMethod] + [Priority(0)] + [SqlStudioTestCategory(Category.UnitTest)] + public void TSqlFabricDWSyntaxIn130ParserTest() + { + TSql130Parser parser = new TSql130Parser(true); + SqlScriptGenerator scriptGen = ParserTestUtils.CreateScriptGen(SqlVersion.Sql130); + foreach (ParserTest ti in OnlyFabricDWTestInfos) + { + ParserTest.ParseAndVerify(parser, scriptGen, ti._scriptFilename, ti._result130); + } + + scriptGen.Options.SqlEngineType = SqlEngineType.All; + foreach (ParserTest ti in OnlyFabricDWTestInfos) + { + ParserTest.ParseAndVerify(parser, scriptGen, ti._scriptFilename, ti._result130); + } + } + + [TestMethod] + [Priority(0)] + [SqlStudioTestCategory(Category.UnitTest)] + public void TSqlFabricDWSyntaxIn140ParserTest() + { + TSql140Parser parser = new TSql140Parser(true); + SqlScriptGenerator scriptGen = ParserTestUtils.CreateScriptGen(SqlVersion.Sql140); + foreach (ParserTest ti in OnlyFabricDWTestInfos) + { + ParserTest.ParseAndVerify(parser, scriptGen, ti._scriptFilename, ti._result140); + } + + scriptGen.Options.SqlEngineType = SqlEngineType.All; + foreach (ParserTest ti in OnlyFabricDWTestInfos) + { + ParserTest.ParseAndVerify(parser, scriptGen, ti._scriptFilename, ti._result140); + } + } + + [TestMethod] + [Priority(0)] + [SqlStudioTestCategory(Category.UnitTest)] + public void TSqlFabricDWSyntaxIn150ParserTest() + { + TSql150Parser parser = new TSql150Parser(true); + SqlScriptGenerator scriptGen = ParserTestUtils.CreateScriptGen(SqlVersion.Sql150); + foreach (ParserTest ti in OnlyFabricDWTestInfos) + { + ParserTest.ParseAndVerify(parser, scriptGen, ti._scriptFilename, ti._result150); + } + + scriptGen.Options.SqlEngineType = SqlEngineType.All; + foreach (ParserTest ti in OnlyFabricDWTestInfos) + { + ParserTest.ParseAndVerify(parser, scriptGen, ti._scriptFilename, ti._result150); + } + } + + [TestMethod] + [Priority(0)] + [SqlStudioTestCategory(Category.UnitTest)] + public void TSqlFabricDWSyntaxIn160ParserTest() + { + TSql160Parser parser = new TSql160Parser(true); + SqlScriptGenerator scriptGen = ParserTestUtils.CreateScriptGen(SqlVersion.Sql160); + foreach (ParserTest ti in OnlyFabricDWTestInfos) + { + ParserTest.ParseAndVerify(parser, scriptGen, ti._scriptFilename, ti._result160); + } + + scriptGen.Options.SqlEngineType = SqlEngineType.All; + foreach (ParserTest ti in OnlyFabricDWTestInfos) + { + ParserTest.ParseAndVerify(parser, scriptGen, ti._scriptFilename, ti._result160); + } + } + + [TestMethod] + [Priority(0)] + [SqlStudioTestCategory(Category.UnitTest)] + public void TSqlFabricDWSyntaxIn170ParserTest() + { + TSql170Parser parser = new TSql170Parser(true); + SqlScriptGenerator scriptGen = ParserTestUtils.CreateScriptGen(SqlVersion.Sql170); + foreach (ParserTest ti in OnlyFabricDWTestInfos) + { + ParserTest.ParseAndVerify(parser, scriptGen, ti._scriptFilename, ti._result170); + } + + scriptGen.Options.SqlEngineType = SqlEngineType.All; + foreach (ParserTest ti in OnlyFabricDWTestInfos) + { + ParserTest.ParseAndVerify(parser, scriptGen, ti._scriptFilename, ti._result170); + } + } } } \ No newline at end of file diff --git a/Test/SqlDom/ParserErrorsTests.cs b/Test/SqlDom/ParserErrorsTests.cs index ac99d5e..7474efd 100644 --- a/Test/SqlDom/ParserErrorsTests.cs +++ b/Test/SqlDom/ParserErrorsTests.cs @@ -19,8 +19,8 @@ public partial class SqlDomTests /// as user id/name start/end columns /// [TestMethod] - [Priority(0)] - [SqlStudioTestCategory(Category.UnitTest)] + [Priority(0)] + [SqlStudioTestCategory(Category.UnitTest)] public void CreateTableGeneratedAlwaysNegativeTest() { // Generated always as UserId start column must be unique @@ -255,11 +255,11 @@ [Data1] NVARCHAR (32) HIDDEN MASKED WITH (FUNCTION = 'default()') DEFAULT 'a' N [Data2] NVARCHAR (32) MASKED WITH (FUNCTION = 'default()') DEFAULT 'b' NOT NULL, CONSTRAINT [constr1] PRIMARY KEY ([PK]));"; ParserTestUtils.ErrorTest140(hiddenMaskedSyntax, - new ParserErrorInfo(hiddenMaskedSyntax.IndexOf("HIDDEN MASKED")+7, "SQL46010", "MASKED")); + new ParserErrorInfo(hiddenMaskedSyntax.IndexOf("HIDDEN MASKED") + 7, "SQL46010", "MASKED")); } - /// + /// /// Negative tests for BULK INSERT command /// [TestMethod] @@ -282,8 +282,8 @@ public void BulkInsertNegativeTestCases() /// as user id/name start/end columns /// [TestMethod] - [Priority(0)] - [SqlStudioTestCategory(Category.UnitTest)] + [Priority(0)] + [SqlStudioTestCategory(Category.UnitTest)] public void AlterTableAddGeneratedAlwaysNegativeTest() { // Generated always as UserId start column must be unique @@ -311,8 +311,8 @@ public void AlterTableAddGeneratedAlwaysNegativeTest() /// Negative tests for alter column with generated always /// [TestMethod] - [Priority(0)] - [SqlStudioTestCategory(Category.UnitTest)] + [Priority(0)] + [SqlStudioTestCategory(Category.UnitTest)] public void AlterColumnAddGeneratedAlwaysNegativeTest() { ParserTestUtils.ErrorTest130("ALTER TABLE T ALTER COLUMN C GENERATED ALWAYS AS SUSER_SID START", @@ -348,8 +348,8 @@ public void AlterColumnAddGeneratedAlwaysNegativeTest() /// for temporal generated always columns /// [TestMethod] - [Priority(0)] - [SqlStudioTestCategory(Category.UnitTest)] + [Priority(0)] + [SqlStudioTestCategory(Category.UnitTest)] public void AddDropHiddenNegativeTests() { ParserTestUtils.ErrorTest130("ALTER TABLE T1 ALTER COLUMN C1 ADD DROP HIDDEN", @@ -376,8 +376,8 @@ public void AddDropHiddenNegativeTests() /// for ALTER TABLE /// [TestMethod] - [Priority(0)] - [SqlStudioTestCategory(Category.UnitTest)] + [Priority(0)] + [SqlStudioTestCategory(Category.UnitTest)] public void AddSplitMergeNegativeTests() { ParserTestUtils.ErrorTest130("ALTER TABLE T SPLI RANGE ('2004-01-01')", @@ -400,8 +400,8 @@ public void AddSplitMergeNegativeTests() /// Negative tests for OPENJSON syntax. /// [TestMethod] - [Priority(0)] - [SqlStudioTestCategory(Category.UnitTest)] + [Priority(0)] + [SqlStudioTestCategory(Category.UnitTest)] public void OpenJsonNegativeTest() { ParserTestUtils.ErrorTest130("select * from openjson()", @@ -507,8 +507,8 @@ public void JsonArraySyntaxNegativeTest() /// Negative tests for Data Masking Alter Column syntax. /// [TestMethod] - [Priority(0)] - [SqlStudioTestCategory(Category.UnitTest)] + [Priority(0)] + [SqlStudioTestCategory(Category.UnitTest)] public void DataMaskingAlterColumnSyntaxNegativeTest() { // Add data masking: missing WITH keyword @@ -601,8 +601,8 @@ public void DataMaskingAlterColumnSyntaxNegativeTest() /// Negative tests for Data Masking Column Definition syntax. /// [TestMethod] - [Priority(0)] - [SqlStudioTestCategory(Category.UnitTest)] + [Priority(0)] + [SqlStudioTestCategory(Category.UnitTest)] public void DataMaskingColumnDefinitionSyntaxNegativeTest() { // Missing WITH keyword @@ -655,8 +655,8 @@ public void DataMaskingColumnDefinitionSyntaxNegativeTest() /// Only ON and OFF options are allowed for ALTER INDEX REORGANIZE's COMPRESS_ALL_ROW_GROUPS option. /// [TestMethod] - [Priority(0)] - [SqlStudioTestCategory(Category.UnitTest)] + [Priority(0)] + [SqlStudioTestCategory(Category.UnitTest)] public void AlterIndexReorganizeCompressAllRowGroupsOptionNegativeTest() { ParserTestUtils.ErrorTest130("ALTER INDEX cci ON cciTable REORGANIZE WITH (COMPRESS_ALL_ROW_GROUPS = ONN);", @@ -690,8 +690,8 @@ public void AlterIndexReorganizeCompressAllRowGroupsOptionNegativeTest() /// Only columnstore indexes should accept compression delay on inline index create. /// [TestMethod] - [Priority(0)] - [SqlStudioTestCategory(Category.UnitTest)] + [Priority(0)] + [SqlStudioTestCategory(Category.UnitTest)] public void CreateTableWithInlineIndexWithCompressionDelayNegativeTests() { ParserTestUtils.ErrorTest130("CREATE TABLE t (col0 INT, INDEX ind (col0) WITH (COMPRESSION_DELAY = 2));", @@ -704,8 +704,8 @@ public void CreateTableWithInlineIndexWithCompressionDelayNegativeTests() /// Only columnstore indexes should accept compression delay on index create. /// [TestMethod] - [Priority(0)] - [SqlStudioTestCategory(Category.UnitTest)] + [Priority(0)] + [SqlStudioTestCategory(Category.UnitTest)] public void CreateIndexWithCompressionDelayNegativeTests() { ParserTestUtils.ErrorTest130("CREATE INDEX ind ON table1 (col0) WITH (COMPRESSION_DELAY = 2));", @@ -716,8 +716,8 @@ public void CreateIndexWithCompressionDelayNegativeTests() /// ALTER INDEX [indexName] ON [tableName] SET (COMPRESSION_DELAY = value MINUTES) accepts AUTO and numbers in [0, maxint]. /// [TestMethod] - [Priority(0)] - [SqlStudioTestCategory(Category.UnitTest)] + [Priority(0)] + [SqlStudioTestCategory(Category.UnitTest)] public void AlterIndexSetCompressionDelayOptionNegativeTest() { ParserTestUtils.ErrorTest130("ALTER INDEX cci ON cciTable SET(COMPRESSION_DELAY = ON);", @@ -754,72 +754,72 @@ public void AlterIndexSetCompressionDelayOptionNegativeTest() } - /// - /// Within a create statement, SUPPRESS_MESSAGES can only be set when IGNORE_DUP_KEY is ON, and it must be a suboption of IGNORE_DUP_KEY. - /// + /// + /// Within a create statement, SUPPRESS_MESSAGES can only be set when IGNORE_DUP_KEY is ON, and it must be a suboption of IGNORE_DUP_KEY. + /// [TestMethod] - [Priority(0)] - [SqlStudioTestCategory(Category.UnitTest)] - public void CreateTableWithInlineIndexWithSuppressMessagesNegativeTests() - { - ParserTestUtils.ErrorTest140("CREATE UNIQUE NONCLUSTERED INDEX nci ON table1(col1) WITH (SUPPRESS_MESSAGES = ON);", - new ParserErrorInfo(59, "SQL46010", "SUPPRESS_MESSAGES")); + [Priority(0)] + [SqlStudioTestCategory(Category.UnitTest)] + public void CreateTableWithInlineIndexWithSuppressMessagesNegativeTests() + { + ParserTestUtils.ErrorTest140("CREATE UNIQUE NONCLUSTERED INDEX nci ON table1(col1) WITH (SUPPRESS_MESSAGES = ON);", + new ParserErrorInfo(59, "SQL46010", "SUPPRESS_MESSAGES")); - ParserTestUtils.ErrorTest140("CREATE UNIQUE NONCLUSTERED INDEX nci ON table1(col1) WITH (SUPPRESS_MESSAGES = OFF);", - new ParserErrorInfo(59, "SQL46010", "SUPPRESS_MESSAGES")); + ParserTestUtils.ErrorTest140("CREATE UNIQUE NONCLUSTERED INDEX nci ON table1(col1) WITH (SUPPRESS_MESSAGES = OFF);", + new ParserErrorInfo(59, "SQL46010", "SUPPRESS_MESSAGES")); - ParserTestUtils.ErrorTest140("CREATE UNIQUE NONCLUSTERED INDEX nci ON table1(col1) WITH (IGNORE_DUP_KEY = OFF (SUPPRESS_MESSAGES = ON));", - new ParserErrorInfo(80, "SQL46010", "(")); + ParserTestUtils.ErrorTest140("CREATE UNIQUE NONCLUSTERED INDEX nci ON table1(col1) WITH (IGNORE_DUP_KEY = OFF (SUPPRESS_MESSAGES = ON));", + new ParserErrorInfo(80, "SQL46010", "(")); - ParserTestUtils.ErrorTest140("CREATE UNIQUE NONCLUSTERED INDEX nci ON table1(col1) WITH (IGNORE_DUP_KEY = OFF (SUPPRESS_MESSAGES = OFF));", - new ParserErrorInfo(80, "SQL46010", "(")); + ParserTestUtils.ErrorTest140("CREATE UNIQUE NONCLUSTERED INDEX nci ON table1(col1) WITH (IGNORE_DUP_KEY = OFF (SUPPRESS_MESSAGES = OFF));", + new ParserErrorInfo(80, "SQL46010", "(")); - ParserTestUtils.ErrorTest140("CREATE UNIQUE NONCLUSTERED INDEX nci ON table1(col1) WITH (IGNORE_DUP_KEY = ON, SUPPRESS_MESSAGES = ON));", - new ParserErrorInfo(80, "SQL46010", "SUPPRESS_MESSAGES")); + ParserTestUtils.ErrorTest140("CREATE UNIQUE NONCLUSTERED INDEX nci ON table1(col1) WITH (IGNORE_DUP_KEY = ON, SUPPRESS_MESSAGES = ON));", + new ParserErrorInfo(80, "SQL46010", "SUPPRESS_MESSAGES")); - ParserTestUtils.ErrorTest140("CREATE UNIQUE NONCLUSTERED INDEX nci ON table1(col1) WITH (IGNORE_DUP_KEY = ON, SUPPRESS_MESSAGES = OFF));", - new ParserErrorInfo(80, "SQL46010", "SUPPRESS_MESSAGES")); + ParserTestUtils.ErrorTest140("CREATE UNIQUE NONCLUSTERED INDEX nci ON table1(col1) WITH (IGNORE_DUP_KEY = ON, SUPPRESS_MESSAGES = OFF));", + new ParserErrorInfo(80, "SQL46010", "SUPPRESS_MESSAGES")); - } + } - /// - /// Within an ALTER statement, SUPPRESS_MESSAGES is a suboption of IGNORE_DUP_KEY only when IGNORE_DUP_KEY is ON. - /// + /// + /// Within an ALTER statement, SUPPRESS_MESSAGES is a suboption of IGNORE_DUP_KEY only when IGNORE_DUP_KEY is ON. + /// [TestMethod] - [Priority(0)] - [SqlStudioTestCategory(Category.UnitTest)] - public void AlterIndexSetSuppressMessagesOptionNegativeTest() - { - ParserTestUtils.ErrorTest140("ALTER INDEX ci ON ciTable SET (SUPPRESS_MESSAGES = ON);", - new ParserErrorInfo(31, "SQL46010", "SUPPRESS_MESSAGES")); + [Priority(0)] + [SqlStudioTestCategory(Category.UnitTest)] + public void AlterIndexSetSuppressMessagesOptionNegativeTest() + { + ParserTestUtils.ErrorTest140("ALTER INDEX ci ON ciTable SET (SUPPRESS_MESSAGES = ON);", + new ParserErrorInfo(31, "SQL46010", "SUPPRESS_MESSAGES")); - ParserTestUtils.ErrorTest140("ALTER INDEX ci ON ciTable SET (SUPPRESS_MESSAGES = OFF);", - new ParserErrorInfo(31, "SQL46010", "SUPPRESS_MESSAGES")); + ParserTestUtils.ErrorTest140("ALTER INDEX ci ON ciTable SET (SUPPRESS_MESSAGES = OFF);", + new ParserErrorInfo(31, "SQL46010", "SUPPRESS_MESSAGES")); - ParserTestUtils.ErrorTest140("ALTER INDEX ci ON ciTable SET (IGNORE_DUP_KEY = OFF (SUPPRESS_MESSAGES = ON));", - new ParserErrorInfo(52, "SQL46010", "(")); + ParserTestUtils.ErrorTest140("ALTER INDEX ci ON ciTable SET (IGNORE_DUP_KEY = OFF (SUPPRESS_MESSAGES = ON));", + new ParserErrorInfo(52, "SQL46010", "(")); - ParserTestUtils.ErrorTest140("ALTER INDEX ci ON ciTable SET (IGNORE_DUP_KEY = OFF (SUPPRESS_MESSAGES = OFF));", - new ParserErrorInfo(52, "SQL46010", "(")); + ParserTestUtils.ErrorTest140("ALTER INDEX ci ON ciTable SET (IGNORE_DUP_KEY = OFF (SUPPRESS_MESSAGES = OFF));", + new ParserErrorInfo(52, "SQL46010", "(")); - ParserTestUtils.ErrorTest140("ALTER INDEX ci ON ciTable SET (IGNORE_DUP_KEY = ON, SUPPRESS_MESSAGES = ON);", - new ParserErrorInfo(52, "SQL46010", "SUPPRESS_MESSAGES")); + ParserTestUtils.ErrorTest140("ALTER INDEX ci ON ciTable SET (IGNORE_DUP_KEY = ON, SUPPRESS_MESSAGES = ON);", + new ParserErrorInfo(52, "SQL46010", "SUPPRESS_MESSAGES")); - ParserTestUtils.ErrorTest140("ALTER INDEX ci ON ciTable SET (IGNORE_DUP_KEY = ON, SUPPRESS_MESSAGES = OFF);", - new ParserErrorInfo(52, "SQL46010", "SUPPRESS_MESSAGES")); + ParserTestUtils.ErrorTest140("ALTER INDEX ci ON ciTable SET (IGNORE_DUP_KEY = ON, SUPPRESS_MESSAGES = OFF);", + new ParserErrorInfo(52, "SQL46010", "SUPPRESS_MESSAGES")); - // Check that parsers below 140 don't recognize SUPPRESS_MESSAGES as valid. - // - ParserTestUtils.ErrorTest130("ALTER INDEX ci ON ciTable SET (IGNORE_DUP_KEY = ON (SUPPRESS_MESSAGES = ON));", - new ParserErrorInfo(51, "SQL46010", "(")); - } + // Check that parsers below 140 don't recognize SUPPRESS_MESSAGES as valid. + // + ParserTestUtils.ErrorTest130("ALTER INDEX ci ON ciTable SET (IGNORE_DUP_KEY = ON (SUPPRESS_MESSAGES = ON));", + new ParserErrorInfo(51, "SQL46010", "(")); + } /// /// Column level and table level filtered indexes on hekaton tables are not allowed. /// [TestMethod] - [Priority(0)] - [SqlStudioTestCategory(Category.UnitTest)] + [Priority(0)] + [SqlStudioTestCategory(Category.UnitTest)] public void HekatonTableInlineFilteredIndex() { ParserTestUtils.ErrorTest130("CREATE TABLE T1 (C1 INT NOT NULL PRIMARY KEY NONCLUSTERED, C2 INT NOT NULL INDEX idx NONCLUSTERED WHERE C2 > 10) WITH (MEMORY_OPTIMIZED=on);", @@ -833,8 +833,8 @@ public void HekatonTableInlineFilteredIndex() /// Nonclustered columnstore indexes are not allowed on hekaton tables. /// [TestMethod] - [Priority(0)] - [SqlStudioTestCategory(Category.UnitTest)] + [Priority(0)] + [SqlStudioTestCategory(Category.UnitTest)] public void HekatonTableNonClusteredColumnStoreIndex() { ParserTestUtils.ErrorTest130("CREATE TABLE T1 (C1 INT NOT NULL PRIMARY KEY NONCLUSTERED, C2 INT NOT NULL, INDEX idx NONCLUSTERED COLUMNSTORE (C2)) WITH (MEMORY_OPTIMIZED=ON);", @@ -845,8 +845,8 @@ public void HekatonTableNonClusteredColumnStoreIndex() /// Negative tests for FOR JSON syntax. /// [TestMethod] - [Priority(0)] - [SqlStudioTestCategory(Category.UnitTest)] + [Priority(0)] + [SqlStudioTestCategory(Category.UnitTest)] public void JsonForClauseNegativeTest() { ParserTestUtils.ErrorTest130("select * from t1 for json", @@ -893,8 +893,8 @@ public void JsonForClauseNegativeTest() /// Negative tests for Temporal syntax. /// [TestMethod] - [Priority(0)] - [SqlStudioTestCategory(Category.UnitTest)] + [Priority(0)] + [SqlStudioTestCategory(Category.UnitTest)] public void TemporalSyntaxNegativeTest() { // Issuing select statement using temporal clause and an expression as source. @@ -958,7 +958,7 @@ PERIOD FOR SYSTEM_TIME (SYS_START, SYS_END) ) WITH (SYSTEM_VERSIONING = ON (HISTORY_TABLE = dbo.t_history, DATA_CONSISTENCY_CHECK = ON, , HISTORY_RETENTION_PERIOD = 5 DAYS))"; ParserTestUtils.ErrorTest140(query4, - new ParserErrorInfo(query4.IndexOf(", ,")+2, "SQL46010", ",")); + new ParserErrorInfo(query4.IndexOf(", ,") + 2, "SQL46010", ",")); string query5 = @"CREATE TABLE tab_with_retention ( COL0 INT , @@ -1156,7 +1156,7 @@ PERIOD FOR SYSTEM_TIME (SYS_START, SYS_END) ) WITH (SYSTEM_VERSIONING = ON ())"; ParserTestUtils.ErrorTest130(query18, - new ParserErrorInfo(query18.IndexOf("())")+1, "SQL46010", ")")); + new ParserErrorInfo(query18.IndexOf("())") + 1, "SQL46010", ")")); string query19 = @"CREATE TABLE tab_with_retention ( COL0 INT , @@ -1205,8 +1205,8 @@ PERIOD FOR SYSTEM_TIME (SYS_START, SYS_END) /// Negative tests for inline COLUMNSTORE indexes /// [TestMethod] - [Priority(0)] - [SqlStudioTestCategory(Category.UnitTest)] + [Priority(0)] + [SqlStudioTestCategory(Category.UnitTest)] public void ColumnStoreInlineIndexNegativeTest() { // Columns in CCI @@ -1244,8 +1244,8 @@ public void ColumnStoreInlineIndexNegativeTest() /// Negative tests for DROP IF EXISTS statements /// [TestMethod] - [Priority(0)] - [SqlStudioTestCategory(Category.UnitTest)] + [Priority(0)] + [SqlStudioTestCategory(Category.UnitTest)] public void DropIfExistsNegativeTest() { // DROP DATABASE @@ -1410,8 +1410,8 @@ public void DropIfExistsNegativeTest() } [TestMethod] - [Priority(0)] - [SqlStudioTestCategory(Category.UnitTest)] + [Priority(0)] + [SqlStudioTestCategory(Category.UnitTest)] public void CreateTableInlineFilteredIndexNegativeTests() { // Table level inline clustered index with filter @@ -1428,8 +1428,8 @@ public void CreateTableInlineFilteredIndexNegativeTests() } [TestMethod] - [Priority(0)] - [SqlStudioTestCategory(Category.UnitTest)] + [Priority(0)] + [SqlStudioTestCategory(Category.UnitTest)] public void FederationStatementErrorTest() { //Two and Three-Part name @@ -1463,7 +1463,7 @@ public void FederationStatementErrorTest() // This is a limitation of SQLDOM parser. There are a number of instances where this happens, and an UNDONE to allow errors to take into account multiple options. So here can't say expected HIGH or LOW // SQL46005: Expected HIGH but encountered K1 instead. // - ParserTestUtils.ErrorTest110("ALTER FEDERATION FED DROP AT (K1 = 10)", new ParserErrorInfo(30, "SQL46005", new string[]{"HIGH","K1"})); + ParserTestUtils.ErrorTest110("ALTER FEDERATION FED DROP AT (K1 = 10)", new ParserErrorInfo(30, "SQL46005", new string[] { "HIGH", "K1" })); ParserTestUtils.ErrorTest110("ALTER FEDERATION FED DROP AT (low K1 10)", new ParserErrorInfo(37, "SQL46010", "10")); // USE @@ -1481,8 +1481,8 @@ public void FederationStatementErrorTest() } [TestMethod] - [Priority(0)] - [SqlStudioTestCategory(Category.UnitTest)] + [Priority(0)] + [SqlStudioTestCategory(Category.UnitTest)] public void CreateTableDanglingCommaTest() { // One dangling comma is ok - but only in create table @@ -1520,11 +1520,11 @@ private void TestErrorRecoverySingleErrorTest(TSqlParser parser, string fileName } [TestMethod] - [Priority(0)] - [SqlStudioTestCategory(Category.UnitTest)] + [Priority(0)] + [SqlStudioTestCategory(Category.UnitTest)] public void CreateTriggerStatementErrorTests() { - ParserTestUtils.ExecuteTestForAllParsers(delegate(TSqlParser parser) + ParserTestUtils.ExecuteTestForAllParsers(delegate (TSqlParser parser) { TestErrorRecoverySingleErrorTest(parser, "CreateTriggerStatementErrorTests.sql", new ParserErrorInfo(141, "SQL46010", ";")); @@ -1549,11 +1549,11 @@ public void CreateTriggerStatementErrorTests() } [TestMethod] - [Priority(0)] - [SqlStudioTestCategory(Category.UnitTest)] + [Priority(0)] + [SqlStudioTestCategory(Category.UnitTest)] public void CreateSchemaStatementErrorTests() { - ParserTestUtils.ExecuteTestForAllParsers(delegate(TSqlParser parser) + ParserTestUtils.ExecuteTestForAllParsers(delegate (TSqlParser parser) { TestErrorRecoverySingleErrorTest(parser, "CreateSchemaStatementErrorTests.sql", new ParserErrorInfo(102, "SQL46010", "on")); @@ -1561,8 +1561,8 @@ public void CreateSchemaStatementErrorTests() } [TestMethod] - [Priority(0)] - [SqlStudioTestCategory(Category.UnitTest)] + [Priority(0)] + [SqlStudioTestCategory(Category.UnitTest)] public void MultipleErrorTests() { ParserTestUtils.ExecuteTestForAllParsers(MultipleErrorTestImpl, true); @@ -1594,8 +1594,8 @@ public void MultipleErrorTestImpl(TSqlParser parser) } [TestMethod] - [Priority(0)] - [SqlStudioTestCategory(Category.UnitTest)] + [Priority(0)] + [SqlStudioTestCategory(Category.UnitTest)] public void ViewOptionRepeatErrorTest() { const string source = "CREATE View v1 WITH encryption, schemabinding, encryption as select 10;"; @@ -1605,8 +1605,8 @@ public void ViewOptionRepeatErrorTest() } [TestMethod] - [Priority(0)] - [SqlStudioTestCategory(Category.UnitTest)] + [Priority(0)] + [SqlStudioTestCategory(Category.UnitTest)] public void QueryOptimizerHintErrorTest() { const string source = "SELECT * FROM t1 OPTION (SOME_HINT_NEVER_EXISTS);"; @@ -1620,8 +1620,8 @@ public void QueryOptimizerHintErrorTest() /// Tests the USE HINT query hint mechanism /// [TestMethod] - [Priority(0)] - [SqlStudioTestCategory(Category.UnitTest)] + [Priority(0)] + [SqlStudioTestCategory(Category.UnitTest)] public void QueryOptimizerUseHintClauseErrorTest() { // SQL DOM doesn't check for valid/invalid strings, so this should only fail on parsers @@ -1665,7 +1665,7 @@ public void QueryOptimizerUseHintClauseErrorTest() ParserTestUtils.ErrorTest100(sourceNoHintKeyword, new ParserErrorInfo(29, "SQL46010", "(")); ParserTestUtils.ErrorTest110(sourceNoHintKeyword, new ParserErrorInfo(29, "SQL46010", "(")); ParserTestUtils.ErrorTest120(sourceNoHintKeyword, new ParserErrorInfo(29, "SQL46010", "(")); - ParserTestUtils.ErrorTest130(sourceNoHintKeyword, new ParserErrorInfo(25, "SQL46010", "USE")); + ParserTestUtils.ErrorTest130(sourceNoHintKeyword, new ParserErrorInfo(25, "SQL46010", "USE")); ParserTestUtils.ErrorTest140(sourceNoHintKeyword, new ParserErrorInfo(25, "SQL46010", "USE")); // USE keyword is omitted, should fail on all parsers. @@ -1729,8 +1729,8 @@ CREATE EXTERNAL DATA SOURCE InvalidPushdown_ExternalDataSource ParserTestUtils.ErrorTest150(externalDataSourceCreateCommand, new ParserErrorInfo(externalDataSourceCreateCommand.IndexOf("TEST"), "SQL46010", "TEST")); } [TestMethod] - [Priority(0)] - [SqlStudioTestCategory(Category.UnitTest)] + [Priority(0)] + [SqlStudioTestCategory(Category.UnitTest)] public void BeginEndStatementErrorTests() { ParserTestUtils.ExecuteTestForAllParsers(BeginEndStatementErrorTestImpl, true); @@ -1751,8 +1751,8 @@ public void BeginEndStatementErrorTestImpl(TSqlParser parser) } [TestMethod] - [Priority(0)] - [SqlStudioTestCategory(Category.UnitTest)] + [Priority(0)] + [SqlStudioTestCategory(Category.UnitTest)] public void MLPOptionErrorTest() { // Syntax errors @@ -1803,8 +1803,8 @@ public void MLPOptionErrorTest() } [TestMethod] - [Priority(0)] - [SqlStudioTestCategory(Category.UnitTest)] + [Priority(0)] + [SqlStudioTestCategory(Category.UnitTest)] public void InlineIndexErrors() { // Syntax errors @@ -1823,8 +1823,8 @@ public void InlineIndexErrors() } [TestMethod] - [Priority(0)] - [SqlStudioTestCategory(Category.UnitTest)] + [Priority(0)] + [SqlStudioTestCategory(Category.UnitTest)] public void AlterDatabaseSetEqualsOnOfOptionErrors() { // Syntax errors @@ -1837,8 +1837,8 @@ public void AlterDatabaseSetEqualsOnOfOptionErrors() /// Only Secondary database can accept a PRIMARY value for configuration option /// [TestMethod] - [Priority(0)] - [SqlStudioTestCategory(Category.UnitTest)] + [Priority(0)] + [SqlStudioTestCategory(Category.UnitTest)] public void AlterDatabaseScopedConfigurationOptionNegativeTests() { // Case: Setting invalid values for primary database @@ -1913,8 +1913,8 @@ public void AlterDatabaseScopedConfigurationOptionNegativeTests() } [TestMethod] - [Priority(0)] - [SqlStudioTestCategory(Category.UnitTest)] + [Priority(0)] + [SqlStudioTestCategory(Category.UnitTest)] public void TruncatePartitionsErrorTests() { // Syntax errors @@ -1924,8 +1924,8 @@ public void TruncatePartitionsErrorTests() } [TestMethod] - [Priority(0)] - [SqlStudioTestCategory(Category.UnitTest)] + [Priority(0)] + [SqlStudioTestCategory(Category.UnitTest)] public void LexerErrorTest() { ParserTestUtils.ErrorTestAllParsers("CREATE TABLE table1 (c1 int) [])", @@ -1946,7 +1946,7 @@ public void WindowClauseNegativeTest() // const string windowInOverClause = "SELECT Sum(c1) OVER Win1 FROM t1 WINDOW Win1 AS (PARTITION BY c1);"; - ParserTestUtils.ErrorTest150(windowInOverClause,new ParserErrorInfo(15, "SQL46010", "OVER")); + ParserTestUtils.ErrorTest150(windowInOverClause, new ParserErrorInfo(15, "SQL46010", "OVER")); ParserTestUtils.ErrorTest140(windowInOverClause, new ParserErrorInfo(15, "SQL46010", "OVER")); ParserTestUtils.ErrorTest130(windowInOverClause, new ParserErrorInfo(15, "SQL46010", "OVER")); @@ -2015,8 +2015,8 @@ public void IsNotDistinctFromNegativeTest() } [TestMethod] - [Priority(0)] - [SqlStudioTestCategory(Category.UnitTest)] + [Priority(0)] + [SqlStudioTestCategory(Category.UnitTest)] public void SQL46002Test() { ParserTestUtils.ErrorTestAllParsers("create table t1 (c1 national int varying);", @@ -2027,8 +2027,8 @@ public void SQL46002Test() } [TestMethod] - [Priority(0)] - [SqlStudioTestCategory(Category.UnitTest)] + [Priority(0)] + [SqlStudioTestCategory(Category.UnitTest)] public void SQL46003Test() { string testNumber = "SQL46003"; @@ -2042,8 +2042,8 @@ public void SQL46003Test() [TestMethod] - [Priority(0)] - [SqlStudioTestCategory(Category.UnitTest)] + [Priority(0)] + [SqlStudioTestCategory(Category.UnitTest)] public void SQL46004Test() { ParserTestUtils.ErrorTestAllParsers("create table t1 (column1 float varying);", @@ -2055,8 +2055,8 @@ public void SQL46004Test() [TestMethod] - [Priority(0)] - [SqlStudioTestCategory(Category.UnitTest)] + [Priority(0)] + [SqlStudioTestCategory(Category.UnitTest)] public void SQL46005Test() { string testNumber = "SQL46005"; @@ -2067,8 +2067,8 @@ public void SQL46005Test() [TestMethod] - [Priority(0)] - [SqlStudioTestCategory(Category.UnitTest)] + [Priority(0)] + [SqlStudioTestCategory(Category.UnitTest)] public void SQL46006Test() { string testNumber = "SQL46006"; @@ -2082,8 +2082,8 @@ CREATE TABLE t1 (int i1)", [TestMethod] - [Priority(0)] - [SqlStudioTestCategory(Category.UnitTest)] + [Priority(0)] + [SqlStudioTestCategory(Category.UnitTest)] public void SQL46007Test() { string testNumber = "SQL46007"; @@ -2098,8 +2098,8 @@ public void SQL46007Test() [TestMethod] - [Priority(0)] - [SqlStudioTestCategory(Category.UnitTest)] + [Priority(0)] + [SqlStudioTestCategory(Category.UnitTest)] public void SQL46008Test() { string testNumber = "SQL46008"; @@ -2110,8 +2110,8 @@ public void SQL46008Test() [TestMethod] - [Priority(0)] - [SqlStudioTestCategory(Category.UnitTest)] + [Priority(0)] + [SqlStudioTestCategory(Category.UnitTest)] public void SQL46009Test() { string testNumber = "SQL46009"; @@ -2122,8 +2122,8 @@ public void SQL46009Test() [TestMethod] - [Priority(0)] - [SqlStudioTestCategory(Category.UnitTest)] + [Priority(0)] + [SqlStudioTestCategory(Category.UnitTest)] public void SQL46010Test() { string testNumber = "SQL46010"; @@ -2140,15 +2140,15 @@ public void SQL46010Test() sql46010TestSyntax, new ParserErrorInfo(16, testNumber, "column1"), new ParserErrorInfo(sql46010TestSyntax.IndexOf(@"[labelName]"), testNumber, "[labelName]"), - new ParserErrorInfo(sql46010TestSyntax.IndexOf(@"...t1")+3, testNumber, "t1"), + new ParserErrorInfo(sql46010TestSyntax.IndexOf(@"...t1") + 3, testNumber, "t1"), new ParserErrorInfo(sql46010TestSyntax.IndexOf(@"t1));"), testNumber, "t1") ); } [TestMethod] - [Priority(0)] - [SqlStudioTestCategory(Category.UnitTest)] + [Priority(0)] + [SqlStudioTestCategory(Category.UnitTest)] public void SQL46011Test() { string testScript = "create table t1 (c1 int, c2 as -c1 check (c2 < 10));"; @@ -2161,8 +2161,8 @@ public void SQL46011Test() [TestMethod] - [Priority(0)] - [SqlStudioTestCategory(Category.UnitTest)] + [Priority(0)] + [SqlStudioTestCategory(Category.UnitTest)] public void SQL46012Test() { string testNumber = "SQL46012"; @@ -2173,8 +2173,8 @@ public void SQL46012Test() [TestMethod] - [Priority(0)] - [SqlStudioTestCategory(Category.UnitTest)] + [Priority(0)] + [SqlStudioTestCategory(Category.UnitTest)] public void SQL46013Test() { string testNumber = "SQL46013"; @@ -2185,8 +2185,8 @@ public void SQL46013Test() [TestMethod] - [Priority(0)] - [SqlStudioTestCategory(Category.UnitTest)] + [Priority(0)] + [SqlStudioTestCategory(Category.UnitTest)] public void SQL46014Test() { string testNumber = "SQL46014"; @@ -2197,8 +2197,8 @@ public void SQL46014Test() [TestMethod] - [Priority(0)] - [SqlStudioTestCategory(Category.UnitTest)] + [Priority(0)] + [SqlStudioTestCategory(Category.UnitTest)] public void SQL46015Test() { string testNumber = "SQL46015"; @@ -2210,8 +2210,8 @@ public void SQL46015Test() [TestMethod] - [Priority(0)] - [SqlStudioTestCategory(Category.UnitTest)] + [Priority(0)] + [SqlStudioTestCategory(Category.UnitTest)] public void SQL46016Test() { string testNumber = "SQL46016"; @@ -2229,8 +2229,8 @@ public void SQL46016Test() [TestMethod] - [Priority(0)] - [SqlStudioTestCategory(Category.UnitTest)] + [Priority(0)] + [SqlStudioTestCategory(Category.UnitTest)] public void ForeignKeyInDeclareTableErrorTest() { string testScript = @@ -2254,12 +2254,12 @@ public void GraphDbEdgeInDeclareTableError() ParserTestUtils.ErrorTest150( testScript, new ParserErrorInfo(27, "SQL46010", "constraint"), - new ParserErrorInfo(testScript.IndexOf(@"to n2",60), "SQL46010", "to")); + new ParserErrorInfo(testScript.IndexOf(@"to n2", 60), "SQL46010", "to")); } [TestMethod] - [Priority(0)] - [SqlStudioTestCategory(Category.UnitTest)] + [Priority(0)] + [SqlStudioTestCategory(Category.UnitTest)] public void SQL46018Test() { string testNumber = "SQL46018"; @@ -2270,8 +2270,8 @@ public void SQL46018Test() [TestMethod] - [Priority(0)] - [SqlStudioTestCategory(Category.UnitTest)] + [Priority(0)] + [SqlStudioTestCategory(Category.UnitTest)] public void SQL46019Test() { string testNumber = "SQL46019"; @@ -2282,8 +2282,8 @@ public void SQL46019Test() [TestMethod] - [Priority(0)] - [SqlStudioTestCategory(Category.UnitTest)] + [Priority(0)] + [SqlStudioTestCategory(Category.UnitTest)] public void SQL46020Test() { string testNumber = "SQL46020"; @@ -2294,8 +2294,8 @@ public void SQL46020Test() [TestMethod] - [Priority(0)] - [SqlStudioTestCategory(Category.UnitTest)] + [Priority(0)] + [SqlStudioTestCategory(Category.UnitTest)] public void SQL46021Test() { string testNumber = "SQL46021"; @@ -2317,16 +2317,16 @@ CREATE PROCEDURE dbName..p1 AS select * from t1 ParserTestUtils.ErrorTestAllParsers( sql46021TestSyntax, new ParserErrorInfo(15, testNumber, CodeGenerationSupporter.Default), - new ParserErrorInfo(sql46021TestSyntax.IndexOf(@"rule dbName")+5, testNumber, CodeGenerationSupporter.Rule), - new ParserErrorInfo(sql46021TestSyntax.IndexOf(@"trigger dbName")+8, testNumber, CodeGenerationSupporter.Trigger), - new ParserErrorInfo(sql46021TestSyntax.IndexOf(@"PROCEDURE dbName")+10, testNumber, CodeGenerationSupporter.Procedure) + new ParserErrorInfo(sql46021TestSyntax.IndexOf(@"rule dbName") + 5, testNumber, CodeGenerationSupporter.Rule), + new ParserErrorInfo(sql46021TestSyntax.IndexOf(@"trigger dbName") + 8, testNumber, CodeGenerationSupporter.Trigger), + new ParserErrorInfo(sql46021TestSyntax.IndexOf(@"PROCEDURE dbName") + 10, testNumber, CodeGenerationSupporter.Procedure) ); } [TestMethod] - [Priority(0)] - [SqlStudioTestCategory(Category.UnitTest)] + [Priority(0)] + [SqlStudioTestCategory(Category.UnitTest)] public void SQL46022Test() { string testNumber = "SQL46022"; @@ -2337,8 +2337,8 @@ public void SQL46022Test() [TestMethod] - [Priority(0)] - [SqlStudioTestCategory(Category.UnitTest)] + [Priority(0)] + [SqlStudioTestCategory(Category.UnitTest)] public void SQL46023Test() { string testNumber = "SQL46023"; @@ -2349,8 +2349,8 @@ public void SQL46023Test() [TestMethod] - [Priority(0)] - [SqlStudioTestCategory(Category.UnitTest)] + [Priority(0)] + [SqlStudioTestCategory(Category.UnitTest)] public void SQL46025Test() { string testNumber = "SQL46025"; @@ -2363,8 +2363,8 @@ public void SQL46025Test() [TestMethod] - [Priority(0)] - [SqlStudioTestCategory(Category.UnitTest)] + [Priority(0)] + [SqlStudioTestCategory(Category.UnitTest)] public void SQL46026Test() { string testNumber = "SQL46026"; @@ -2379,8 +2379,8 @@ public void SQL46026Test() [TestMethod] - [Priority(0)] - [SqlStudioTestCategory(Category.UnitTest)] + [Priority(0)] + [SqlStudioTestCategory(Category.UnitTest)] public void SQL46027Test() { string testNumber = "SQL46027"; @@ -2391,8 +2391,8 @@ public void SQL46027Test() [TestMethod] - [Priority(0)] - [SqlStudioTestCategory(Category.UnitTest)] + [Priority(0)] + [SqlStudioTestCategory(Category.UnitTest)] public void SQL46028Test() { string testNumber = "SQL46028"; @@ -2418,8 +2418,8 @@ select a.b.c.d.e.* [TestMethod] - [Priority(0)] - [SqlStudioTestCategory(Category.UnitTest)] + [Priority(0)] + [SqlStudioTestCategory(Category.UnitTest)] public void SQL46029Test() { string testNumber = "SQL46029"; @@ -2430,8 +2430,8 @@ public void SQL46029Test() [TestMethod] - [Priority(0)] - [SqlStudioTestCategory(Category.UnitTest)] + [Priority(0)] + [SqlStudioTestCategory(Category.UnitTest)] public void SQL46049Test() { //Function Execute AS @@ -2457,9 +2457,9 @@ FROM SERVICE [//Adventure-Works.com/ExpenseClient] TO SERVICE '//Adventure-Works.com/Expenses' ON CONTRACT [//Adventure-Works.com/Expenses/ExpenseSubmission] WITH LIFETIME=60, ENCRYPTION=ON"; - ParserTestUtils.ErrorTest90AndAbove(beginDialogConversation + ", LIFETIME=10;", new ParserErrorInfo(beginDialogConversation.Length+2, "SQL46049", "LIFETIME")); - ParserTestUtils.ErrorTest90AndAbove(beginDialogConversation + ", RELATED_CONVERSATION_GROUP = @existing_conversation_handle, RELATED_CONVERSATION = @existing_conversation_handle ;", new ParserErrorInfo(beginDialogConversation.Length+62, "SQL46049", "RELATED_CONVERSATION")); - ParserTestUtils.ErrorTest90AndAbove(beginDialogConversation + ", ENCRYPTION=OFF;", new ParserErrorInfo(beginDialogConversation.Length+2, "SQL46049", "ENCRYPTION")); + ParserTestUtils.ErrorTest90AndAbove(beginDialogConversation + ", LIFETIME=10;", new ParserErrorInfo(beginDialogConversation.Length + 2, "SQL46049", "LIFETIME")); + ParserTestUtils.ErrorTest90AndAbove(beginDialogConversation + ", RELATED_CONVERSATION_GROUP = @existing_conversation_handle, RELATED_CONVERSATION = @existing_conversation_handle ;", new ParserErrorInfo(beginDialogConversation.Length + 62, "SQL46049", "RELATED_CONVERSATION")); + ParserTestUtils.ErrorTest90AndAbove(beginDialogConversation + ", ENCRYPTION=OFF;", new ParserErrorInfo(beginDialogConversation.Length + 2, "SQL46049", "ENCRYPTION")); //Create Database // @@ -2494,13 +2494,13 @@ ADD FILE SIZE = 10MB, FILEGROWTH = 5MB );"; - ParserTestUtils.ErrorTestAllParsers(alterDatabase, new ParserErrorInfo(alterDatabase.IndexOf("SIZE",205), "SQL46049", "SIZE")); + ParserTestUtils.ErrorTestAllParsers(alterDatabase, new ParserErrorInfo(alterDatabase.IndexOf("SIZE", 205), "SQL46049", "SIZE")); } [TestMethod] - [Priority(0)] - [SqlStudioTestCategory(Category.UnitTest)] + [Priority(0)] + [SqlStudioTestCategory(Category.UnitTest)] public void SQL46035Test() { ParserTestUtils.ErrorTestAllParsers("select * from { oj t1 cross join t2 }", @@ -2509,8 +2509,8 @@ public void SQL46035Test() [TestMethod] - [Priority(0)] - [SqlStudioTestCategory(Category.UnitTest)] + [Priority(0)] + [SqlStudioTestCategory(Category.UnitTest)] public void SQL46036Test() { ParserTestUtils.ErrorTestAllParsers(@"select * from --(* vendor(microsoft),product(odbc) oj t1 cross join t2 *)--", @@ -2519,8 +2519,8 @@ public void SQL46036Test() [TestMethod] - [Priority(0)] - [SqlStudioTestCategory(Category.UnitTest)] + [Priority(0)] + [SqlStudioTestCategory(Category.UnitTest)] public void SQL46038Test() { ParserTestUtils.ErrorTestAllParsers("drop statistics s1", @@ -2529,8 +2529,8 @@ public void SQL46038Test() [TestMethod] - [Priority(0)] - [SqlStudioTestCategory(Category.UnitTest)] + [Priority(0)] + [SqlStudioTestCategory(Category.UnitTest)] public void SQL46039Test() { ParserTestUtils.ErrorTestAllParsers("create function f1(@p int output) returns int as begin return 1; end", @@ -2539,8 +2539,8 @@ public void SQL46039Test() [TestMethod] - [Priority(0)] - [SqlStudioTestCategory(Category.UnitTest)] + [Priority(0)] + [SqlStudioTestCategory(Category.UnitTest)] public void SQL46040Test() { TSql100Parser parser = new TSql100Parser(true); @@ -2551,8 +2551,8 @@ public void SQL46040Test() [TestMethod] - [Priority(0)] - [SqlStudioTestCategory(Category.UnitTest)] + [Priority(0)] + [SqlStudioTestCategory(Category.UnitTest)] public void SQL46041Test() { TSql100Parser parser = new TSql100Parser(true); @@ -2566,8 +2566,8 @@ public void SQL46041Test() [TestMethod] - [Priority(0)] - [SqlStudioTestCategory(Category.UnitTest)] + [Priority(0)] + [SqlStudioTestCategory(Category.UnitTest)] public void SQL46042Test() { ParserTestUtils.ErrorTestAllParsers( @@ -2577,8 +2577,8 @@ public void SQL46042Test() [TestMethod] - [Priority(0)] - [SqlStudioTestCategory(Category.UnitTest)] + [Priority(0)] + [SqlStudioTestCategory(Category.UnitTest)] public void SQL46043Test() { ParserTestUtils.ErrorTestAllParsers( @@ -2588,8 +2588,8 @@ public void SQL46043Test() [TestMethod] - [Priority(0)] - [SqlStudioTestCategory(Category.UnitTest)] + [Priority(0)] + [SqlStudioTestCategory(Category.UnitTest)] public void SQL46047Test() { ParserTestUtils.ErrorTestAllParsers( @@ -2599,8 +2599,8 @@ public void SQL46047Test() [TestMethod] - [Priority(0)] - [SqlStudioTestCategory(Category.UnitTest)] + [Priority(0)] + [SqlStudioTestCategory(Category.UnitTest)] public void SQL46048Test() { ParserTestUtils.ErrorTestAllParsers( @@ -2610,8 +2610,8 @@ public void SQL46048Test() [TestMethod] - [Priority(0)] - [SqlStudioTestCategory(Category.UnitTest)] + [Priority(0)] + [SqlStudioTestCategory(Category.UnitTest)] public void SQL46050Test() { ParserTestUtils.ErrorTest100( @@ -2624,8 +2624,8 @@ public void SQL46050Test() [TestMethod] - [Priority(0)] - [SqlStudioTestCategory(Category.UnitTest)] + [Priority(0)] + [SqlStudioTestCategory(Category.UnitTest)] public void SQL46058Test() { TSql100Parser parser100 = new TSql100Parser(true); @@ -2638,8 +2638,8 @@ public void SQL46058Test() [TestMethod] - [Priority(0)] - [SqlStudioTestCategory(Category.UnitTest)] + [Priority(0)] + [SqlStudioTestCategory(Category.UnitTest)] public void SQL46059Test() { ParserTestUtils.ErrorTest100("CREATE INDEX i1 ON t1(c1) WHERE c1 < CONVERT(int, CONVERT(int, 20))", @@ -2650,8 +2650,8 @@ public void SQL46059Test() [TestMethod] - [Priority(0)] - [SqlStudioTestCategory(Category.UnitTest)] + [Priority(0)] + [SqlStudioTestCategory(Category.UnitTest)] public void SQL46060Test() { ParserTestUtils.ErrorTestAllParsers("CREATE TABLE t1(c1 INT PRIMARY KEY WITH FILLFACTOR = 105)", @@ -2662,8 +2662,8 @@ public void SQL46060Test() [TestMethod] - [Priority(0)] - [SqlStudioTestCategory(Category.UnitTest)] + [Priority(0)] + [SqlStudioTestCategory(Category.UnitTest)] public void SQL46061Test() { TSql100Parser parser100 = new TSql100Parser(true); @@ -2703,8 +2703,8 @@ public void SQL46061Test_160() [TestMethod] - [Priority(0)] - [SqlStudioTestCategory(Category.UnitTest)] + [Priority(0)] + [SqlStudioTestCategory(Category.UnitTest)] public void SQL46062Test() { ParserTestUtils.ErrorTestAllParsers("CREATE DATABASE db1 ON (NAME=n1, NEWNAME=n2, FILENAME='zzz')", @@ -2786,8 +2786,8 @@ public void IndexFilterErrorTests() [TestMethod] - [Priority(0)] - [SqlStudioTestCategory(Category.UnitTest)] + [Priority(0)] + [SqlStudioTestCategory(Category.UnitTest)] public void IntoClauseErrorTests() { ParserTestUtils.ErrorTestAllParsers("insert t1 select c1 into t2", @@ -2808,8 +2808,8 @@ public void OnClauseErrorTests() } [TestMethod] - [Priority(0)] - [SqlStudioTestCategory(Category.UnitTest)] + [Priority(0)] + [SqlStudioTestCategory(Category.UnitTest)] public void UnclosedTokenTest() { ParserTestUtils.ErrorTestAllParsers("create table t1(c1 int) 'zz", @@ -2828,8 +2828,8 @@ public void UnclosedTokenTest() [TestMethod] - [Priority(0)] - [SqlStudioTestCategory(Category.UnitTest)] + [Priority(0)] + [SqlStudioTestCategory(Category.UnitTest)] public void TokenStreamRecognitionExceptionTest() { ParserTestUtils.ErrorTestAllParsers( @@ -2839,8 +2839,8 @@ public void TokenStreamRecognitionExceptionTest() [TestMethod] - [Priority(0)] - [SqlStudioTestCategory(Category.UnitTest)] + [Priority(0)] + [SqlStudioTestCategory(Category.UnitTest)] public void IPAddressErrorTest() { // T-SQL 80 doesn't have IPs! @@ -2861,8 +2861,8 @@ public void IPAddressErrorTest() [TestMethod] - [Priority(0)] - [SqlStudioTestCategory(Category.UnitTest)] + [Priority(0)] + [SqlStudioTestCategory(Category.UnitTest)] public void EmptyParserInputTest() { ParserTestUtils.ErrorTestAllParsers(string.Empty); @@ -2870,8 +2870,8 @@ public void EmptyParserInputTest() [TestMethod] - [Priority(0)] - [SqlStudioTestCategory(Category.UnitTest)] + [Priority(0)] + [SqlStudioTestCategory(Category.UnitTest)] public void QuotedIdentifierErrorTest() { // Check, that tokens like "aaa" are treated as ascii literals if quoted identifiers are off @@ -2884,13 +2884,13 @@ public void QuotedIdentifierErrorTest() [TestMethod] - [Priority(0)] - [SqlStudioTestCategory(Category.UnitTest)] + [Priority(0)] + [SqlStudioTestCategory(Category.UnitTest)] public void QuotedIdentfierPerBatchResetTest() { string SwitchingOffScript = "CREATE TABLE \"t1\"(c1 int);\n\r GO SET QUOTED_IDENTIFIER OFF; CREATE TABLE \"t2\"(c1 int);"; - ParserTestUtils.ExecuteTestForAllParsers(delegate(TSqlParser parser) + ParserTestUtils.ExecuteTestForAllParsers(delegate (TSqlParser parser) { ParserTestUtils.ErrorTest(parser, SwitchingOffScript, new ParserErrorInfo(72, "SQL46010", "\"t2\"")); @@ -2899,7 +2899,7 @@ public void QuotedIdentfierPerBatchResetTest() string SwitchingOnScript = "SET QUOTED_IDENTIFIER ON; CREATE TABLE \"t1\"(c1 int);\n\r GO CREATE TABLE \"t2\"(c1 int)"; - ParserTestUtils.ExecuteTestForAllParsers(delegate(TSqlParser parser) + ParserTestUtils.ExecuteTestForAllParsers(delegate (TSqlParser parser) { ParserTestUtils.ErrorTest(parser, SwitchingOnScript, new ParserErrorInfo(71, "SQL46010", "\"t2\"")); @@ -2908,8 +2908,8 @@ public void QuotedIdentfierPerBatchResetTest() [TestMethod] - [Priority(0)] - [SqlStudioTestCategory(Category.UnitTest)] + [Priority(0)] + [SqlStudioTestCategory(Category.UnitTest)] public void ProcNameSemiColonErrorTest() { ParserTestUtils.ErrorTestAllParsers( @@ -2920,8 +2920,8 @@ public void ProcNameSemiColonErrorTest() [TestMethod] - [Priority(0)] - [SqlStudioTestCategory(Category.UnitTest)] + [Priority(0)] + [SqlStudioTestCategory(Category.UnitTest)] public void RequiredSemiColonTest() { ParserTestUtils.ErrorTest100AndAbove( @@ -2952,17 +2952,17 @@ WHEN MATCHED @"ALTER SEARCH PROPERTY LIST foo DROP 'bax'", new ParserErrorInfo(27, "SQL46097", "Search Property List")); - ParserTestUtils.ErrorTest110( + ParserTestUtils.ErrorTest110( @"drop search property list list1", - new ParserErrorInfo(26, "SQL46097", "Search Property List")); + new ParserErrorInfo(26, "SQL46097", "Search Property List")); } [TestMethod] - [Priority(0)] - [SqlStudioTestCategory(Category.UnitTest)] + [Priority(0)] + [SqlStudioTestCategory(Category.UnitTest)] public void CreateEventNotificationStatementErrorTest() { // T-SQL 80 doesn't have CREATE EVENT NOTIFICATION statement @@ -2983,8 +2983,8 @@ public void CreateEventNotificationStatementErrorTest() [TestMethod] - [Priority(0)] - [SqlStudioTestCategory(Category.UnitTest)] + [Priority(0)] + [SqlStudioTestCategory(Category.UnitTest)] public void CreateLogonTriggerStatementErrorTest() { ParserTestUtils.ErrorTest90AndAbove("create trigger trig1 on database for logon as Create Table t1 (int i1);", @@ -2993,8 +2993,8 @@ public void CreateLogonTriggerStatementErrorTest() [TestMethod] - [Priority(0)] - [SqlStudioTestCategory(Category.UnitTest)] + [Priority(0)] + [SqlStudioTestCategory(Category.UnitTest)] public void CreateTriggerStatementWithUnkownEventsErrorTest() { ParserTestUtils.ErrorTest90AndAbove("create trigger trig1 on database for blah_blah as Create Table t1 (int i1);", @@ -3003,8 +3003,8 @@ public void CreateTriggerStatementWithUnkownEventsErrorTest() [TestMethod] - [Priority(0)] - [SqlStudioTestCategory(Category.UnitTest)] + [Priority(0)] + [SqlStudioTestCategory(Category.UnitTest)] public void CreateResourcePoolStatementErrorTest() { ParserTestUtils.ErrorTest100("create resource pool res_pool with (MIN_CPU_PERCENT = 105);", @@ -3044,7 +3044,7 @@ public void CreateResourcePoolStatementErrorTest() [TestMethod] - [Priority(0)] + [Priority(0)] public void CreateExternalResourcePoolStatementErrorTest() { ParserTestUtils.ErrorTest130("create external resource pool res_pool with (MAX_MEMORY_PERCENT = 0);", @@ -3113,8 +3113,8 @@ public void CreateExternalResourcePoolStatementErrorTest() [TestMethod] - [Priority(0)] - [SqlStudioTestCategory(Category.UnitTest)] + [Priority(0)] + [SqlStudioTestCategory(Category.UnitTest)] public void AlterExternalResourcePoolStatementErrorTest() { ParserTestUtils.ErrorTest130("alter external resource pool res_pool with (MAX_MEMORY_PERCENT = 0);", @@ -3183,8 +3183,8 @@ public void AlterExternalResourcePoolStatementErrorTest() [TestMethod] - [Priority(0)] - [SqlStudioTestCategory(Category.UnitTest)] + [Priority(0)] + [SqlStudioTestCategory(Category.UnitTest)] public void CreateWorkloadGroupStatementErrorTest() { ParserTestUtils.ErrorTest100("create workload group wg1 with (IMPORTANC = HIGH);", @@ -3256,7 +3256,7 @@ public void CreateWorkloadClassifierStatementErrorTest() IMPORTANCE = HIGH )"; ParserTestUtils.ErrorTest130(query1, - new ParserErrorInfo(query1.IndexOf("START_TIME")+13, "SQL46134", "START_TIME")); + new ParserErrorInfo(query1.IndexOf("START_TIME") + 13, "SQL46134", "START_TIME")); string query2 = @"CREATE WORKLOAD CLASSIFIER wcAllOptions WITH( @@ -3269,7 +3269,7 @@ public void CreateWorkloadClassifierStatementErrorTest() IMPORTANCE = HIGH )"; ParserTestUtils.ErrorTest130(query2, - new ParserErrorInfo(query2.IndexOf("END_TIME")+11, "SQL46134", "END_TIME")); + new ParserErrorInfo(query2.IndexOf("END_TIME") + 11, "SQL46134", "END_TIME")); string query3 = @"CREATE WORKLOAD CLASSIFIER wcAllOptions WITH( @@ -3298,7 +3298,7 @@ public void CreateWorkloadClassifierStatementErrorTest() )"; ParserTestUtils.ErrorTest130(query4, new ParserErrorInfo(query4.IndexOf("MEMBERNAME", 300), "SQL46049", "MEMBERNAME")); - + string query5 = @"CREATE WORKLOAD CLASSIFIER wcAllOptions WITH( WORKLOAD_GROUP = 'wgDefaultParams', @@ -3311,8 +3311,8 @@ public void CreateWorkloadClassifierStatementErrorTest() IMPORTANCE = HIGH )"; ParserTestUtils.ErrorTest130(query5, - new ParserErrorInfo(query5.IndexOf("WLM_CONTEXT",400), "SQL46049", "WLM_CONTEXT")); - + new ParserErrorInfo(query5.IndexOf("WLM_CONTEXT", 400), "SQL46049", "WLM_CONTEXT")); + string query6 = @"CREATE WORKLOAD CLASSIFIER wcAllOptions WITH( WORKLOAD_GROUP = 'wgDefaultParams', @@ -3326,7 +3326,7 @@ public void CreateWorkloadClassifierStatementErrorTest() )"; ParserTestUtils.ErrorTest130(query6, new ParserErrorInfo(query6.IndexOf("WLM_LABEL", 500), "SQL46049", "WLM_LABEL")); - + string query7 = @"CREATE WORKLOAD CLASSIFIER wcAllOptions WITH( WORKLOAD_GROUP = 'wgDefaultParams', @@ -3340,7 +3340,7 @@ public void CreateWorkloadClassifierStatementErrorTest() )"; ParserTestUtils.ErrorTest130(query7, new ParserErrorInfo(query7.IndexOf("IMPORTANCE", 550), "SQL46049", "IMPORTANCE")); - + string query8 = @"CREATE WORKLOAD CLASSIFIER wcAllOptions WITH( WORKLOAD_GROUP = 'wgDefaultParams', @@ -3354,7 +3354,7 @@ public void CreateWorkloadClassifierStatementErrorTest() )"; ParserTestUtils.ErrorTest130(query8, new ParserErrorInfo(query8.IndexOf("START_TIME", 430), "SQL46049", "START_TIME")); - + string query9 = @"CREATE WORKLOAD CLASSIFIER wcAllOptions WITH( WORKLOAD_GROUP = 'wgDefaultParams', @@ -3386,8 +3386,8 @@ public void PredictErrorTest() } [TestMethod] - [Priority(0)] - [SqlStudioTestCategory(Category.UnitTest)] + [Priority(0)] + [SqlStudioTestCategory(Category.UnitTest)] public void CreateBrokerPriorityStatementErrorTest() { ParserTestUtils.ErrorTest100("create broker priority bp1 for conversatio;", @@ -3412,8 +3412,8 @@ public void CreateBrokerPriorityStatementErrorTest() [TestMethod] - [Priority(0)] - [SqlStudioTestCategory(Category.UnitTest)] + [Priority(0)] + [SqlStudioTestCategory(Category.UnitTest)] public void AlterTableAlterIndexElementStatementErrorTest() { ParserTestUtils.ErrorTest130("ALTER TABLE t1 ALTER INDEX i1 REBUILD WITH (BUCKET_COUNT = 1, BUCKET_COUNT = 1);", @@ -3424,8 +3424,8 @@ public void AlterTableAlterIndexElementStatementErrorTest() [TestMethod] - [Priority(0)] - [SqlStudioTestCategory(Category.UnitTest)] + [Priority(0)] + [SqlStudioTestCategory(Category.UnitTest)] public void AlterTableChangeTrackingDisableWithOptionsErrorTest() { ParserTestUtils.ErrorTest100("ALTER TABLE t1 DISABLE CHANGE_TRACKING WITH (TRACK_COLUMNS_UPDATED = ON)", @@ -3434,8 +3434,8 @@ public void AlterTableChangeTrackingDisableWithOptionsErrorTest() [TestMethod] - [Priority(0)] - [SqlStudioTestCategory(Category.UnitTest)] + [Priority(0)] + [SqlStudioTestCategory(Category.UnitTest)] public void MultipleForClauseTest() { ParserTestUtils.ErrorTest100("select 1 for browse for xml", @@ -3459,8 +3459,8 @@ public void MultipleForClauseTest() [TestMethod] - [Priority(0)] - [SqlStudioTestCategory(Category.UnitTest)] + [Priority(0)] + [SqlStudioTestCategory(Category.UnitTest)] public void ColumnDefinitionStorageAttributesErrorTest() { TSql100Parser parser = new TSql100Parser(true); @@ -3503,8 +3503,8 @@ public void ColumnDefinitionStorageAttributesErrorTest() [TestMethod] - [Priority(0)] - [SqlStudioTestCategory(Category.UnitTest)] + [Priority(0)] + [SqlStudioTestCategory(Category.UnitTest)] public void NotForReplicationNotAllowedInTableVariablesFunctionsTypesErrorTest() { // Column check constraint @@ -3534,8 +3534,8 @@ public void NotForReplicationNotAllowedInTableVariablesFunctionsTypesErrorTest() [TestMethod] - [Priority(0)] - [SqlStudioTestCategory(Category.UnitTest)] + [Priority(0)] + [SqlStudioTestCategory(Category.UnitTest)] public void NoConstraintNamesInTableVariablesFunctionsTypesErrorTest() { // Named column constraints @@ -3559,8 +3559,8 @@ public void NoConstraintNamesInTableVariablesFunctionsTypesErrorTest() [TestMethod] - [Priority(0)] - [SqlStudioTestCategory(Category.UnitTest)] + [Priority(0)] + [SqlStudioTestCategory(Category.UnitTest)] public void ServerAuditStatementsErrorTest() { TSql100Parser parser100 = new TSql100Parser(true); @@ -3591,8 +3591,8 @@ public void ServerAuditStatementsErrorTest() [TestMethod] - [Priority(0)] - [SqlStudioTestCategory(Category.UnitTest)] + [Priority(0)] + [SqlStudioTestCategory(Category.UnitTest)] public void SecurityStatementsErrorTest() { //Columns cannot be specified on both the permission and the object in grant/deny/revoke @@ -3607,8 +3607,8 @@ public void SecurityStatementsErrorTest() [TestMethod] - [Priority(0)] - [SqlStudioTestCategory(Category.UnitTest)] + [Priority(0)] + [SqlStudioTestCategory(Category.UnitTest)] public void EventSessionStatementErrorTest() { TSql100Parser parser = new TSql100Parser(true); @@ -3649,8 +3649,8 @@ public void EventSessionStatementErrorTest() [TestMethod] - [Priority(0)] - [SqlStudioTestCategory(Category.UnitTest)] + [Priority(0)] + [SqlStudioTestCategory(Category.UnitTest)] public void When_session_scope_is_other_than_database_or_server_CREATE_EVENT_SESSION_fails_for_130() { var tSql130Parser = new TSql130Parser(true); @@ -3670,8 +3670,8 @@ public void When_session_scope_is_other_than_database_or_server_CREATE_EVENT_SES // Test the key option duplication is not allowed [TestMethod] - [Priority(0)] - [SqlStudioTestCategory(Category.UnitTest)] + [Priority(0)] + [SqlStudioTestCategory(Category.UnitTest)] public void KeyOptionDuplicationErrorTest() { ParserTestUtils.ErrorTest90AndAbove( @@ -3697,8 +3697,8 @@ public void KeyOptionDuplicationErrorTest() [TestMethod] - [Priority(0)] - [SqlStudioTestCategory(Category.UnitTest)] + [Priority(0)] + [SqlStudioTestCategory(Category.UnitTest)] public void SQL46069Test() { ParserTestUtils.ErrorTest90AndAbove("create queue q1 with status = on, Activation(status = on, procedure_name = dbo..p1, execute as self), retention = off;", @@ -3713,8 +3713,8 @@ public void SQL46069Test() [TestMethod] - [Priority(0)] - [SqlStudioTestCategory(Category.UnitTest)] + [Priority(0)] + [SqlStudioTestCategory(Category.UnitTest)] public void MaxParameterInDataTypesErrorTest() { ParserTestUtils.ErrorTest90AndAbove("CREATE TABLE t1(c1 CHAR(max))", @@ -3727,8 +3727,8 @@ public void MaxParameterInDataTypesErrorTest() [TestMethod] - [Priority(0)] - [SqlStudioTestCategory(Category.UnitTest)] + [Priority(0)] + [SqlStudioTestCategory(Category.UnitTest)] public void CreateSpatialIndexStatementErrorTest() { TSql100Parser parser = new TSql100Parser(true); @@ -3809,8 +3809,8 @@ public void SequenceStatementErrorTest() [TestMethod] - [Priority(0)] - [SqlStudioTestCategory(Category.UnitTest)] + [Priority(0)] + [SqlStudioTestCategory(Category.UnitTest)] public void OffsetErrorTest() { //Offset no order by @@ -3820,8 +3820,8 @@ public void OffsetErrorTest() [TestMethod] - [Priority(0)] - [SqlStudioTestCategory(Category.UnitTest)] + [Priority(0)] + [SqlStudioTestCategory(Category.UnitTest)] public void CommitTransactionErrorTest() { ParserTestUtils.ErrorTest120("COMMIT TRANSACTION WITH (DELAYED_DURABILITY = ONN)", new ParserErrorInfo(46, "SQL46010", "ONN")); @@ -3834,8 +3834,8 @@ public void CommitTransactionErrorTest() [TestMethod] - [Priority(0)] - [SqlStudioTestCategory(Category.UnitTest)] + [Priority(0)] + [SqlStudioTestCategory(Category.UnitTest)] public void AlterDatabaseErrorTest() { ParserTestUtils.ErrorTest120("ALTER DATABASE testdb SET DELAYED_DURABILITY = ALLOWEDD)", new ParserErrorInfo(47, "SQL46010", "ALLOWEDD")); @@ -3903,8 +3903,8 @@ public void CtasStatementErrorTest() } [TestMethod] - [Priority(0)] - [SqlStudioTestCategory(Category.UnitTest)] + [Priority(0)] + [SqlStudioTestCategory(Category.UnitTest)] public void AlterDatabaseModifyFilegroupErrorTest() { ParserTestUtils.ErrorTest130("ALTER DATABASE testdb MODIFY FILEGROUP [PRIMARY] READ ONLY)", new ParserErrorInfo(49, "SQL46010", "READ")); @@ -3915,8 +3915,8 @@ public void AlterDatabaseModifyFilegroupErrorTest() [TestMethod] - [Priority(0)] - [SqlStudioTestCategory(Category.UnitTest)] + [Priority(0)] + [SqlStudioTestCategory(Category.UnitTest)] public void IncrementalStatisticsErrorTest() { ParserTestUtils.ErrorTest120("ALTER DATABASE testdb SET AUTO_CREATE_STATISTICS ON (INCREMENTAL)", new ParserErrorInfo(64, "SQL46010", ")")); @@ -3937,8 +3937,8 @@ public void IncrementalStatisticsErrorTest() [TestMethod] - [Priority(0)] - [SqlStudioTestCategory(Category.UnitTest)] + [Priority(0)] + [SqlStudioTestCategory(Category.UnitTest)] public void Dev10Bug462552() { ParserTestUtils.ErrorTestAllParsers("CREATE PROCEDURE Proc1 @CurrencyCursor CURSOR AS SET @CurrencyCursor = CURSOR FORWARD_ONLY STATIC FOR SELECT column_1 FROM Table1;", @@ -3954,8 +3954,8 @@ public void Dev10Bug462552() [TestMethod] - [Priority(0)] - [SqlStudioTestCategory(Category.UnitTest)] + [Priority(0)] + [SqlStudioTestCategory(Category.UnitTest)] public void SQL46070Test() { // Tests for checking that duplication of options in DROP INDEX STATEMENT is not allowed @@ -3976,8 +3976,8 @@ public void SQL46070Test() [TestMethod] - [Priority(0)] - [SqlStudioTestCategory(Category.UnitTest)] + [Priority(0)] + [SqlStudioTestCategory(Category.UnitTest)] public void SQL46071Test() { ParserTestUtils.ErrorTestAllParsers("CREATE STATISTICS [stat] ON t1 (c1, c2) WITH FULLSCAN, NORECOMPUTE, SAMPLE 12 ROWS;", @@ -3990,8 +3990,8 @@ public void SQL46071Test() [TestMethod] - [Priority(0)] - [SqlStudioTestCategory(Category.UnitTest)] + [Priority(0)] + [SqlStudioTestCategory(Category.UnitTest)] public void SQL46072Test() { ParserTestUtils.ErrorTest100("WITH change_tracking_context (0xff),DIRREPS(C1,c2) as (SELECT c1 FROM t1) select c1 from t1", @@ -4002,8 +4002,8 @@ public void SQL46072Test() [TestMethod] - [Priority(0)] - [SqlStudioTestCategory(Category.UnitTest)] + [Priority(0)] + [SqlStudioTestCategory(Category.UnitTest)] public void SQL46074Test() { ParserTestUtils.ErrorTestAllParsers("INSERT INTO pi WITH (INDEX (i1)) DEFAULT VALUES", @@ -4031,8 +4031,8 @@ OUTPUT c1" /// Currently, only INSERT allows sub-DMLs /// [TestMethod] - [Priority(0)] - [SqlStudioTestCategory(Category.UnitTest)] + [Priority(0)] + [SqlStudioTestCategory(Category.UnitTest)] public void SQL46075Test() { TSql100Parser parser = new TSql100Parser(true); @@ -4059,8 +4059,8 @@ public void SQL46075Test() /// Checks, that sub-DML are not allowed in SELECT which is not source for insert /// [TestMethod] - [Priority(0)] - [SqlStudioTestCategory(Category.UnitTest)] + [Priority(0)] + [SqlStudioTestCategory(Category.UnitTest)] public void SQL46076Test() { TSql100Parser parser = new TSql100Parser(true); @@ -4093,8 +4093,8 @@ public void SQL46076Test() /// Checks, that sub-DMLs are not allowed in UPDATE or DELETE FROM clauses /// [TestMethod] - [Priority(0)] - [SqlStudioTestCategory(Category.UnitTest)] + [Priority(0)] + [SqlStudioTestCategory(Category.UnitTest)] public void SQL46077Test() { TSql100Parser parser = new TSql100Parser(true); @@ -4119,8 +4119,8 @@ public void SQL46077Test() /// Checks, that sub-DMLs are not allowed in USING clause of MERGE statement /// [TestMethod] - [Priority(0)] - [SqlStudioTestCategory(Category.UnitTest)] + [Priority(0)] + [SqlStudioTestCategory(Category.UnitTest)] public void SQL46078Test() { TSql100Parser parser = new TSql100Parser(true); @@ -4141,8 +4141,8 @@ public void SQL46078Test() /// Checks, that sub-DMLs have OUTPUT clause /// [TestMethod] - [Priority(0)] - [SqlStudioTestCategory(Category.UnitTest)] + [Priority(0)] + [SqlStudioTestCategory(Category.UnitTest)] public void SQL46079Test() { TSql100Parser parser = new TSql100Parser(true); @@ -4170,8 +4170,8 @@ public void SQL46079Test() /// Checks, that WHERE CURRENT OF is not allowed in sub-dmls /// [TestMethod] - [Priority(0)] - [SqlStudioTestCategory(Category.UnitTest)] + [Priority(0)] + [SqlStudioTestCategory(Category.UnitTest)] public void SQL46083Test() { TSql100Parser parser = new TSql100Parser(true); @@ -4190,8 +4190,8 @@ public void SQL46083Test() /// Checks that OPENROWSETBULK has at SINGLE_BLOB, SINGLE_CLOB, SINGLE_NCLOB or FORMATFILE option /// [TestMethod] - [Priority(0)] - [SqlStudioTestCategory(Category.UnitTest)] + [Priority(0)] + [SqlStudioTestCategory(Category.UnitTest)] public void SQL46082Test() { ParserTestUtils.ErrorTest90andAboveUntil150( @@ -4203,8 +4203,8 @@ public void SQL46082Test() /// Checks that CUBE, ROLLUP and GROUPING SETS are not allowed in GROUP BY ALL clause /// [TestMethod] - [Priority(0)] - [SqlStudioTestCategory(Category.UnitTest)] + [Priority(0)] + [SqlStudioTestCategory(Category.UnitTest)] public void SQL46084Test() { ParserTestUtils.ErrorTestAllParsers("SELECT c1 FROM t1 GROUP BY ALL c1 WITH CUBE", @@ -4225,8 +4225,8 @@ public void SQL46084Test() /// Checks that WITH CUBE and WITH ROLLUP are not allowed when CUBE, ROLLUP or GROUPING SETS specified /// [TestMethod] - [Priority(0)] - [SqlStudioTestCategory(Category.UnitTest)] + [Priority(0)] + [SqlStudioTestCategory(Category.UnitTest)] public void SQL46085Test() { TSql100Parser parser100 = new TSql100Parser(true); @@ -4272,8 +4272,8 @@ public void GroupByDistributedAggErrorTest() /// Checks that DISTINCT is not allowed in aggregate calls with OVER clause /// [TestMethod] - [Priority(0)] - [SqlStudioTestCategory(Category.UnitTest)] + [Priority(0)] + [SqlStudioTestCategory(Category.UnitTest)] public void SQL46086Test() { // User-defined aggregate @@ -4293,8 +4293,8 @@ public void SQL46086Test() /// Check that OUTPUT only allowed when passing variable to procedure /// [TestMethod] - [Priority(0)] - [SqlStudioTestCategory(Category.UnitTest)] + [Priority(0)] + [SqlStudioTestCategory(Category.UnitTest)] public void SQL46088Test() { ParserTestUtils.ErrorTestAllParsers("EXEC zzz 1 OUTPUT", @@ -4307,8 +4307,8 @@ public void SQL46088Test() /// Check that simple parameters ('value') are not allowed in procedure call after '@name = value' syntax /// [TestMethod] - [Priority(0)] - [SqlStudioTestCategory(Category.UnitTest)] + [Priority(0)] + [SqlStudioTestCategory(Category.UnitTest)] public void SQL46089Test() { ParserTestUtils.ErrorTestAllParsers("EXEC zzz 1, N'q', @v1 = 2, @v2 = 'a'"); @@ -4321,8 +4321,8 @@ public void SQL46089Test() [TestMethod] - [Priority(0)] - [SqlStudioTestCategory(Category.UnitTest)] + [Priority(0)] + [SqlStudioTestCategory(Category.UnitTest)] public void CreateServerAuditStatementErrorTest() { // CHECKS IF THE VALUE OF MAX_ROLLOVER_FILES IS LESS THAN 2147483647 @@ -4332,8 +4332,8 @@ public void CreateServerAuditStatementErrorTest() [TestMethod] - [Priority(0)] - [SqlStudioTestCategory(Category.UnitTest)] + [Priority(0)] + [SqlStudioTestCategory(Category.UnitTest)] public void CreateEndpointStatementErrorTest() { // CHECKS IF THE VALUE FOR THE OPTIONS AUTH_REALM AND DEFAULT_LOGON_DOMAIN ARE NON-EMPTY STRINGS @@ -4358,8 +4358,8 @@ public void CreateEndpointStatementErrorTest() [TestMethod] - [Priority(0)] - [SqlStudioTestCategory(Category.UnitTest)] + [Priority(0)] + [SqlStudioTestCategory(Category.UnitTest)] public void CreateIndexStatementErrorTest() { ParserTestUtils.ErrorTest100("CREATE INDEX ind1 ON t1(c1) WHERE (...f1.IDENTITYCOL IS NULL)", @@ -4380,8 +4380,8 @@ public void CreateIndexStatementErrorTest() /// Check that the value of MAXDOP index option is within range /// [TestMethod] - [Priority(0)] - [SqlStudioTestCategory(Category.UnitTest)] + [Priority(0)] + [SqlStudioTestCategory(Category.UnitTest)] public void SQL46091Test() { ParserTestUtils.ErrorTest90AndAbove("CREATE INDEX ind1 ON dbo.t1 (c1) WITH (MAXDOP = 40000)", @@ -4390,8 +4390,8 @@ public void SQL46091Test() [TestMethod] - [Priority(0)] - [SqlStudioTestCategory(Category.UnitTest)] + [Priority(0)] + [SqlStudioTestCategory(Category.UnitTest)] public void RouteOptionDuplicationErrorTest() { string duplicateServiceNameSyntax = @"CREATE ROUTE [Route1] WITH @@ -4399,7 +4399,7 @@ public void RouteOptionDuplicationErrorTest() SERVICE_NAME = '//Adventure-Works.com/Expenses'"; ParserTestUtils.ErrorTest90AndAbove( duplicateServiceNameSyntax, - new ParserErrorInfo(duplicateServiceNameSyntax.IndexOf(@"SERVICE_NAME",75), "SQL46049", "SERVICE_NAME")); + new ParserErrorInfo(duplicateServiceNameSyntax.IndexOf(@"SERVICE_NAME", 75), "SQL46049", "SERVICE_NAME")); ParserTestUtils.ErrorTest90AndAbove( @"CREATE ROUTE [Route1] WITH LIFETIME = 10, LIFETIME = 10", @@ -4408,8 +4408,8 @@ public void RouteOptionDuplicationErrorTest() [TestMethod] - [Priority(0)] - [SqlStudioTestCategory(Category.UnitTest)] + [Priority(0)] + [SqlStudioTestCategory(Category.UnitTest)] public void SQL46092Test() { ParserTestUtils.ErrorTestAllParsers("CREATE VIEW #v_temp AS SELECT * FROM sysobjects", @@ -4421,8 +4421,8 @@ public void SQL46092Test() [TestMethod] - [Priority(0)] - [SqlStudioTestCategory(Category.UnitTest)] + [Priority(0)] + [SqlStudioTestCategory(Category.UnitTest)] public void SQL46093Test() { ParserTestUtils.ErrorTestAllParsers("CREATE FUNCTION #fun_test (@param1 int) RETURNS TABLE AS RETURN (SELECT @param1 AS c1)", @@ -4436,8 +4436,8 @@ public void SQL46093Test() /// Check that the PERCENT value is between 0 and 100 /// [TestMethod] - [Priority(0)] - [SqlStudioTestCategory(Category.UnitTest)] + [Priority(0)] + [SqlStudioTestCategory(Category.UnitTest)] public void SQL46094Test() { TSql80Parser parser80 = new TSql80Parser(true); @@ -4461,8 +4461,8 @@ public void SQL46094Test() /// Check that the identifiers are less than 128 characters /// [TestMethod] - [Priority(0)] - [SqlStudioTestCategory(Category.UnitTest)] + [Priority(0)] + [SqlStudioTestCategory(Category.UnitTest)] public void SQL46095Test() { string longIdentifier = "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"; @@ -4480,8 +4480,8 @@ public void SQL46095Test() /// Check contained options are not specified on non-contained users /// [TestMethod] - [Priority(0)] - [SqlStudioTestCategory(Category.UnitTest)] + [Priority(0)] + [SqlStudioTestCategory(Category.UnitTest)] public void SQL46096Test() { ParserTestUtils.ErrorTest110("CREATE USER [BadUser] for login [login1] WITH password = 'PLACEHOLDER1'", @@ -4494,8 +4494,8 @@ public void SQL46096Test() [TestMethod] - [Priority(0)] - [SqlStudioTestCategory(Category.UnitTest)] + [Priority(0)] + [SqlStudioTestCategory(Category.UnitTest)] public void TableHintAsParamTest() { // This should be ok @@ -4512,8 +4512,8 @@ public void TableHintAsParamTest() [TestMethod] - [Priority(0)] - [SqlStudioTestCategory(Category.UnitTest)] + [Priority(0)] + [SqlStudioTestCategory(Category.UnitTest)] public void CreateMessageTypeStatementErrorTest() { // CREATE MESSAGE TYPE m1 VALIDATION = VALID_XML @@ -4530,8 +4530,8 @@ public void CreateMessageTypeStatementErrorTest() [TestMethod] - [Priority(0)] - [SqlStudioTestCategory(Category.UnitTest)] + [Priority(0)] + [SqlStudioTestCategory(Category.UnitTest)] public void SQL46098Test() { // Missing FILENAME option should cause an error... @@ -4574,8 +4574,8 @@ public void SQL46098Test() /// Check that frame bounds that are not supported by RANGE are not allowed /// [TestMethod] - [Priority(0)] - [SqlStudioTestCategory(Category.UnitTest)] + [Priority(0)] + [SqlStudioTestCategory(Category.UnitTest)] public void SQL46099Test() { ParserTestUtils.ErrorTest110("SELECT SUM(a) OVER (ORDER BY shuffled_id RANGE BETWEEN 1 FOLLOWING AND 1 PRECEDING) FROM table", @@ -4586,8 +4586,8 @@ public void SQL46099Test() /// Check that invalid frame specification inside Over clause is caught. /// [TestMethod] - [Priority(0)] - [SqlStudioTestCategory(Category.UnitTest)] + [Priority(0)] + [SqlStudioTestCategory(Category.UnitTest)] public void SQL46100Test() { ParserTestUtils.ErrorTest110("SELECT id, AVG(f) OVER ( ORDER BY shuffled_id ROWS BETWEEN 1 FOLLOWING AND 1 PRECEDING) FROM table", @@ -4610,8 +4610,8 @@ public void SQL46100Test() /// Check the max_duration value of low priority lock wait option. /// [TestMethod] - [Priority(0)] - [SqlStudioTestCategory(Category.UnitTest)] + [Priority(0)] + [SqlStudioTestCategory(Category.UnitTest)] public void SQL46101Test() { ParserTestUtils.ErrorTest120("ALTER INDEX idx1 ON t1 REBUILD WITH (ONLINE = ON (WAIT_AT_LOW_PRIORITY (MAX_DURATION = 71583, ABORT_AFTER_WAIT = NONE)))", @@ -4626,8 +4626,8 @@ public void SQL46101Test() /// Check the max_duration value of low priority lock wait option. /// [TestMethod] - [Priority(0)] - [SqlStudioTestCategory(Category.UnitTest)] + [Priority(0)] + [SqlStudioTestCategory(Category.UnitTest)] public void SQL46102Test() { ParserTestUtils.ErrorTest120("ALTER INDEX idx1 ON t1 REBUILD WITH (ONLINE = ON (WAIT_AT_LOW_PRIORITY (MAX_DURATION = 0, ABORT_AFTER_WAIT = SELF)))", @@ -4640,8 +4640,8 @@ public void SQL46102Test() [TestMethod] - [Priority(0)] - [SqlStudioTestCategory(Category.UnitTest)] + [Priority(0)] + [SqlStudioTestCategory(Category.UnitTest)] public void SecurityPolicyStatementErrorsTest() { // Three part names @@ -4770,8 +4770,8 @@ public void SecurityPolicyStatementErrorsTest() /// Negative tests for a table with REMOTE_DATA_ARCHIVE /// [TestMethod] - [Priority(0)] - [SqlStudioTestCategory(Category.UnitTest)] + [Priority(0)] + [SqlStudioTestCategory(Category.UnitTest)] public void RemoteDataArchiveTableNegativeTest() { // Create table with RDA @@ -4805,43 +4805,43 @@ public void RemoteDataArchiveTableNegativeTest() ParserTestUtils.ErrorTest130("ALTER TABLE T1 SET (REMOTE_DATA_ARCHIVE = ON (MIGRATION_STATE = ON))", new ParserErrorInfo(64, "SQL46010", "ON")); ParserTestUtils.ErrorTest130("ALTER TABLE T1 SET (REMOTE_DATA_ARCHIVE = ON (MIGRATION_STATE = DISABLE))", new ParserErrorInfo(64, "SQL46010", "DISABLE")); - ParserTestUtils.ErrorTest130("alter table t_stretch SET (REMOTE_DATA_ARCHIVE = OFF (MIGRATION_STATE = OUTBOUND, FILTER PREDICATE = dbo.f1(c1)))", new ParserErrorInfo(89, "SQL46010", "PREDICATE")); - ParserTestUtils.ErrorTest130("alter table t_stretch SET (REMOTE_DATA_ARCHIVE = OFF (MIGRATION_STATE ON, FILTER_PREDICATE = database.dbo.f1(c1)))", new ParserErrorInfo(70, "SQL46010", "ON")); - ParserTestUtils.ErrorTest130("alter table t_stretch SET (REMOTE_DATA_ARCHIVE = OFF (MIGRATION_STATE = OUTBOUND, FILTER_PREDICATE dbo.f1(c1)))", new ParserErrorInfo(99, "SQL46010", "dbo")); - ParserTestUtils.ErrorTest130("alter table t_stretch SET (REMOTE_DATA_ARCHIVE = OFF (MIIGRATION_STATE = OUTBOUND, FILTER_PREDICATE = dbo.f1(c1)))", new ParserErrorInfo(54, "SQL46005", "MIGRATION_STATE", "MIIGRATION_STATE")); - ParserTestUtils.ErrorTest130("alter table t_stretch SET (REMOTE_DATA_ARCHIVE = OFF (MIGRATION_STATE = OUTBOUND, FILTER_PREDICATE = NUL))", new ParserErrorInfo(82, "SQL46005", "MIGRATION_STATE", "FILTER_PREDICATE")); - ParserTestUtils.ErrorTest130("alter table t_stretch SET (REMOTE_DATA_ARCHIVE = OFF (MIGRATION_STATE = OUTBOUND, FIILTER_PREDICATE = dbo.f1(c1)))", new ParserErrorInfo(82, "SQL46005", "FILTER_PREDICATE", "FIILTER_PREDICATE")); - ParserTestUtils.ErrorTest130("alter table t_stretch SET (REMOTE_DATA_ARCHIVE = OFF (MIGRATIONSTATE = OUTBOUND, FILTER_PREDICATE = dbo.f1(c1)))", new ParserErrorInfo(54, "SQL46005", "MIGRATION_STATE", "MIGRATIONSTATE")); - ParserTestUtils.ErrorTest130("alter table t_stretch SET (REMOTE_DATA_ARCHIVE = OFF (MIGRATION_STATE = OUTBOUND, FILTERPREDICATE = dbo.f1(c1)))", new ParserErrorInfo(82, "SQL46005", "FILTER_PREDICATE", "FILTERPREDICATE")); - ParserTestUtils.ErrorTest130("alter table t_stretch SET (REMOTE_DATA_ARCHIVE = OFF (MIGRATION_SSTATE = OUTBOUND, FILTERR_PREDICATE = dbo.f1(c1)))", new ParserErrorInfo(54, "SQL46005", "MIGRATION_STATE", "MIGRATION_SSTATE")); - - ParserTestUtils.ErrorTest130("ALTER TABLE T1 SET (REMOTE_DATA_ARCHIVE = OFF (MIGRATION_STATE = MigrationOutbound))", new ParserErrorInfo(65, "SQL46010", "MigrationOutbound")); - ParserTestUtils.ErrorTest130("ALTER TABLE T1 SET (REMOTE_DATA_ARCHIVE = OFF (MIGRATION_STATE = MigrationState))", new ParserErrorInfo(65, "SQL46010", "MigrationState")); - ParserTestUtils.ErrorTest130("ALTER TABLE T1 SET (REMOTE_DATA_ARCHIVE = OFF (MIGRATION_STATE = OTBOUND))", new ParserErrorInfo(65, "SQL46010", "OTBOUND")); - ParserTestUtils.ErrorTest130("ALTER TABLE T1 SET (REMOTE_DATA_ARCHIVE = OFF (MIGRATION_STATE = OUT]BOUND))", new ParserErrorInfo(68, "SQL46010", "]")); - ParserTestUtils.ErrorTest130("ALTER TABLE T1 SET (REMOTE_DATA_ARCHIVE = OFF (MIGRATION_STATE = ))", new ParserErrorInfo(65, "SQL46010", ")")); - ParserTestUtils.ErrorTest130("ALTER TABLE T1 SET (REMOTE_DATA_ARCHIVE = OFF (MIGRATION_STATE = OFF))", new ParserErrorInfo(65, "SQL46010", "OFF")); - ParserTestUtils.ErrorTest130("ALTER TABLE T1 SET (REMOTE_DATA_ARCHIVE = OFF (MIGRATION_STATE = ON))", new ParserErrorInfo(65, "SQL46010", "ON")); - ParserTestUtils.ErrorTest130("ALTER TABLE T1 SET (REMOTE_DATA_ARCHIVE = OFF (MIGRATION_STATE = DISABLE))", new ParserErrorInfo(65, "SQL46010", "DISABLE")); - - ParserTestUtils.ErrorTest130("alter table t_stretch SET (REMOTE_DATA_ARCHIVE = OFF_WITHOUT_DATA_RECOVERY (MIGRATION_STATE = OUTBOUND, FILTER PREDICATE = dbo.f1(c1)))", new ParserErrorInfo(111, "SQL46010", "PREDICATE")); - ParserTestUtils.ErrorTest130("alter table t_stretch SET (REMOTE_DATA_ARCHIVE = OFF_WITHOUT_DATA_RECOVERY (MIGRATION_STATE ON, FILTER_PREDICATE = database.dbo.f1(c1)))", new ParserErrorInfo(92, "SQL46010", "ON")); - ParserTestUtils.ErrorTest130("alter table t_stretch SET (REMOTE_DATA_ARCHIVE = OFF_WITHOUT_DATA_RECOVERY (MIGRATION_STATE = OUTBOUND, FILTER_PREDICATE dbo.f1(c1)))", new ParserErrorInfo(121, "SQL46010", "dbo")); - ParserTestUtils.ErrorTest130("alter table t_stretch SET (REMOTE_DATA_ARCHIVE = OFF_WITHOUT_DATA_RECOVERY (MIIGRATION_STATE = OUTBOUND, FILTER_PREDICATE = dbo.f1(c1)))", new ParserErrorInfo(76, "SQL46005", "MIGRATION_STATE", "MIIGRATION_STATE")); - ParserTestUtils.ErrorTest130("alter table t_stretch SET (REMOTE_DATA_ARCHIVE = OFF_WITHOUT_DATA_RECOVERY (MIGRATION_STATE = OUTBOUND, FILTER_PREDICATE = NUL))", new ParserErrorInfo(104, "SQL46005", "MIGRATION_STATE", "FILTER_PREDICATE")); - ParserTestUtils.ErrorTest130("alter table t_stretch SET (REMOTE_DATA_ARCHIVE = OFF_WITHOUT_DATA_RECOVERY (MIGRATION_STATE = OUTBOUND, FIILTER_PREDICATE = dbo.f1(c1)))", new ParserErrorInfo(104, "SQL46005", "FILTER_PREDICATE", "FIILTER_PREDICATE")); - ParserTestUtils.ErrorTest130("alter table t_stretch SET (REMOTE_DATA_ARCHIVE = OFF_WITHOUT_DATA_RECOVERY (MIGRATIONSTATE = OUTBOUND, FILTER_PREDICATE = dbo.f1(c1)))", new ParserErrorInfo(76, "SQL46005", "MIGRATION_STATE", "MIGRATIONSTATE")); - ParserTestUtils.ErrorTest130("alter table t_stretch SET (REMOTE_DATA_ARCHIVE = OFF_WITHOUT_DATA_RECOVERY (MIGRATION_STATE = OUTBOUND, FILTERPREDICATE = dbo.f1(c1)))", new ParserErrorInfo(104, "SQL46005", "FILTER_PREDICATE", "FILTERPREDICATE")); - ParserTestUtils.ErrorTest130("alter table t_stretch SET (REMOTE_DATA_ARCHIVE = OFF_WITHOUT_DATA_RECOVERY (MIGRATION_SSTATE = OUTBOUND, FILTERR_PREDICATE = dbo.f1(c1)))", new ParserErrorInfo(76, "SQL46005", "MIGRATION_STATE", "MIGRATION_SSTATE")); - - ParserTestUtils.ErrorTest130("ALTER TABLE T1 SET (REMOTE_DATA_ARCHIVE = OFF_WITHOUT_DATA_RECOVERY (MIGRATION_STATE = MigrationOutbound))", new ParserErrorInfo(87, "SQL46010", "MigrationOutbound")); - ParserTestUtils.ErrorTest130("ALTER TABLE T1 SET (REMOTE_DATA_ARCHIVE = OFF_WITHOUT_DATA_RECOVERY (MIGRATION_STATE = MigrationState))", new ParserErrorInfo(87, "SQL46010", "MigrationState")); - ParserTestUtils.ErrorTest130("ALTER TABLE T1 SET (REMOTE_DATA_ARCHIVE = OFF_WITHOUT_DATA_RECOVERY (MIGRATION_STATE = OTBOUND))", new ParserErrorInfo(87, "SQL46010", "OTBOUND")); - ParserTestUtils.ErrorTest130("ALTER TABLE T1 SET (REMOTE_DATA_ARCHIVE = OFF_WITHOUT_DATA_RECOVERY (MIGRATION_STATE = OUT]BOUND))", new ParserErrorInfo(90, "SQL46010", "]")); - ParserTestUtils.ErrorTest130("ALTER TABLE T1 SET (REMOTE_DATA_ARCHIVE = OFF_WITHOUT_DATA_RECOVERY (MIGRATION_STATE = ))", new ParserErrorInfo(87, "SQL46010", ")")); - ParserTestUtils.ErrorTest130("ALTER TABLE T1 SET (REMOTE_DATA_ARCHIVE = OFF_WITHOUT_DATA_RECOVERY (MIGRATION_STATE = OFF))", new ParserErrorInfo(87, "SQL46010", "OFF")); - ParserTestUtils.ErrorTest130("ALTER TABLE T1 SET (REMOTE_DATA_ARCHIVE = OFF_WITHOUT_DATA_RECOVERY (MIGRATION_STATE = ON))", new ParserErrorInfo(87, "SQL46010", "ON")); - ParserTestUtils.ErrorTest130("ALTER TABLE T1 SET (REMOTE_DATA_ARCHIVE = OFF_WITHOUT_DATA_RECOVERY (MIGRATION_STATE = DISABLE))", new ParserErrorInfo(87, "SQL46010", "DISABLE")); + ParserTestUtils.ErrorTest130("alter table t_stretch SET (REMOTE_DATA_ARCHIVE = OFF (MIGRATION_STATE = OUTBOUND, FILTER PREDICATE = dbo.f1(c1)))", new ParserErrorInfo(89, "SQL46010", "PREDICATE")); + ParserTestUtils.ErrorTest130("alter table t_stretch SET (REMOTE_DATA_ARCHIVE = OFF (MIGRATION_STATE ON, FILTER_PREDICATE = database.dbo.f1(c1)))", new ParserErrorInfo(70, "SQL46010", "ON")); + ParserTestUtils.ErrorTest130("alter table t_stretch SET (REMOTE_DATA_ARCHIVE = OFF (MIGRATION_STATE = OUTBOUND, FILTER_PREDICATE dbo.f1(c1)))", new ParserErrorInfo(99, "SQL46010", "dbo")); + ParserTestUtils.ErrorTest130("alter table t_stretch SET (REMOTE_DATA_ARCHIVE = OFF (MIIGRATION_STATE = OUTBOUND, FILTER_PREDICATE = dbo.f1(c1)))", new ParserErrorInfo(54, "SQL46005", "MIGRATION_STATE", "MIIGRATION_STATE")); + ParserTestUtils.ErrorTest130("alter table t_stretch SET (REMOTE_DATA_ARCHIVE = OFF (MIGRATION_STATE = OUTBOUND, FILTER_PREDICATE = NUL))", new ParserErrorInfo(82, "SQL46005", "MIGRATION_STATE", "FILTER_PREDICATE")); + ParserTestUtils.ErrorTest130("alter table t_stretch SET (REMOTE_DATA_ARCHIVE = OFF (MIGRATION_STATE = OUTBOUND, FIILTER_PREDICATE = dbo.f1(c1)))", new ParserErrorInfo(82, "SQL46005", "FILTER_PREDICATE", "FIILTER_PREDICATE")); + ParserTestUtils.ErrorTest130("alter table t_stretch SET (REMOTE_DATA_ARCHIVE = OFF (MIGRATIONSTATE = OUTBOUND, FILTER_PREDICATE = dbo.f1(c1)))", new ParserErrorInfo(54, "SQL46005", "MIGRATION_STATE", "MIGRATIONSTATE")); + ParserTestUtils.ErrorTest130("alter table t_stretch SET (REMOTE_DATA_ARCHIVE = OFF (MIGRATION_STATE = OUTBOUND, FILTERPREDICATE = dbo.f1(c1)))", new ParserErrorInfo(82, "SQL46005", "FILTER_PREDICATE", "FILTERPREDICATE")); + ParserTestUtils.ErrorTest130("alter table t_stretch SET (REMOTE_DATA_ARCHIVE = OFF (MIGRATION_SSTATE = OUTBOUND, FILTERR_PREDICATE = dbo.f1(c1)))", new ParserErrorInfo(54, "SQL46005", "MIGRATION_STATE", "MIGRATION_SSTATE")); + + ParserTestUtils.ErrorTest130("ALTER TABLE T1 SET (REMOTE_DATA_ARCHIVE = OFF (MIGRATION_STATE = MigrationOutbound))", new ParserErrorInfo(65, "SQL46010", "MigrationOutbound")); + ParserTestUtils.ErrorTest130("ALTER TABLE T1 SET (REMOTE_DATA_ARCHIVE = OFF (MIGRATION_STATE = MigrationState))", new ParserErrorInfo(65, "SQL46010", "MigrationState")); + ParserTestUtils.ErrorTest130("ALTER TABLE T1 SET (REMOTE_DATA_ARCHIVE = OFF (MIGRATION_STATE = OTBOUND))", new ParserErrorInfo(65, "SQL46010", "OTBOUND")); + ParserTestUtils.ErrorTest130("ALTER TABLE T1 SET (REMOTE_DATA_ARCHIVE = OFF (MIGRATION_STATE = OUT]BOUND))", new ParserErrorInfo(68, "SQL46010", "]")); + ParserTestUtils.ErrorTest130("ALTER TABLE T1 SET (REMOTE_DATA_ARCHIVE = OFF (MIGRATION_STATE = ))", new ParserErrorInfo(65, "SQL46010", ")")); + ParserTestUtils.ErrorTest130("ALTER TABLE T1 SET (REMOTE_DATA_ARCHIVE = OFF (MIGRATION_STATE = OFF))", new ParserErrorInfo(65, "SQL46010", "OFF")); + ParserTestUtils.ErrorTest130("ALTER TABLE T1 SET (REMOTE_DATA_ARCHIVE = OFF (MIGRATION_STATE = ON))", new ParserErrorInfo(65, "SQL46010", "ON")); + ParserTestUtils.ErrorTest130("ALTER TABLE T1 SET (REMOTE_DATA_ARCHIVE = OFF (MIGRATION_STATE = DISABLE))", new ParserErrorInfo(65, "SQL46010", "DISABLE")); + + ParserTestUtils.ErrorTest130("alter table t_stretch SET (REMOTE_DATA_ARCHIVE = OFF_WITHOUT_DATA_RECOVERY (MIGRATION_STATE = OUTBOUND, FILTER PREDICATE = dbo.f1(c1)))", new ParserErrorInfo(111, "SQL46010", "PREDICATE")); + ParserTestUtils.ErrorTest130("alter table t_stretch SET (REMOTE_DATA_ARCHIVE = OFF_WITHOUT_DATA_RECOVERY (MIGRATION_STATE ON, FILTER_PREDICATE = database.dbo.f1(c1)))", new ParserErrorInfo(92, "SQL46010", "ON")); + ParserTestUtils.ErrorTest130("alter table t_stretch SET (REMOTE_DATA_ARCHIVE = OFF_WITHOUT_DATA_RECOVERY (MIGRATION_STATE = OUTBOUND, FILTER_PREDICATE dbo.f1(c1)))", new ParserErrorInfo(121, "SQL46010", "dbo")); + ParserTestUtils.ErrorTest130("alter table t_stretch SET (REMOTE_DATA_ARCHIVE = OFF_WITHOUT_DATA_RECOVERY (MIIGRATION_STATE = OUTBOUND, FILTER_PREDICATE = dbo.f1(c1)))", new ParserErrorInfo(76, "SQL46005", "MIGRATION_STATE", "MIIGRATION_STATE")); + ParserTestUtils.ErrorTest130("alter table t_stretch SET (REMOTE_DATA_ARCHIVE = OFF_WITHOUT_DATA_RECOVERY (MIGRATION_STATE = OUTBOUND, FILTER_PREDICATE = NUL))", new ParserErrorInfo(104, "SQL46005", "MIGRATION_STATE", "FILTER_PREDICATE")); + ParserTestUtils.ErrorTest130("alter table t_stretch SET (REMOTE_DATA_ARCHIVE = OFF_WITHOUT_DATA_RECOVERY (MIGRATION_STATE = OUTBOUND, FIILTER_PREDICATE = dbo.f1(c1)))", new ParserErrorInfo(104, "SQL46005", "FILTER_PREDICATE", "FIILTER_PREDICATE")); + ParserTestUtils.ErrorTest130("alter table t_stretch SET (REMOTE_DATA_ARCHIVE = OFF_WITHOUT_DATA_RECOVERY (MIGRATIONSTATE = OUTBOUND, FILTER_PREDICATE = dbo.f1(c1)))", new ParserErrorInfo(76, "SQL46005", "MIGRATION_STATE", "MIGRATIONSTATE")); + ParserTestUtils.ErrorTest130("alter table t_stretch SET (REMOTE_DATA_ARCHIVE = OFF_WITHOUT_DATA_RECOVERY (MIGRATION_STATE = OUTBOUND, FILTERPREDICATE = dbo.f1(c1)))", new ParserErrorInfo(104, "SQL46005", "FILTER_PREDICATE", "FILTERPREDICATE")); + ParserTestUtils.ErrorTest130("alter table t_stretch SET (REMOTE_DATA_ARCHIVE = OFF_WITHOUT_DATA_RECOVERY (MIGRATION_SSTATE = OUTBOUND, FILTERR_PREDICATE = dbo.f1(c1)))", new ParserErrorInfo(76, "SQL46005", "MIGRATION_STATE", "MIGRATION_SSTATE")); + + ParserTestUtils.ErrorTest130("ALTER TABLE T1 SET (REMOTE_DATA_ARCHIVE = OFF_WITHOUT_DATA_RECOVERY (MIGRATION_STATE = MigrationOutbound))", new ParserErrorInfo(87, "SQL46010", "MigrationOutbound")); + ParserTestUtils.ErrorTest130("ALTER TABLE T1 SET (REMOTE_DATA_ARCHIVE = OFF_WITHOUT_DATA_RECOVERY (MIGRATION_STATE = MigrationState))", new ParserErrorInfo(87, "SQL46010", "MigrationState")); + ParserTestUtils.ErrorTest130("ALTER TABLE T1 SET (REMOTE_DATA_ARCHIVE = OFF_WITHOUT_DATA_RECOVERY (MIGRATION_STATE = OTBOUND))", new ParserErrorInfo(87, "SQL46010", "OTBOUND")); + ParserTestUtils.ErrorTest130("ALTER TABLE T1 SET (REMOTE_DATA_ARCHIVE = OFF_WITHOUT_DATA_RECOVERY (MIGRATION_STATE = OUT]BOUND))", new ParserErrorInfo(90, "SQL46010", "]")); + ParserTestUtils.ErrorTest130("ALTER TABLE T1 SET (REMOTE_DATA_ARCHIVE = OFF_WITHOUT_DATA_RECOVERY (MIGRATION_STATE = ))", new ParserErrorInfo(87, "SQL46010", ")")); + ParserTestUtils.ErrorTest130("ALTER TABLE T1 SET (REMOTE_DATA_ARCHIVE = OFF_WITHOUT_DATA_RECOVERY (MIGRATION_STATE = OFF))", new ParserErrorInfo(87, "SQL46010", "OFF")); + ParserTestUtils.ErrorTest130("ALTER TABLE T1 SET (REMOTE_DATA_ARCHIVE = OFF_WITHOUT_DATA_RECOVERY (MIGRATION_STATE = ON))", new ParserErrorInfo(87, "SQL46010", "ON")); + ParserTestUtils.ErrorTest130("ALTER TABLE T1 SET (REMOTE_DATA_ARCHIVE = OFF_WITHOUT_DATA_RECOVERY (MIGRATION_STATE = DISABLE))", new ParserErrorInfo(87, "SQL46010", "DISABLE")); // Alter table with invalid/ mis-spelled RDA // @@ -4865,15 +4865,15 @@ public void RemoteDataArchiveTableNegativeTest() // Alter table remote_data_archive with mis-spelled option // ParserTestUtils.ErrorTest130("alter table t_stretch SET (REMOTE_DATA_ARCHIVE = OF (MIGRATION_STATE = PAUSED)", new ParserErrorInfo(49, "SQL46010", "OF")); - ParserTestUtils.ErrorTest130("alter table t_stretch SET (REMOTE_DATA_ARCHIVE = OFF_WITHOUT_DATA_RECOVER (MIGRATION_STATE = PAUSED)", new ParserErrorInfo(49, "SQL46005", "OFF_WITHOUT_DATA_RECOVERY", "OFF_WITHOUT_DATA_RECOVER")); + ParserTestUtils.ErrorTest130("alter table t_stretch SET (REMOTE_DATA_ARCHIVE = OFF_WITHOUT_DATA_RECOVER (MIGRATION_STATE = PAUSED)", new ParserErrorInfo(49, "SQL46005", "OFF_WITHOUT_DATA_RECOVERY", "OFF_WITHOUT_DATA_RECOVER")); } /// /// Negative tests for a database with REMOTE_DATA_ARCHIVE /// [TestMethod] - [Priority(0)] - [SqlStudioTestCategory(Category.UnitTest)] + [Priority(0)] + [SqlStudioTestCategory(Category.UnitTest)] public void RemoteDataArchiveDatabaseNegativeTest() { ParserTestUtils.ErrorTest130("ALTER database db_test WITH SET REMOTE_DATA_ARCHIVE= OFF (SERVER = N'Test')", new ParserErrorInfo(15, "SQL46010", "db_test")); @@ -4901,8 +4901,8 @@ public void RemoteDataArchiveDatabaseNegativeTest() [TestMethod] - [Priority(0)] - [SqlStudioTestCategory(Category.UnitTest)] + [Priority(0)] + [SqlStudioTestCategory(Category.UnitTest)] public void CreateColumnStoreIndexNegativeTest() { // cannot create clustered index with filter predicate @@ -4936,8 +4936,8 @@ public void CreateColumnStoreIndexNegativeTest() [TestMethod] - [Priority(0)] - [SqlStudioTestCategory(Category.UnitTest)] + [Priority(0)] + [SqlStudioTestCategory(Category.UnitTest)] public void CreateExternalDataSourceNegativeTest() { // Create external data source keyword typos @@ -4977,10 +4977,10 @@ public void CreateExternalDataSourceNegativeTest() ParserTestUtils.ErrorTest130("CREATE EXTERNAL DATA SOURCE eds1 WITH (TYPE = SHARD_MAP_MANAGER, LOCATION = 'someServer', DATABASE_NAME = 'someDatabase', SHRD_MAP_NAME = 'someShardMap')", new ParserErrorInfo(122, "SQL46010", "SHRD_MAP_NAME")); ParserTestUtils.ErrorTest130("CREATE EXTERNAL DATA SOURCE eds1 WITH (TYPE = SHARD_MAP_MANAGER, LOCATION = 'someServer', DATABASE_NAME = 'someDatabase', SHARD_MAP_NAME 'someShardMap')", new ParserErrorInfo(122, "SQL46010", "SHARD_MAP_NAME")); - ParserTestUtils.ErrorTest130("CREATE EXTERNAL DATA SOURCE eds1 WITH (TYPE = RDBMS, LOCATION = 'someServer' DATABASE_NAME = 'someDatabase')", new ParserErrorInfo(77, "SQL46010", "DATABASE_NAME")); - ParserTestUtils.ErrorTest130("CREATE EXTERNAL DATA SOURCE eds1 WITH (TYPE = RDBMS, LOCATION = 'someServer', DATABASE_NAMES = 'someDatabase')", new ParserErrorInfo(78, "SQL46010", "DATABASE_NAMES")); - ParserTestUtils.ErrorTest130("CREATE EXTERNAL DATA SOURCE eds1 WITH (TYPE = RDBMS, LOCATION = 'someServer', DATABSE_NAME = 'someDatabase')", new ParserErrorInfo(78, "SQL46010", "DATABSE_NAME")); - ParserTestUtils.ErrorTest130("CREATE EXTERNAL DATA SOURCE eds1 WITH (TYPE = RDBMS, LOCATION = 'someServer', DATABASE_NAME 'someDatabase')", new ParserErrorInfo(78, "SQL46010", "DATABASE_NAME")); + ParserTestUtils.ErrorTest130("CREATE EXTERNAL DATA SOURCE eds1 WITH (TYPE = RDBMS, LOCATION = 'someServer' DATABASE_NAME = 'someDatabase')", new ParserErrorInfo(77, "SQL46010", "DATABASE_NAME")); + ParserTestUtils.ErrorTest130("CREATE EXTERNAL DATA SOURCE eds1 WITH (TYPE = RDBMS, LOCATION = 'someServer', DATABASE_NAMES = 'someDatabase')", new ParserErrorInfo(78, "SQL46010", "DATABASE_NAMES")); + ParserTestUtils.ErrorTest130("CREATE EXTERNAL DATA SOURCE eds1 WITH (TYPE = RDBMS, LOCATION = 'someServer', DATABSE_NAME = 'someDatabase')", new ParserErrorInfo(78, "SQL46010", "DATABSE_NAME")); + ParserTestUtils.ErrorTest130("CREATE EXTERNAL DATA SOURCE eds1 WITH (TYPE = RDBMS, LOCATION = 'someServer', DATABASE_NAME 'someDatabase')", new ParserErrorInfo(78, "SQL46010", "DATABASE_NAME")); // Missing required properties // @@ -4992,8 +4992,8 @@ public void CreateExternalDataSourceNegativeTest() ParserTestUtils.ErrorTest130("CREATE EXTERNAL DATA SOURCE eds1 WITH (TYPE = HADOP, LOCATION = 'protocol://ip_address:port', RESOURCE_MANAGER_LOCATION = 'ip_address:port', CREDENTIAL = cred1)", new ParserErrorInfo(46, "SQL46010", "HADOP")); ParserTestUtils.ErrorTest130("CREATE EXTERNAL DATA SOURCE eds1 WITH (TYPE = SHARD_MAP_MANGER, LOCATION = 'someServer', DATABASE_NAME = 'someDatabase', SHARD_MAP_NAME = 'someDatabase')", new ParserErrorInfo(46, "SQL46010", "SHARD_MAP_MANGER")); ParserTestUtils.ErrorTest130("CREATE EXTERNAL DATA SOURCE eds1 WITH (TYPE = 'SHARD_MAP_MANAGER', LOCATION = 'someServer', DATABASE_NAME = 'someDatabase', SHARD_MAP_NAME = 'someShardMap', CREDENTIAL = someCred)", new ParserErrorInfo(46, "SQL46010", "'SHARD_MAP_MANAGER'")); - ParserTestUtils.ErrorTest130("CREATE EXTERNAL DATA SOURCE eds1 WITH (TYPE = RDMBS, LOCATION = 'someServer', DATABASE_NAME = 'someDatabase')", new ParserErrorInfo(46, "SQL46010", "RDMBS")); - ParserTestUtils.ErrorTest130("CREATE EXTERNAL DATA SOURCE eds1 WITH (TYPE = 'RDBMS', LOCATION = 'someServer', DATABASE_NAME = 'someDatabase', CREDENTIAL = someCred)", new ParserErrorInfo(46, "SQL46010", "'RDBMS'")); + ParserTestUtils.ErrorTest130("CREATE EXTERNAL DATA SOURCE eds1 WITH (TYPE = RDMBS, LOCATION = 'someServer', DATABASE_NAME = 'someDatabase')", new ParserErrorInfo(46, "SQL46010", "RDMBS")); + ParserTestUtils.ErrorTest130("CREATE EXTERNAL DATA SOURCE eds1 WITH (TYPE = 'RDBMS', LOCATION = 'someServer', DATABASE_NAME = 'someDatabase', CREDENTIAL = someCred)", new ParserErrorInfo(46, "SQL46010", "'RDBMS'")); // Create external data source with incorrect data source location value // @@ -5010,17 +5010,17 @@ public void CreateExternalDataSourceNegativeTest() ParserTestUtils.ErrorTest130("CREATE EXTERNAL DATA SOURCE eds1 WITH (TYPE = SHARD_MAP_MANAGER, LOCATION = 'someServer', DATABASE_NAME = 'someDatabase', SHARD_MAP_NAME = someShardMap, CREDENTIAL = someCred)", new ParserErrorInfo(122, "SQL46010", "SHARD_MAP_NAME")); ParserTestUtils.ErrorTest130("CREATE EXTERNAL DATA SOURCE eds1 WITH (TYPE = SHARD_MAP_MANAGER, LOCATION = 'someServer', DATABASE_NAME = 'someDatabase', SHARD_MAP_NAME = 'someShardMap', CREDENTIAL = 'someCred')", new ParserErrorInfo(155, "SQL46010", "CREDENTIAL")); - // Create external rdbms data source with various incorrect values - // - ParserTestUtils.ErrorTest130("CREATE EXTERNAL DATA SOURCE eds1 WITH (TYPE = RDBMS, LOCATION = someServer, DATABASE_NAME = 'someDatabase', CREDENTIAL = someCred)", new ParserErrorInfo(64, "SQL46010", "someServer")); - ParserTestUtils.ErrorTest130("CREATE EXTERNAL DATA SOURCE eds1 WITH (TYPE = RDBMS, LOCATION = 'someServer', DATABASE_NAME = someDatabase, CREDENTIAL = someCred)", new ParserErrorInfo(78, "SQL46010", "DATABASE_NAME")); - ParserTestUtils.ErrorTest130("CREATE EXTERNAL DATA SOURCE eds1 WITH (TYPE = RDBMS, LOCATION = 'someServer', DATABASE_NAME = 'someDatabase', CREDENTIAL = 'someCred')", new ParserErrorInfo(110, "SQL46010", "CREDENTIAL")); + // Create external rdbms data source with various incorrect values + // + ParserTestUtils.ErrorTest130("CREATE EXTERNAL DATA SOURCE eds1 WITH (TYPE = RDBMS, LOCATION = someServer, DATABASE_NAME = 'someDatabase', CREDENTIAL = someCred)", new ParserErrorInfo(64, "SQL46010", "someServer")); + ParserTestUtils.ErrorTest130("CREATE EXTERNAL DATA SOURCE eds1 WITH (TYPE = RDBMS, LOCATION = 'someServer', DATABASE_NAME = someDatabase, CREDENTIAL = someCred)", new ParserErrorInfo(78, "SQL46010", "DATABASE_NAME")); + ParserTestUtils.ErrorTest130("CREATE EXTERNAL DATA SOURCE eds1 WITH (TYPE = RDBMS, LOCATION = 'someServer', DATABASE_NAME = 'someDatabase', CREDENTIAL = 'someCred')", new ParserErrorInfo(110, "SQL46010", "CREDENTIAL")); } [TestMethod] - [Priority(0)] - [SqlStudioTestCategory(Category.UnitTest)] + [Priority(0)] + [SqlStudioTestCategory(Category.UnitTest)] public void AlterExternalDataSourceNegativeTest() { // Alter external data source keyword typos @@ -5078,8 +5078,8 @@ public void AlterExternalDataSourceNegativeTest() [TestMethod] - [Priority(0)] - [SqlStudioTestCategory(Category.UnitTest)] + [Priority(0)] + [SqlStudioTestCategory(Category.UnitTest)] public void DropExternalDataSourceNegativeTest() { // Drop external data source keyword typos @@ -5097,8 +5097,8 @@ public void DropExternalDataSourceNegativeTest() [TestMethod] - [Priority(0)] - [SqlStudioTestCategory(Category.UnitTest)] + [Priority(0)] + [SqlStudioTestCategory(Category.UnitTest)] public void CreateExternalFileFormatNegativeTest() { // Create external file format keyword typos @@ -5218,8 +5218,8 @@ public void CreateExternalFileFormatNegativeTest() [TestMethod] - [Priority(0)] - [SqlStudioTestCategory(Category.UnitTest)] + [Priority(0)] + [SqlStudioTestCategory(Category.UnitTest)] public void DropExternalFileFormatNegativeTest() { // Drop external file format keyword typos @@ -5237,8 +5237,8 @@ public void DropExternalFileFormatNegativeTest() [TestMethod] - [Priority(0)] - [SqlStudioTestCategory(Category.UnitTest)] + [Priority(0)] + [SqlStudioTestCategory(Category.UnitTest)] public void CreateExternalTableNegativeTest() { // Create external table keyword typos @@ -5375,8 +5375,8 @@ public void CreateExternalTableCtasStatementErrorTest() } [TestMethod] - [Priority(0)] - [SqlStudioTestCategory(Category.UnitTest)] + [Priority(0)] + [SqlStudioTestCategory(Category.UnitTest)] public void DropExternalTableNegativeTest() { // Drop external table keyword typos @@ -5392,8 +5392,8 @@ public void DropExternalTableNegativeTest() [TestMethod] - [Priority(0)] - [SqlStudioTestCategory(Category.UnitTest)] + [Priority(0)] + [SqlStudioTestCategory(Category.UnitTest)] public void CreateUserFromExternalProviderNegativeTest() { // Drop external data source keyword typos @@ -5410,8 +5410,8 @@ public void CreateUserFromExternalProviderNegativeTest() [TestMethod] - [Priority(0)] - [SqlStudioTestCategory(Category.UnitTest)] + [Priority(0)] + [SqlStudioTestCategory(Category.UnitTest)] public void AlterTableAlterColumnOnlineTestsNegativeTest() { ParserTestUtils.ErrorTest130("ALTER TABLE t1 ALTER COLUMN c1 VARCHAR (20) WITH (ONLINE2 = ON);", @@ -5434,8 +5434,8 @@ public void AlterTableAlterColumnOnlineTestsNegativeTest() [TestMethod] - [Priority(0)] - [SqlStudioTestCategory(Category.UnitTest, Feature.AlwaysEncrypted)] + [Priority(0)] + [SqlStudioTestCategory(Category.UnitTest, Feature.AlwaysEncrypted)] public void AlwaysEncryptedNegativeTest() { @@ -5483,7 +5483,7 @@ DROP VALUE ALGORITHM = 'RSA_OAEP', ENCRYPTED_VALUE = 0x016E000001630075007200720065006E00740075007300650072002F006D0079002F0064006500650063006200660034006100340031003000380034006200350033003200360066003200630062006200350030003600380065003900620061003000320030003600610037003800310066001DDA6134C3B73A90D349C8905782DD819B428162CF5B051639BA46EC69A7C8C8F81591A92C395711493B25DCBCCC57836E5B9F17A0713E840721D098F3F8E023ABCDFE2F6D8CC4339FC8F88630ED9EBADA5CA8EEAFA84164C1095B12AE161EABC1DF778C07F07D413AF1ED900F578FC00894BEE705EAC60F4A5090BBE09885D2EFE1C915F7B4C581D9CE3FDAB78ACF4829F85752E9FC985DEB8773889EE4A1945BD554724803A6F5DC0A2CD5EFE001ABED8D61E8449E4FAA9E4DD392DA8D292ECC6EB149E843E395CDE0F98D04940A28C4B05F747149B34A0BAEC04FFF3E304C84AF1FF81225E615B5F94E334378A0A888EF88F4E79F66CB377E3C21964AACB5049C08435FE84EEEF39D20A665C17E04898914A85B3DE23D56575EBC682D154F4F15C37723E04974DB370180A9A579BC84F6BC9B5E7C223E5CBEE721E57EE07EFDCC0A3257BBEBF9ADFFB00DBF7EF682EC1C4C47451438F90B4CF8DA709940F72CFDC91C6EB4E37B4ED7E2385B1FF71B28A1D2669FBEB18EA89F9D391D2FDDEA0ED362E6A591AC64EF4AE31CA8766C259ECB77D01A7F5C36B8418F91C1BEADDD4491C80F0016B66421B4B788C55127135DA2FA625FB7FD195FB40D90A6C67328602ECAF3EC4F5894BFD84A99EB4753BE0D22E0D4DE6A0ADFEDC80EB1B556749B4A8AD00E73B329C95827AB91C0256347E85E3C5FD6726D0E1FE82C925D3DF4A9 );"; - ParserTestUtils.ErrorTest130(cekExtraParametersSyntax, new ParserErrorInfo(cekExtraParametersSyntax.IndexOf(@"CMK2,")+4, "SQL46010", ",")); + ParserTestUtils.ErrorTest130(cekExtraParametersSyntax, new ParserErrorInfo(cekExtraParametersSyntax.IndexOf(@"CMK2,") + 4, "SQL46010", ",")); // Drop column encryption key missing keyworkd // @@ -5528,8 +5528,8 @@ WITH VALUES [TestMethod] - [Priority(0)] - [SqlStudioTestCategory(Category.UnitTest)] + [Priority(0)] + [SqlStudioTestCategory(Category.UnitTest)] public void AlterDatabaseScopedCredentialNegativeTest() { @@ -5607,8 +5607,8 @@ public void AlterDatabaseScopedCredentialNegativeTest() [TestMethod] - [Priority(0)] - [SqlStudioTestCategory(Category.UnitTest)] + [Priority(0)] + [SqlStudioTestCategory(Category.UnitTest)] public void CreateDatabaseScopedCredentialNegativeTest() { @@ -5685,8 +5685,8 @@ public void CreateDatabaseScopedCredentialNegativeTest() [TestMethod] - [Priority(0)] - [SqlStudioTestCategory(Category.UnitTest)] + [Priority(0)] + [SqlStudioTestCategory(Category.UnitTest)] public void DropDatabaseScopedCredentialNegativeTest() { @@ -5716,45 +5716,45 @@ public void DropDatabaseScopedCredentialNegativeTest() [TestMethod] - [Priority(0)] - [SqlStudioTestCategory(Category.UnitTest)] - public void CreateMasterKeyNegativeTest() - { - // Keyword typos - ParserTestUtils.ErrorTest130("CREAT MASTER KEY", new ParserErrorInfo(6, "SQL46010", "MASTER")); - ParserTestUtils.ErrorTest130("CREATE MASTE KEY", new ParserErrorInfo(7, "SQL46010", "MASTE")); - ParserTestUtils.ErrorTest130("CREATE MASTER KY", new ParserErrorInfo(7, "SQL46010", "MASTER")); - ParserTestUtils.ErrorTest130("CREATE MASTER KEY BY PASSWD = N'Placeholder'", new ParserErrorInfo(18, "SQL46010", "BY")); + [Priority(0)] + [SqlStudioTestCategory(Category.UnitTest)] + public void CreateMasterKeyNegativeTest() + { + // Keyword typos + ParserTestUtils.ErrorTest130("CREAT MASTER KEY", new ParserErrorInfo(6, "SQL46010", "MASTER")); + ParserTestUtils.ErrorTest130("CREATE MASTE KEY", new ParserErrorInfo(7, "SQL46010", "MASTE")); + ParserTestUtils.ErrorTest130("CREATE MASTER KY", new ParserErrorInfo(7, "SQL46010", "MASTER")); + ParserTestUtils.ErrorTest130("CREATE MASTER KEY BY PASSWD = N'Placeholder'", new ParserErrorInfo(18, "SQL46010", "BY")); - // Missing keyword - ParserTestUtils.ErrorTest130("CREATE KEY ENCRYPTION BY PASSWORD = N'Placeholder'", new ParserErrorInfo(0, "SQL46010", "CREATE"), new ParserErrorInfo(7, "SQL46010", "KEY")); - ParserTestUtils.ErrorTest130("CREATE MASTER KEY ENCRYPTION = N'Placeholder'", new ParserErrorInfo(18, "SQL46010", "ENCRYPTION")); - ParserTestUtils.ErrorTest130("CREATE MASTER KEY ENCRYPTION PASSWORD = N'Placeholder'", new ParserErrorInfo(18, "SQL46010", "ENCRYPTION")); + // Missing keyword + ParserTestUtils.ErrorTest130("CREATE KEY ENCRYPTION BY PASSWORD = N'Placeholder'", new ParserErrorInfo(0, "SQL46010", "CREATE"), new ParserErrorInfo(7, "SQL46010", "KEY")); + ParserTestUtils.ErrorTest130("CREATE MASTER KEY ENCRYPTION = N'Placeholder'", new ParserErrorInfo(18, "SQL46010", "ENCRYPTION")); + ParserTestUtils.ErrorTest130("CREATE MASTER KEY ENCRYPTION PASSWORD = N'Placeholder'", new ParserErrorInfo(18, "SQL46010", "ENCRYPTION")); - // Missing password + // Missing password // [SuppressMessage("Microsoft.Security", "CS002:SecretInNextLine", Justification="No password in next line")] - ParserTestUtils.ErrorTest130("CREATE MASTER KEY ENCRYPTION BY PASSWORD = ", new ParserErrorInfo(43, "SQL46029", "=")); + ParserTestUtils.ErrorTest130("CREATE MASTER KEY ENCRYPTION BY PASSWORD = ", new ParserErrorInfo(43, "SQL46029", "=")); - // Missing equal sign, 2 equal signs - ParserTestUtils.ErrorTest130("CREATE MASTER KEY ENCRYPTION BY PASSWORD N'Placeholder'", new ParserErrorInfo(41, "SQL46010", "N'Placeholder'")); - ParserTestUtils.ErrorTest130("CREATE MASTER KEY ENCRYPTION BY PASSWORD == 'Placeholder'", new ParserErrorInfo(42, "SQL46010", "=")); + // Missing equal sign, 2 equal signs + ParserTestUtils.ErrorTest130("CREATE MASTER KEY ENCRYPTION BY PASSWORD N'Placeholder'", new ParserErrorInfo(41, "SQL46010", "N'Placeholder'")); + ParserTestUtils.ErrorTest130("CREATE MASTER KEY ENCRYPTION BY PASSWORD == 'Placeholder'", new ParserErrorInfo(42, "SQL46010", "=")); - // Improperly quoted password - ParserTestUtils.ErrorTest130("CREATE MASTER KEY ENCRYPTION BY PASSWORD N'Placeholder", new ParserErrorInfo(41, "SQL46030", "N'Placeholder")); - ParserTestUtils.ErrorTest130("CREATE MASTER KEY ENCRYPTION BY PASSWORD Placeholder'", new ParserErrorInfo(52, "SQL46030", "'")); + // Improperly quoted password + ParserTestUtils.ErrorTest130("CREATE MASTER KEY ENCRYPTION BY PASSWORD N'Placeholder", new ParserErrorInfo(41, "SQL46030", "N'Placeholder")); + ParserTestUtils.ErrorTest130("CREATE MASTER KEY ENCRYPTION BY PASSWORD Placeholder'", new ParserErrorInfo(52, "SQL46030", "'")); - // Extra stuff after statement - ParserTestUtils.ErrorTest130("CREATE MASTER KEY CREATE", new ParserErrorInfo(18, "SQL46010", "CREATE")); - ParserTestUtils.ErrorTest130("CREATE MASTER KEY foobar", new ParserErrorInfo(18, "SQL46010", "foobar")); - ParserTestUtils.ErrorTest130("CREATE MASTER KEY ENCRYPTION BY PASSWORD = N'Placeholder' KEY", new ParserErrorInfo(58, "SQL46010", "KEY")); - } + // Extra stuff after statement + ParserTestUtils.ErrorTest130("CREATE MASTER KEY CREATE", new ParserErrorInfo(18, "SQL46010", "CREATE")); + ParserTestUtils.ErrorTest130("CREATE MASTER KEY foobar", new ParserErrorInfo(18, "SQL46010", "foobar")); + ParserTestUtils.ErrorTest130("CREATE MASTER KEY ENCRYPTION BY PASSWORD = N'Placeholder' KEY", new ParserErrorInfo(58, "SQL46010", "KEY")); + } /// /// Negative tests for CREATE OR ALTER statements /// [TestMethod] - [Priority(0)] - [SqlStudioTestCategory(Category.UnitTest)] + [Priority(0)] + [SqlStudioTestCategory(Category.UnitTest)] public void CreateOrAlterNegativeTest() { // CREATE OR ALTER FUNCTIONS @@ -5794,8 +5794,8 @@ public void CreateOrAlterNegativeTest() /// Trim built-in negative tests. /// [TestMethod] - [Priority(0)] - [SqlStudioTestCategory(Category.UnitTest)] + [Priority(0)] + [SqlStudioTestCategory(Category.UnitTest)] public void TrimBuiltInNegativeTest() { ParserTestUtils.ErrorTest140("SELECT TRIM(' TestString ';", new ParserErrorInfo(26, "SQL46010", ";")); @@ -6104,7 +6104,7 @@ INNER JOIN WHEN NOT MATCHED BY SOURCE THEN DELETE OUTPUT inserted.*, deleted.*;"; // Typo in the Match Clause. // - ParserTestUtils.ErrorTest150(query2, new ParserErrorInfo(query2.IndexOf("-Dog")+1, "SQL46010", "Dog")); + ParserTestUtils.ErrorTest150(query2, new ParserErrorInfo(query2.IndexOf("-Dog") + 1, "SQL46010", "Dog")); } [TestMethod] @@ -6563,9 +6563,9 @@ public void CopyCommandInvalidSyntaxTest() ParserTestUtils.ErrorTest140(invalidToSyntax, new ParserErrorInfo(10, "SQL46010", "FROM")); ParserTestUtils.ErrorTest150(invalidToSyntax, new ParserErrorInfo(10, "SQL46010", "FROM")); - ParserTestUtils.ErrorTest130(invalidOptionSyntax, new ParserErrorInfo(invalidOptionSyntax.IndexOf(@"FIELDTERMINATOR,")+15, "SQL46010", ",")); - ParserTestUtils.ErrorTest140(invalidOptionSyntax, new ParserErrorInfo(invalidOptionSyntax.IndexOf(@"FIELDTERMINATOR,")+15, "SQL46010", ",")); - ParserTestUtils.ErrorTest150(invalidOptionSyntax, new ParserErrorInfo(invalidOptionSyntax.IndexOf(@"FIELDTERMINATOR,")+15, "SQL46010", ",")); + ParserTestUtils.ErrorTest130(invalidOptionSyntax, new ParserErrorInfo(invalidOptionSyntax.IndexOf(@"FIELDTERMINATOR,") + 15, "SQL46010", ",")); + ParserTestUtils.ErrorTest140(invalidOptionSyntax, new ParserErrorInfo(invalidOptionSyntax.IndexOf(@"FIELDTERMINATOR,") + 15, "SQL46010", ",")); + ParserTestUtils.ErrorTest150(invalidOptionSyntax, new ParserErrorInfo(invalidOptionSyntax.IndexOf(@"FIELDTERMINATOR,") + 15, "SQL46010", ",")); ParserTestUtils.ErrorTest130(invalidIdentityOptionSyntax, new ParserErrorInfo(1, "SQL46130", "IDENTITY_INSERT")); @@ -6686,7 +6686,7 @@ public void OpenRowset160_CosmosDb() OBJECT = 'y', CONNECTION = 'a', CONNECTION = 'b') with (a varchar(10)) as cols"; ParserTestUtils.ErrorTest160(multipleParameterDeclarationSynax, - new ParserErrorInfo(multipleParameterDeclarationSynax.IndexOf(@"CONNECTION = 'a', CONNECTION")+18, "SQL46049", "CONNECTION")); + new ParserErrorInfo(multipleParameterDeclarationSynax.IndexOf(@"CONNECTION = 'a', CONNECTION") + 18, "SQL46049", "CONNECTION")); // Not all parameters provided // @@ -6785,24 +6785,88 @@ public void OpenRowset160_WithClause() string emptyWithClauseSyntax = @"SELECT * FROM OPENROWSET ('a', 'b', [dbo].[tbl]) WITH () AS a;"; - ParserTestUtils.ErrorTest160(emptyWithClauseSyntax, new ParserErrorInfo(emptyWithClauseSyntax.IndexOf(@"() AS a")+1, "SQL46010", ")")); + ParserTestUtils.ErrorTest160(emptyWithClauseSyntax, new ParserErrorInfo(emptyWithClauseSyntax.IndexOf(@"() AS a") + 1, "SQL46010", ")")); // Invalid WITH clause // string invalidWithClauseSyntax = @"SELECT * FROM OPENROWSET ('a', 'b', c) WITH (A = 5) AS a;"; - ParserTestUtils.ErrorTest160(invalidWithClauseSyntax, new ParserErrorInfo(invalidWithClauseSyntax.IndexOf(@"(A = 5)")+3, "SQL46010", "=")); + ParserTestUtils.ErrorTest160(invalidWithClauseSyntax, new ParserErrorInfo(invalidWithClauseSyntax.IndexOf(@"(A = 5)") + 3, "SQL46010", "=")); string invalidWithClause2Syntax = @"SELECT * FROM OPENROWSET ('a', 'b', [mytable]) WITH (a) AS a;"; - ParserTestUtils.ErrorTest160(invalidWithClause2Syntax, new ParserErrorInfo(invalidWithClause2Syntax.IndexOf(@"(a)")+2, "SQL46010", ")")); + ParserTestUtils.ErrorTest160(invalidWithClause2Syntax, new ParserErrorInfo(invalidWithClause2Syntax.IndexOf(@"(a)") + 2, "SQL46010", ")")); string invalidWithClause3Syntax = @"SELECT * FROM OPENROWSET ('a', 'b', [ab cd]) WITH a;"; ParserTestUtils.ErrorTest160(invalidWithClause3Syntax, new ParserErrorInfo(invalidWithClause3Syntax.IndexOf(@"a;"), "SQL46010", "a")); } + + /// + /// Negative tests for Scalar Functions in Fabric DW. + /// + [TestMethod] + [Priority(0)] + [SqlStudioTestCategory(Category.UnitTest)] + public void ScalarFunctionNegativeTestsFabricDW() + { + string scalarFunctionSyntax = @"CREATE OR ALTER FUNCTION dbo.FormatPrice + ( + @amount AS DECIMAL(10,2) = 0.0 + ) + RETURNS VARCHAR(20) + WITH ENCRYPTION, SCHEMABINDING, RETURNS NULL ON NULL INPUT, INLINE = ON + AS + BEGIN + RETURN '$' + CAST(@amount AS VARCHAR) + END; + "; + ParserTestUtils.ErrorTestFabricDW(scalarFunctionSyntax, new ParserErrorInfo(scalarFunctionSyntax.IndexOf("ENCRYPTION"), "SQL46026", "ENCRYPTION")); + + string scalarFunctionSyntax2 = @"CREATE OR ALTER FUNCTION dbo.ConcatNames + ( + @first AS NVARCHAR(50), + @last AS NVARCHAR(50) + ) + RETURNS NVARCHAR(101) + WITH RETURNS NULL ON NULL INPUT, INLINE = OFF, EXECUTE AS CALLER + AS + BEGIN + RETURN @first + ' ' + @last + END;"; + ParserTestUtils.ErrorTestFabricDW(scalarFunctionSyntax2, new ParserErrorInfo(scalarFunctionSyntax2.IndexOf("INLINE"), "SQL46010", "INLINE")); + + string scalarFunctionSyntax3 = @"CREATE OR ALTER FUNCTION dbo.CountProducts + ( + @ProductTable AS dbo.ProductType READONLY + ) + RETURNS INT + WITH SCHEMABINDING + AS + BEGIN + RETURN (SELECT COUNT(*) FROM @ProductTable) + END;"; + ParserTestUtils.ErrorTestFabricDW(scalarFunctionSyntax3, new ParserErrorInfo(scalarFunctionSyntax3.IndexOf("READONLY"), "SQL46026", "READONLY")); + + string scalarFunctionSyntax4 = @"CREATE OR ALTER FUNCTION sales.TotalSalesForRegion + ( + @RegionId AS sys.INT NULL, + @SalesData AS sales.SalesTableType READONLY + ) + RETURNS MONEY + WITH RETURNS NULL ON NULL INPUT + AS + BEGIN + RETURN ( + SELECT SUM(Amount) + FROM @SalesData + WHERE RegionId = @RegionId + ) + END;"; + ParserTestUtils.ErrorTestFabricDW(scalarFunctionSyntax4, new ParserErrorInfo(scalarFunctionSyntax4.IndexOf("NULL"), "SQL46010", "NULL")); + } } } diff --git a/Test/SqlDom/ParserTest.cs b/Test/SqlDom/ParserTest.cs index 73851cd..49f9fb7 100644 --- a/Test/SqlDom/ParserTest.cs +++ b/Test/SqlDom/ParserTest.cs @@ -50,6 +50,21 @@ public ParserTest( _resultFabricDW = resultFabricDW; } + public ParserTest( + string scriptFilename, + ParserTestOutput result80, ParserTestOutput result90, ParserTestOutput result100, + ParserTestOutput result110, ParserTestOutput result120, ParserTestOutput result130, + ParserTestOutput result140, ParserTestOutput result150, ParserTestOutput result160, + ParserTestOutput result170) + : this( + scriptFilename, + result80, result90, result100, + result110, result120, result130, + result140, result150, result160, + result170, result170) + { + } + public ParserTest( string scriptFilename, ParserTestOutput result80, ParserTestOutput result90, ParserTestOutput result100, @@ -60,7 +75,7 @@ public ParserTest( result80, result90, result100, result110, result120, result130, result140, result150, result160, - result160, result160) + result160) { } @@ -73,8 +88,7 @@ public ParserTest( scriptFilename, result80, result90, result100, result110, result120, result130, - result140, result150, result150, - result150, result150) + result140, result150, result150) { } @@ -474,7 +488,7 @@ public ParserTest170(string scriptFilename, int nErrors80, int nErrors90, int nE new ParserTestOutput(nErrors80), new ParserTestOutput(nErrors90), new ParserTestOutput(nErrors100), new ParserTestOutput(nErrors110), new ParserTestOutput(nErrors120), new ParserTestOutput(nErrors130), new ParserTestOutput(nErrors140), new ParserTestOutput(nErrors150), new ParserTestOutput(nErrors160), - new ParserTestOutput("Baselines170"), new ParserTestOutput(nErrors160)) + new ParserTestOutput("Baselines170")) { } public ParserTest170(string scriptFilename, ParserTestOutput output80, ParserTestOutput output90, ParserTestOutput output100, @@ -487,8 +501,7 @@ public ParserTest170(string scriptFilename, ParserTestOutput output80, ParserTes output140, output150, output160, - new ParserTestOutput("Baselines170"), - output160) + new ParserTestOutput("Baselines170")) { } public ParserTest170(string scriptFilename, params ParserErrorInfo[] errors80And90And100And110And120and130and140and150and160) diff --git a/Test/SqlDom/TestScripts/CloneTableTestsFabricDW.sql b/Test/SqlDom/TestScripts/CloneTableTestsFabricDW.sql new file mode 100644 index 0000000..32c3106 --- /dev/null +++ b/Test/SqlDom/TestScripts/CloneTableTestsFabricDW.sql @@ -0,0 +1,7 @@ +CREATE TABLE dbo.Employee AS CLONE OF dbo.EmployeeUSA; + +CREATE TABLE dbo.Employee AS CLONE OF dbo1.EmployeeUSA; + +CREATE TABLE dbo.Employee AS CLONE OF dbo.EmployeeUSA AT '2023-05-23T14:24:10.325'; + +CREATE TABLE dbo.Employee AS CLONE OF dbo1.EmployeeUSA AT '2023-05-23T14:24:10'; \ No newline at end of file diff --git a/Test/SqlDom/TestScripts/CreateAlterTableClusterByTestsFabricDW.sql b/Test/SqlDom/TestScripts/CreateAlterTableClusterByTestsFabricDW.sql new file mode 100644 index 0000000..05f8e02 --- /dev/null +++ b/Test/SqlDom/TestScripts/CreateAlterTableClusterByTestsFabricDW.sql @@ -0,0 +1,38 @@ +CREATE TABLE Customers ( + CustomerID INT , + Name NVARCHAR (100) +) +WITH (CLUSTER BY (CustomerID)); + + +GO +CREATE TABLE sales.Orders ( + OrderID INT , + CustomerID INT , + OrderDate DATE +) +WITH (CLUSTER BY (CustomerID, OrderDate), DISTRIBUTION = HASH(CustomerID)); + + +GO +CREATE TABLE Inventory ( + ProductID INT , + ProductName VARCHAR (255), + InStock BIT +) +WITH (CLUSTER BY (ProductID)); + + +GO +ALTER TABLE Customers + ADD (CLUSTER BY (CustomerID)); + + +GO +ALTER TABLE sales.Orders + ADD (CLUSTER BY (CustomerID, OrderDate)); + + +GO +ALTER TABLE Inventory + ADD (CLUSTER BY (ProductID)); \ No newline at end of file diff --git a/Test/SqlDom/TestScripts/CreateExternalTableStatementTestsFabricDW.sql b/Test/SqlDom/TestScripts/CreateExternalTableStatementTestsFabricDW.sql new file mode 100644 index 0000000..e2459a0 --- /dev/null +++ b/Test/SqlDom/TestScripts/CreateExternalTableStatementTestsFabricDW.sql @@ -0,0 +1,51 @@ +CREATE EXTERNAL TABLE t1 ( + c1 INT, + c2 CHAR (16) COLLATE Latin1_General_BIN2 NOT NULL, + c3 DATE, + c4 DECIMAL (5, 2) NULL, + c5 VARCHAR (50) COLLATE Latin1_General_BIN2 NULL +) + WITH ( + DATA_SOURCE = eds1, + LOCATION = '/test/test.txt', + FILE_FORMAT = eff1, + TABLE_OPTIONS = N'{"READ_OPTIONS": +["ALLOW_INCONSISTENT_READS"] +}' + ); + +CREATE EXTERNAL TABLE t2 ( + c1 INT, + c2 CHAR (16) COLLATE Latin1_General_BIN2 NOT NULL, + c3 DATE, + c4 DECIMAL (5, 2) NULL, + c5 VARCHAR (50) COLLATE Latin1_General_BIN2 NULL +) + WITH ( + DATA_SOURCE = eds1, + LOCATION = '/test/test.txt', + FILE_FORMAT = eff1, + TABLE_OPTIONS = N'randomstring��?Ƕ�' + ); + +CREATE EXTERNAL TABLE finance.Transactions2024 ( + TransactionID BIGINT, + AccountNumber VARCHAR (20), + TransactionDate DATE, + Amount FLOAT +) + WITH ( + LOCATION = 'https://storage.blob.core.windows.net/data/transactions2024/', + FILE_FORMAT = AvroFormat + ); + +CREATE EXTERNAL TABLE analytics.WebEvents ( + EventID INT, + UserID INT, + EventTime DATETIME, + EventType NVARCHAR (50) +) + WITH ( + LOCATION = '/logs/web/events/', + FILE_FORMAT = JsonFormat + ); \ No newline at end of file diff --git a/Test/SqlDom/TestScripts/CreateProcedureCloneTableTestsFabricDW.sql b/Test/SqlDom/TestScripts/CreateProcedureCloneTableTestsFabricDW.sql new file mode 100644 index 0000000..a6cf794 --- /dev/null +++ b/Test/SqlDom/TestScripts/CreateProcedureCloneTableTestsFabricDW.sql @@ -0,0 +1,21 @@ +CREATE PROCEDURE CloneEmployeeLocal +AS +CREATE TABLE dbo.Employee AS CLONE OF dbo.EmployeeUSA; + + +GO +CREATE PROCEDURE CloneEmployeeFromDbo1 +AS +CREATE TABLE dbo.Employee AS CLONE OF dbo1.EmployeeUSA; + + +GO +CREATE PROCEDURE CloneEmployeeAtTimestamp +AS +CREATE TABLE dbo.Employee AS CLONE OF dbo.EmployeeUSA AT '2023-05-23T14:24:10.325'; + + +GO +CREATE PROCEDURE CloneEmployeeFromDbo1AtTimestamp +AS +CREATE TABLE dbo.Employee AS CLONE OF dbo1.EmployeeUSA AT '2023-05-23T14:24:10'; \ No newline at end of file diff --git a/Test/SqlDom/TestScripts/ScalarFunctionIntTestsFabricDW.sql b/Test/SqlDom/TestScripts/ScalarFunctionIntTestsFabricDW.sql deleted file mode 100644 index d348a7e..0000000 --- a/Test/SqlDom/TestScripts/ScalarFunctionIntTestsFabricDW.sql +++ /dev/null @@ -1,11 +0,0 @@ -CREATE FUNCTION dbo.ConvertInput -(@MyValueIn INT) -RETURNS DECIMAL (10, 2) -AS -BEGIN - DECLARE @MyValueOut AS INT; - SET @MyValueOut = CAST (@MyValueIn AS DECIMAL (10, 2)); - RETURN (@MyValueOut); -END -GO -SELECT dbo.ConvertInput(15) AS 'ConvertedValue'; \ No newline at end of file diff --git a/Test/SqlDom/TestScripts/ScalarFunctionTestsFabricDW.sql b/Test/SqlDom/TestScripts/ScalarFunctionTestsFabricDW.sql new file mode 100644 index 0000000..fed9aef --- /dev/null +++ b/Test/SqlDom/TestScripts/ScalarFunctionTestsFabricDW.sql @@ -0,0 +1,53 @@ +CREATE OR ALTER FUNCTION dbo.GetFullName +(@firstName NVARCHAR (50)='John', @lastName NVARCHAR (50)) +RETURNS NVARCHAR (101) +WITH SCHEMABINDING, RETURNS NULL ON NULL INPUT +AS +BEGIN + RETURN @firstName + ' ' + @lastName; +END + + +GO +CREATE OR ALTER FUNCTION dbo.CalculateTotal +(@price DECIMAL (10, 2), @quantity INT=1) +RETURNS DECIMAL (10, 2) +WITH EXECUTE AS SELF, CALLED ON NULL INPUT +AS +BEGIN + RETURN @price * @quantity; +END + + +GO +CREATE OR ALTER FUNCTION sales.ComputeDiscount +(@amount FLOAT, @discount FLOAT) +RETURNS FLOAT +WITH RETURNS NULL ON NULL INPUT +AS +BEGIN + RETURN @amount - (@amount * @discount / 100); +END + + +GO +CREATE FUNCTION dbo.GetFullName +(@FirstName VARCHAR (50), @LastName VARCHAR (50)) +RETURNS VARCHAR (101) +AS +BEGIN + RETURN @FirstName + ' ' + @LastName; +END + +GO +CREATE FUNCTION dbo.ConvertInput +(@MyValueIn INT) +RETURNS DECIMAL (10, 2) +AS +BEGIN + DECLARE @MyValueOut AS INT; + SET @MyValueOut = CAST (@MyValueIn AS DECIMAL (10, 2)); + RETURN (@MyValueOut); +END +GO +SELECT dbo.ConvertInput(15) AS 'ConvertedValue'; \ No newline at end of file diff --git a/Test/SqlDom/TestScripts/ScalarFunctionVarCharTestsFabricDW.sql b/Test/SqlDom/TestScripts/ScalarFunctionVarCharTestsFabricDW.sql deleted file mode 100644 index 6c492a3..0000000 --- a/Test/SqlDom/TestScripts/ScalarFunctionVarCharTestsFabricDW.sql +++ /dev/null @@ -1,7 +0,0 @@ -CREATE FUNCTION dbo.GetFullName -(@FirstName VARCHAR (50), @LastName VARCHAR (50)) -RETURNS VARCHAR (101) -AS -BEGIN - RETURN @FirstName + ' ' + @LastName; -END \ No newline at end of file diff --git a/global.json b/global.json index d460a4b..17e2f86 100644 --- a/global.json +++ b/global.json @@ -1,6 +1,6 @@ { "sdk": { - "version": "8.0.409", + "version": "8.0.410", "rollForward": "latestMajor" }, "msbuild-sdks": { diff --git a/release-notes/170/170.0.44.0.md b/release-notes/170/170.44.0.md similarity index 84% rename from release-notes/170/170.0.44.0.md rename to release-notes/170/170.44.0.md index 8335231..d487dce 100644 --- a/release-notes/170/170.0.44.0.md +++ b/release-notes/170/170.44.0.md @@ -16,7 +16,7 @@ This update brings the below changes over the previous release: #### .NET Core ### New Features -* Adds a new Grammar File and Parser specifically targeting Fabric DW platform. +* Adds a new Grammar File and Parser specifically targeting Warehouse in Microsoft Fabric. ### Fixed diff --git a/release-notes/170/170.53.0.md b/release-notes/170/170.53.0.md new file mode 100644 index 0000000..c1789e5 --- /dev/null +++ b/release-notes/170/170.53.0.md @@ -0,0 +1,26 @@ +# Release Notes + +## Microsoft.SqlServer.TransactSql.ScriptDom 170.53.0 +This update brings the below changes over the previous release: + +### Target Platform Support + +* .NET Framework 4.7.2 (Windows x86, Windows x64) +* .NET 8 (Windows x86, Windows x64, Linux, macOS) +* .NET Standard 2.0+ (Windows x86, Windows x64, Linux, macOS) + +### Dependencies +* Updates.NET SDK to latest patch version 8.0.410 + +#### .NET Framework +#### .NET Core + +### New Features +* Adds support for table cloning via 'CREATE TABLE AS CLONE' syntax in Warehouse in Microsoft Fabric. +* Adds supports for the new syntax of Scalar Function in Warehouse in Microsoft Fabric. +* Adds support for a new table option for clustering columns during CREATE TABLE and ALTER TABLE statements in Warehouse in Microsoft Fabric. + +### Fixed + +### Changes +### Known Issues