Microsoft.SqlServer.TransactSql.ScriptDom by Microsoft

<PackageReference Include="Microsoft.SqlServer.TransactSql.ScriptDom" Version="161.8817.2" />

.NET API 5,151,152 bytes

 TSql100ParserBaseInternal

using antlr; using System; using System.Collections.Generic; using System.Globalization; using System.Text.RegularExpressions; namespace Microsoft.SqlServer.TransactSql.ScriptDom { internal abstract class TSql100ParserBaseInternal : TSql90ParserBaseInternal { protected TSql100ParserBaseInternal(TokenBuffer tokenBuf, int k) : base(tokenBuf, k) { } protected TSql100ParserBaseInternal(ParserSharedInputState state, int k) : base(state, k) { } protected TSql100ParserBaseInternal(TokenStream lexer, int k) : base(lexer, k) { } public TSql100ParserBaseInternal(bool initialQuotedIdentifiersOn) : base(initialQuotedIdentifiersOn) { } protected AutoCleanupChangeTrackingOptionDetail CreateAutoCleanupDetail(IToken firstToken, IToken lastToken, ref bool autoCleanupEncountered) { TSql80ParserBaseInternal.Match(firstToken, "AUTO_CLEANUP"); if (autoCleanupEncountered) TSql80ParserBaseInternal.ThrowParseErrorException("SQL46050", firstToken, TSqlParserResource.SQL46050Message, firstToken.getText()); autoCleanupEncountered = true; AutoCleanupChangeTrackingOptionDetail autoCleanupChangeTrackingOptionDetail = base.FragmentFactory.CreateFragment<AutoCleanupChangeTrackingOptionDetail>(); TSql80ParserBaseInternal.UpdateTokenInfo(autoCleanupChangeTrackingOptionDetail, firstToken); TSql80ParserBaseInternal.UpdateTokenInfo(autoCleanupChangeTrackingOptionDetail, lastToken); autoCleanupChangeTrackingOptionDetail.IsOn = (lastToken.Type == 105); return autoCleanupChangeTrackingOptionDetail; } protected static SqlDataTypeOption ParseDataType100(string token) { switch (token.ToUpperInvariant()) { case "DATE": return SqlDataTypeOption.Date; case "TIME": return SqlDataTypeOption.Time; case "DATETIME2": return SqlDataTypeOption.DateTime2; case "DATETIMEOFFSET": return SqlDataTypeOption.DateTimeOffset; default: return TSql80ParserBaseInternal.ParseDataType(token); } } protected static void CheckBrokerPriorityParameterDuplication(int current, BrokerPriorityParameterType newOption, IToken token) { if ((current & (1 << (int)newOption)) != 0) TSql80ParserBaseInternal.ThrowIncorrectSyntaxErrorException(token); } protected static void UpdateBrokerPriorityEncounteredOptions(ref int encountered, BrokerPriorityParameter vBrokerPriorityParameter) { encountered |= 1 << (int)vBrokerPriorityParameter.ParameterType; } protected static void CheckBoundingBoxParameterDuplication(int current, BoundingBoxParameterType newOption, IToken token) { if ((current & (1 << (int)newOption)) != 0) TSql80ParserBaseInternal.ThrowIncorrectSyntaxErrorException(token); } protected static void UpdateBoundingBoxParameterEncounteredOptions(ref int encountered, BoundingBoxParameter vBoundingBoxParameter) { encountered |= 1 << (int)vBoundingBoxParameter.Parameter; } protected static void CheckIfValidSpatialIndexOptionValue(IndexAffectingStatement statement, IndexOption option) { IndexStateOption indexStateOption = option as IndexStateOption; if (indexStateOption != null && indexStateOption.OptionKind == IndexOptionKind.IgnoreDupKey && indexStateOption.OptionState == OptionState.On) TSql80ParserBaseInternal.ThrowWrongIndexOptionError(statement, indexStateOption); } protected static void SetFileStreamStorageOption(ColumnStorageOptions storageOptions, IToken fileStreamToken, DataTypeReference columnType, IndexAffectingStatement statementType) { if (statementType == IndexAffectingStatement.AlterTableAddElement || statementType == IndexAffectingStatement.CreateTable) { SqlDataTypeReference sqlDataTypeReference = columnType as SqlDataTypeReference; if (sqlDataTypeReference != null && sqlDataTypeReference.SqlDataTypeOption == SqlDataTypeOption.VarBinary && sqlDataTypeReference.Parameters.Count == 1 && sqlDataTypeReference.Parameters[0].LiteralType == LiteralType.Max) storageOptions.IsFileStream = true; else TSql80ParserBaseInternal.ThrowParseErrorException("SQL46051", fileStreamToken, TSqlParserResource.SQL46051Message, Array.Empty<string>()); } else TSql80ParserBaseInternal.ThrowIncorrectSyntaxErrorException(fileStreamToken); } protected static void SetSparseStorageOption(ColumnStorageOptions columnStorage, SparseColumnOption option, IToken token, IndexAffectingStatement statementType) { if (statementType == IndexAffectingStatement.AlterTableAddElement || statementType == IndexAffectingStatement.CreateTable || (uint)(statementType - 13) <= 1) { if (statementType == IndexAffectingStatement.CreateOrAlterFunction && option == SparseColumnOption.ColumnSetForAllSparseColumns) TSql80ParserBaseInternal.ThrowIncorrectSyntaxErrorException(token); columnStorage.SparseOption = option; } else TSql80ParserBaseInternal.ThrowIncorrectSyntaxErrorException(token); } protected static void CheckComparisonOperandForIndexFilter(ScalarExpression rightOperand, bool convertAllowed) { UnaryExpression unaryExpression = rightOperand as UnaryExpression; if (unaryExpression != null) CheckComparisonOperandForIndexFilter(unaryExpression.Expression, convertAllowed); else { Literal literal = rightOperand as Literal; if (literal == null || literal.LiteralType == LiteralType.Max) { ParenthesisExpression parenthesisExpression = rightOperand as ParenthesisExpression; if (parenthesisExpression != null) CheckComparisonOperandForIndexFilter(parenthesisExpression.Expression, convertAllowed); else { if (convertAllowed) { ConvertCall convertCall = rightOperand as ConvertCall; if (convertCall != null) { CheckComparisonOperandForIndexFilter(convertCall.Parameter, false); return; } CastCall castCall = rightOperand as CastCall; if (castCall != null) { CheckComparisonOperandForIndexFilter(castCall.Parameter, false); return; } } TSql80ParserBaseInternal.ThrowParseErrorException("SQL46059", rightOperand, TSqlParserResource.SQL46059Message, Array.Empty<string>()); } } } } protected static void CheckPartitionAllSpecifiedForIndexRebuild(PartitionSpecifier partitionSpecifier, IList<IndexOption> indexOptions) { if (partitionSpecifier == null) { foreach (IndexOption indexOption in indexOptions) { if (indexOption is DataCompressionOption && (indexOption as DataCompressionOption).PartitionRanges.Count > 0) TSql80ParserBaseInternal.ThrowParseErrorException("SQL46061", indexOption, TSqlParserResource.SQL46061Message, Array.Empty<string>()); else if (indexOption is XmlCompressionOption && (indexOption as XmlCompressionOption).PartitionRanges.Count > 0) { TSql80ParserBaseInternal.ThrowParseErrorException("SQL46061", indexOption, TSqlParserResource.SQL46061Message, Array.Empty<string>()); } } } } protected static void ThrowIfWrongGuidFormat(Literal literal) { string pattern = "[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}"; if (!Regex.IsMatch(literal.Value, pattern, RegexOptions.CultureInvariant)) TSql80ParserBaseInternal.ThrowParseErrorException("SQL46055", literal, TSqlParserResource.SQL46055Message, Array.Empty<string>()); } protected static void ThrowIfTooLargeAuditFileSize(Literal size, int shift) { if (!ulong.TryParse(size.Value, NumberStyles.Integer, CultureInfo.InvariantCulture, out ulong result) || result > ulong.MaxValue >> 20 + shift) TSql80ParserBaseInternal.ThrowParseErrorException("SQL46054", size, TSqlParserResource.SQL46054Message, Array.Empty<string>()); } protected static void CheckForCellsPerObjectValueRange(Literal value) { int result; if (!int.TryParse(value.Value, NumberStyles.Integer, CultureInfo.InvariantCulture, out result) || result < 1 || result > 8192) TSql80ParserBaseInternal.ThrowParseErrorException("SQL46073", value, TSqlParserResource.SQL46073Message, value.Value); } } }