Skip to content

Conversation

@kyleconroy
Copy link
Collaborator

No description provided.

claude added 26 commits January 1, 2026 18:39
- Add GraphConnectionConstraintDefinition and GraphConnectionBetweenNodes AST types
- Add MergeStatement, MergeSpecification, and related AST types
- Add JoinParenthesisTableReference for parenthesized joins
- Add GraphMatchPredicate and GraphMatchCompositeExpression for graph patterns
- Implement inline INDEX parsing in CREATE TABLE
- Implement AS NODE/AS EDGE parsing for CREATE TABLE
- Implement $node_id and other pseudo column support in index INCLUDE clauses
- Implement CONNECTION constraint parsing in CREATE TABLE and ALTER TABLE
- Implement MERGE statement parsing with USING, ON, WHEN, and OUTPUT clauses
- Add USING, WHEN, OUTPUT to excluded alias keywords list

Enables GraphDbSyntaxTests150 and Baselines150_GraphDbSyntaxTests150 tests.
- Add FORMAT -> DataFileFormat mapping
- Add ESCAPECHAR -> EscapeChar mapping
- Add FIELDQUOTE -> FieldQuote mapping
- Fix CODEPAGE -> CodePage (proper casing)

Enables multiple BULK INSERT and OPENROWSET tests:
- Baselines140_BulkInsertStatementTests140
- Baselines140_OpenRowsetBulkStatementTests140
- Baselines150_BulkInsertStatementTests150
- BulkInsertStatementTests140
- BulkInsertStatementTests150
- OpenRowsetBulkStatementTests140
- Add StatisticsPartitionRange type for RESAMPLE ON PARTITIONS syntax
- Add AutoCreateStatisticsDatabaseOption for ALTER DATABASE SET with INCREMENTAL
- Parse RESAMPLE ON PARTITIONS (range, range TO range, ...) in UPDATE STATISTICS
- Handle INCREMENTAL = ON/OFF option casing (On/Off vs ON/OFF)
- Fix CREATE NONCLUSTERED INDEX dispatch to use regular index parser
- Add STATISTICS_INCREMENTAL to index option kind mapping
- Enable IncrementalStatsTests and Baselines120_IncrementalStatsTests
- Add SelectiveXmlIndexPromotedPath type with Name, Path, XQueryDataType, MaxLength, IsSingleton
- Add XmlNamespaces and XmlNamespacesAliasElement types for WITH XMLNAMESPACES
- Parse ALTER INDEX ... FOR (add/remove path = 'xpath' AS XQUERY 'type')
- Parse MAXLENGTH(n) and SINGLETON modifiers
- Parse WITH XMLNAMESPACES ('uri' AS alias) clause
- Enable AlterSelectiveXmlIndexStatementTests and Baselines110_AlterSelectiveXmlIndexStatementTests
- Add TRUSTWORTHY ON/OFF option in CREATE DATABASE WITH clause
- Add ENABLE_BROKER option (SimpleDatabaseOption type)
- SimpleDatabaseOption for options with only OptionKind (no state/value)
- Enable Baselines100_AlterCreateDatabaseStatementTests100
Support MAX_DURATION and ABORT_AFTER_WAIT options within WAIT_AT_LOW_PRIORITY
clause for table switch operations.
Support ON filegroup clause, STATUS, RETENTION, PROCEDURE_NAME,
MAX_QUEUE_READERS, and EXECUTE AS options for queue statements.
- Add OPTIMIZE_FOR_SEQUENTIAL_KEY to convertIndexOptionKind map for proper
  PascalCase conversion
- Handle ON/OFF as state options in UNIQUE constraint WITH clause parsing
  (fixes issue where ON keyword was passed to parseScalarExpression)
- Add DropServerAuditStatement type and parsing
- Add MaxSizeAuditTargetOption, MaxRolloverFilesAuditTargetOption,
  OnOffAuditTargetOption types for proper target option representation
- Add MODIFY NAME support for ALTER SERVER AUDIT
- Update parseAuditTargetOption to return correct option types
- Update marshal.go with JSON conversion for new types
- Add MaxDurationOption AST type for resumable index operations
- Parse MAX_DURATION = value [MINUTES] in index options
- Add JSON marshaling for MaxDurationOption
Add JsonForClause and JsonForClauseOption AST types to handle
FOR JSON AUTO, PATH, ROOT('name'), INCLUDE_NULL_VALUES, and
WITHOUT_ARRAY_WRAPPER options in SELECT statements.
Implement full parsing for CREATE PRIMARY XML INDEX and CREATE XML INDEX
statements including:
- Primary flag for primary vs secondary indexes
- XmlColumn field for the XML column being indexed
- SecondaryXmlIndexName and SecondaryXmlIndexType for secondary indexes
- USING XML INDEX ... FOR VALUE|PATH|PROPERTY syntax
- WITH clause index options support

