GeezerVison is showing github.com — [BUG] JSQLParser 4.5/4.6 : RDBMS : extension field exception · Issue #1765 · JSQLParser/JSqlParser
[BUG] JSQLParser 4.5/4.6 : RDBMS : extension field exception #1765
Description

Hello, this issue is normal in 4.4, and there is an inaccurate issue with dynamically adding fields in the insert statement in 4.5/4.6. May I know how to solve it? Thank you
Activity
manticore-projects commented on Apr 17, 2023
Greetings.
A lots of API has changed between 4.4 and 4.6 in order to streamline VALUES (..) statements.
The easiest way to figure out the AST is using JSQLFormatter, which can visualize the Tree of Java Objects:

You can try it online here
licai1210 commented on Apr 18, 2023
Hello, I need to add field values to existing SQL statements. May I know how to proceed? Thank you
manticore-projects commented on Apr 18, 2023
Recommendation: Checkout PR #1754 which will allow for
@Test
void testIssue1765() {
String sqlStr = "INSERT INTO mytable (col1)\n"
+ "VALUES ( 1 )";
Insert insert = new Insert()
.withTable( new Table("mytable") )
.withColumns( Arrays.asList(new Column("col1")) )
.withSelect( new Values().addExpressions(new LongValue(1)) );
assertStatementCanBeDeparsedAs(insert, sqlStr,true);
}manticore-projects commented on Apr 18, 2023
If you use Release 4.6 then your code will look like this:
@Test
void testIssue1765() {
String sqlStr = "INSERT INTO mytable (col1)\n"
+ "VALUES ( 1 )";
Select select = new Select()
.withSelectBody( new ValuesStatement().addExpressions( new LongValue(1)) );
Insert insert = new Insert()
.withTable( new Table("mytable") )
.withColumns( Arrays.asList(new Column("col1")) )
.withSelect( select );
assertStatementCanBeDeparsedAs(insert, sqlStr,true);
}
Metadata
Metadata
Development
No branches or pull requestsIssue actions