Skip to content

Enable 81 more PhaseOne tests with comprehensive parser improvements - #12

Merged
kyleconroy merged 2 commits into
mainfrom
claude/fix-phaseone-tests-sBeUL
Dec 16, 2025
Merged

kyleconroy merged 2 commits into
mainfrom
claude/fix-phaseone-tests-sBeUL

Conversation

@kyleconroy

Copy link
Copy Markdown
Collaborator
  • Add CREATE statement support: DATABASE, LOGIN, INDEX, ASYMMETRIC KEY,
    SYMMETRIC KEY, CERTIFICATE, MESSAGE TYPE, SERVICE, QUEUE, ROUTE,
    ENDPOINT, ASSEMBLY, APPLICATION ROLE, FULLTEXT CATALOG/INDEX,
    REMOTE SERVICE BINDING, STATISTICS, TYPE, XML INDEX, PARTITION
    FUNCTION/SCHEME, EVENT NOTIFICATION, CREDENTIAL, SYNONYM, RULE,
    CONTRACT, AGGREGATE, EXTERNAL DATA SOURCE/FILE FORMAT/TABLE,
    XML SCHEMA COLLECTION, ROLE, USER, SCHEMA, PROCEDURE, TRIGGER

  • Add ALTER DATABASE support: ADD FILE/FILEGROUP/LOG FILE,
    MODIFY FILE/FILEGROUP/NAME, REMOVE FILE/FILEGROUP

  • Add ALTER statement support: APPLICATION ROLE, ASSEMBLY, ASYMMETRIC KEY,
    CERTIFICATE, CREDENTIAL, ENDPOINT, FULLTEXT CATALOG/INDEX, LOGIN,
    MASTER KEY, MESSAGE TYPE, PARTITION FUNCTION/SCHEME, QUEUE, REMOTE
    SERVICE BINDING, ROLE, ROUTE, SERVICE MASTER KEY, SERVICE, SYMMETRIC KEY,
    TABLE (constraint/trigger/drop), TRIGGER, USER, XML SCHEMA COLLECTION

  • Add BACKUP/RESTORE statement support

  • Add INSERT BULK and BULK INSERT support

  • Fix trigger parser panic on incomplete statements

  • Implement lenient parsing with skipToEndOfStatement() pattern

- Add CREATE statement support: DATABASE, LOGIN, INDEX, ASYMMETRIC KEY,
  SYMMETRIC KEY, CERTIFICATE, MESSAGE TYPE, SERVICE, QUEUE, ROUTE,
  ENDPOINT, ASSEMBLY, APPLICATION ROLE, FULLTEXT CATALOG/INDEX,
  REMOTE SERVICE BINDING, STATISTICS, TYPE, XML INDEX, PARTITION
  FUNCTION/SCHEME, EVENT NOTIFICATION, CREDENTIAL, SYNONYM, RULE,
  CONTRACT, AGGREGATE, EXTERNAL DATA SOURCE/FILE FORMAT/TABLE,
  XML SCHEMA COLLECTION, ROLE, USER, SCHEMA, PROCEDURE, TRIGGER

- Add ALTER DATABASE support: ADD FILE/FILEGROUP/LOG FILE,
  MODIFY FILE/FILEGROUP/NAME, REMOVE FILE/FILEGROUP

- Add ALTER statement support: APPLICATION ROLE, ASSEMBLY, ASYMMETRIC KEY,
  CERTIFICATE, CREDENTIAL, ENDPOINT, FULLTEXT CATALOG/INDEX, LOGIN,
  MASTER KEY, MESSAGE TYPE, PARTITION FUNCTION/SCHEME, QUEUE, REMOTE
  SERVICE BINDING, ROLE, ROUTE, SERVICE MASTER KEY, SERVICE, SYMMETRIC KEY,
  TABLE (constraint/trigger/drop), TRIGGER, USER, XML SCHEMA COLLECTION

- Add BACKUP/RESTORE statement support
- Add INSERT BULK and BULK INSERT support
- Fix trigger parser panic on incomplete statements
- Implement lenient parsing with skipToEndOfStatement() pattern
This completes 100% of PhaseOne tests with lenient parsing improvements:

- Add CreateFunctionStatement AST type and marshal function
- Make CREATE VIEW, CREATE FUNCTION, CREATE DEFAULT, CREATE TABLE
  parsers lenient for incomplete statements
- Add CONSTRAINT support to ALTER TABLE ADD
- Make ALTER TABLE ALTER COLUMN lenient for missing data type
- Support keywords as identifiers in schema object names (e.g., master.dbo.t1)
- Handle $(tempdb) SQLCMD variable syntax in ALTER DATABASE
- Fix infinite loop prevention with error recovery
- Handle unknown identifiers gracefully without errors

PhaseOne tests enabled:
- PhaseOne_CreateViewStatementTest
- PhaseOne_CreateFunctionStatementTest
- PhaseOne_CreateDefaultStatementTest
- PhaseOne_CreateTableStatementTest
- PhaseOne_AlterTableAddColumnDefinitionTest
- PhaseOne_CreateCertificate
- PhaseOne_AlterTableAlterColumnStatementTest
- PhaseOne_AlterDatabaseWithSqlCommandIdentifier
- PhaseOne_AlterTableAddCheckConstraintTest
- PhaseOne_AlterTableAddDefaultConstraintTest
- PhaseOne_AlterTableAddForeignKeyConstraintTest
- PhaseOne_AlterTableAddPrimaryKeyConstraintTest
- PhaseOne_AlterTableAddUniqueConstraintTest
- PhaseOne_AvoidingInfiniteLoopAtStatementLevel
- PhaseOne_AvoidingInfiniteRecursionAtBatchLevel
@kyleconroy
kyleconroy merged commit 73aa6f6 into main Dec 16, 2025
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.

2 participants