Update PhaseOne test expectations to match canonical ScriptDom output.
Fixes parsing of patterns like `IF (XACT_STATE()) = -1` where a scalar
expression is parenthesized in a boolean context. The parser now returns
a BooleanScalarPlaceholder when encountering a closing paren without a
comparison operator, allowing the parent to handle it correctly.
Implements parsing for ALTER DATABASE ... SET REMOTE_DATA_ARCHIVE with:
- ON/OFF state and optional settings
- SERVER, CREDENTIAL, and FEDERATED_SERVICE_ACCOUNT settings
Adds parsing for:
- SetCommandStatement with SetFipsFlaggerCommand and GeneralSetCommand
- SET TRANSACTION ISOLATION LEVEL
- SET TEXTSIZE
- SET IDENTITY_INSERT
- SET ERRLVL
- Various SET commands: FIPS_FLAGGER, LANGUAGE, DATEFORMAT, DATEFIRST,
  DEADLOCK_PRIORITY, LOCK_TIMEOUT, CONTEXT_INFO, QUERY_GOVERNOR_COST_LIMIT
Implements parsing for:
- COMPATIBILITY_LEVEL = value as LiteralDatabaseOption
- CHANGE_TRACKING with ON/OFF states and optional details:
  - AUTO_CLEANUP = ON/OFF
  - CHANGE_RETENTION = value DAYS/HOURS/MINUTES
- Fixed VarDecimalStorageFormat option kind capitalization
- Add OffsetClause struct to QuerySpecification for OFFSET...FETCH syntax
- Add parseOffsetClause function for parsing OFFSET n ROWS FETCH NEXT m ROWS ONLY
- Add QueryDerivedTable AST type and parseDerivedTableReference function
- Add CROSS APPLY and OUTER APPLY support in table reference parsing
- Add JSON marshaling for OffsetClause and QueryDerivedTable
- Add RollupGroupingSpecification for GROUP BY ROLLUP (...) syntax
- Add CubeGroupingSpecification for GROUP BY CUBE (...) syntax
- Add CompositeGroupingSpecification for nested groupings like (c2, c3)
- Add WITH (DISTRIBUTED_AGG) hint support for individual columns
- Add JSON marshaling for new grouping specification types
- Add AS FILETABLE parsing in CREATE TABLE statements
- Add FILETABLE_DIRECTORY, FILETABLE_COLLATE_FILENAME options
- Add FILETABLE constraint name options (PRIMARY_KEY, STREAMID, FULLPATH)
- Add FEDERATED ON clause parsing for federation schemes
- Add ENABLE/DISABLE FILETABLE_NAMESPACE for ALTER TABLE
- Add FileTableDirectoryTableOption, FileTableCollateFileNameTableOption,
  FileTableConstraintNameTableOption, FederationScheme AST types
- Enable Baselines110_CreateAlterTableStatementTests110 test
…ests

These tests now pass with existing GROUP BY parsing implementation.
- Add AUTHORIZATION clause support
- Add FROM clause with file options (CONTENT, FILE_NAME, PLATFORM,
  PARAMETERS, ENVIRONMENT_VARIABLES)
- Support multiple file options
- Update ExternalLanguageFileOption AST type
- Enable CreateExternalLanguage150 and Baselines150_CreateExternalLanguage150 tests
- Add AUTHORIZATION clause support
- Add SET/ADD/REMOVE operation parsing
- Add file options (CONTENT, FILE_NAME, PLATFORM, PARAMETERS, ENVIRONMENT_VARIABLES)
- Add REMOVE PLATFORM option
- Update AlterExternalLanguageStatement AST type
- Enable AlterExternalLanguage150 and Baselines150_AlterExternalLanguage150 tests
- Add AtTimeZoneCall AST type for AT TIME ZONE expressions
- Add parsePostfixExpression to handle postfix operators
- Support chained AT TIME ZONE expressions
- Enable AtTimeZoneTests130 and Baselines130_AtTimeZoneTests130 tests
Support USING EXTERNAL pool_name syntax where the external pool
can appear first in the USING clause, enabling:
- USING EXTERNAL p_ext (external pool only)
- USING EXTERNAL p_ext, p_int (external first, then internal)
- USING p_int, EXTERNAL p_ext (internal first, then external)

Enables AlterWorkloadGroupStatementTests130 and Baselines130.
- Add SimpleAlterFullTextIndexAction for ENABLE/DISABLE/POPULATION actions
- Add AddAlterFullTextIndexAction for ADD (columns) action
- Add DropAlterFullTextIndexAction for DROP (columns) action
- Add FullTextIndexColumn type with TYPE COLUMN and LANGUAGE support
- Handle SET CHANGE_TRACKING with MANUAL/AUTO/OFF options
- Support WITH NO POPULATION clause

Enable AlterFulltextIndexStatementTests and SetCommandsAndMiscTests tests.
Mark PhaseOne_AlterFulltextIndexTest as todo due to type name mismatch.
@kyleconroy kyleconroy merged commit e268b33 into main Jan 1, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants