Skip to content

Fails parsing ON CONFLICT when SELECT inside INSERT #124

@nene

Description

@nene

The following fails to parse (in all dialects except SQLite):

INSERT INTO foo (a)
SELECT id FROM foo join bar
ON CONFLICT DO NOTHING;

Wrapping select to parenthesis fixes it:

INSERT INTO foo (a)
(SELECT id FROM foo join bar)
ON CONFLICT DO NOTHING;

Or adding some other clause after FROM:

INSERT INTO foo (a)
SELECT id FROM foo join bar WHERE true
ON CONFLICT DO NOTHING;

Or selecting from just single table

INSERT INTO foo (a)
SELECT id FROM foo
ON CONFLICT DO NOTHING;

The problem seems to be that ON CONFLICT gets confused with JOIN ... ON syntax.

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