Skip to content

Parser rejects unquoted non-reserved keywords (year, period) in PRIMARY KEY lists that PostgreSQL accepts #1171

@thuanht76-maker

Description

@thuanht76-maker

squawk 2.51.0 emits error[syntax-error]: expected name on valid PostgreSQL 16 DDL where non-reserved keywords (year, period) appear unquoted inside a PRIMARY KEY (...) column list. PostgreSQL accepts these as column names.

Repro:

CREATE TABLE t (symbol text, period text, year int, quarter int,
  PRIMARY KEY (symbol, period, year, quarter));
-- → error[syntax-error]: expected name  (at `year`)

CREATE TABLE t2 (provider text, period text, PRIMARY KEY (provider, period));
-- → error[syntax-error]: expected name  (at `period`)

Expected: parse succeeds — year / period are non-reserved keywords, legal as identifiers per the PostgreSQL grammar.

Actual: error[syntax-error]: expected name.

Version: squawk 2.51.0, pg_version = "16.0".

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions