Skip to content

Postgres DEFAULT statement with "at time zone" causes entire CREATE statement to be omitted from results #112

@James-Matthew-Watson

Description

@James-Matthew-Watson

Description

When trying out simple-ddl-parser on some existing DDL, I attempted to parse 4 CREATE statements but I would only get 3 results. No exception was produced. By process of elimination, I found that this line was the source of the issue:

created_timestamp TIMESTAMPTZ NOT NULL DEFAULT (now() at time zone 'utc'),

However. with the following, the CREATE statement is parsed as expected:

created_timestamp TIMESTAMPTZ NOT NULL DEFAULT (now()),

Which suggests that the issue is around the "at time zone 'utc'" portion of the DFEAULT clause.

To Reproduce
Parse a CREATE statement including a TIMESTAMPTZ column with a DEFAULT clause including at time zone 'utc'. NOTE: the specific time zone used does not appear to matter.

Expected behavior
The CREATE statement should be parsed and included in parsing results. Although this statement is valid Postgres DDL, I would expect an exception when a statement is not parseable or at something other than just ignoring the CREATE statement. I did not see anything in the documentation about error handling, I apologize if I have overlooked that.

Example code

from simple_ddl_parser import DDLParser

parser = DDLParser("""
CREATE TABLE example (
  primary_key            SERIAL PRIMARY KEY,
  created_timestamp      TIMESTAMPTZ NOT NULL DEFAULT (now() at time zone 'utc')
);
""")

result = parser.run()
print(len(result))

for r in result:
    print(r["table_name"])

Expected output: 1 followed by the table name: 'example'
Actual output: 0

Desktop (please complete the following information):

  • OS: Windows10 (Gitbash/MINGW64)
  • Version 0.24.2

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions