JSqlParser icon indicating copy to clipboard operation
JSqlParser copied to clipboard

WITH ... AS ( DELETE ... RETURNING )

Open dfcatdivvy opened this issue 3 years ago • 3 comments

The following is valid in postgresql but gives an error in JSqlParser

WITH updated_rows AS (
    DELETE FROM documents WHERE something='something'
    RETURNING *
)
SELECT * FROM updated_rows LIMIT 1000;

Error:

net.sf.jsqlparser.JSQLParserException: net.sf.jsqlparser.parser.ParseException: Encountered unexpected token: "DELETE" "DELETE"
    at line 2, column 5.

Was expecting one of:

    "("
    "VALUE"
    "VALUES"
    "WITH"
    <K_SELECT>

	at net.sf.jsqlparser.parser.CCJSqlParserUtil.parseStatements(CCJSqlParserUtil.java:327)
	at net.sf.jsqlparser.parser.CCJSqlParserUtil.parseStatements(CCJSqlParserUtil.java:299)
	at net.sf.jsqlparser.parser.CCJSqlParserUtil.parseStatements(CCJSqlParserUtil.java:274)
	...

dfcatdivvy avatar Jun 01 '22 18:06 dfcatdivvy

Greetings!

Thank you for reporting, you are right: WITH ... AS ( ... ) has been implemented as WITH ... AS ( SELECT ... ) only (because this the normal use-case). Although the RETURNING clause will make DELETE and INSERT and UPDATE relevant.

A major refactoring was needed.

manticore-projects avatar Jun 03 '22 12:06 manticore-projects

Working now on it.

manticore-projects avatar Mar 27 '23 05:03 manticore-projects

Duplicate #1916

manticore-projects avatar Dec 14 '23 16:12 manticore-projects