Skip to content

SQL statement rendering problem #403

Closed
apache/datafusion-sqlparser-rs
#1317
@pchemguy

Description

@pchemguy

SQL statement

INSERT INTO currencies(id, name, to_rub)
VALUES (CAST(:id AS INT), :name, CAST(:to_rub AS NUMERIC))
ON CONFLICT(id) DO
UPDATE SET (name, to_rub) = (:name, CAST(:to_rub AS NUMERIC)) WHERE id = CAST(:id AS INT)
RETURNING
    'redirect'                      AS component,
    'currency_item_r.sql?id=' || id AS link;

throws an error

Failed to execute SQL statement:
INSERT INTO currencies (id, name, to_rub) VALUES (CAST(CAST(? AS TEXT) AS INT), CAST(? AS TEXT), CAST(CAST(? AS TEXT) AS NUMERIC)) ON CONFLICT(id) DO UPDATE SET name.to_rub = (CAST(? AS TEXT), CAST(CAST(? AS TEXT) AS NUMERIC)) WHERE id = CAST(CAST(? AS TEXT) AS INT) RETURNING 'redirect' AS component, 'currency_item_r.sql?id=' || id AS link;
                                                                                                                                                                     
line 1, character 165

error returned from database: (code: 1) near ".": syntax error (at statement byte offset 165)
(code: 1) near ".": syntax error (at statement byte offset 165)

Basically, the fragment

DO UPDATE SET (name, to_rub)

is transformed to

DO UPDATE SET name.to_rub

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions