From 9306d8d0a2ec4e9e4e76de48a575ba7935fa8679 Mon Sep 17 00:00:00 2001 From: Andreas Reichel Date: Tue, 7 Sep 2021 07:07:00 +0700 Subject: [PATCH 1/7] Implement caching of the Gradle and Maven files Provided by @YunLemon via PR #1307 --- .travis.yml | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 5652c04cf..581903065 100644 --- a/.travis.yml +++ b/.travis.yml @@ -4,4 +4,10 @@ jdk: - openjdk11 after_success: - - mvn clean cobertura:cobertura coveralls:report \ No newline at end of file + - mvn clean cobertura:cobertura coveralls:report + +cache: + directories: + - $HOME/.m2 + - $HOME/.gradle/caches/ + - $HOME/.gradle/wrapper/ \ No newline at end of file From 0ff381ce8dad090db751de87edc14e2dcb014082 Mon Sep 17 00:00:00 2001 From: Andreas Reichel Date: Tue, 7 Sep 2021 07:13:14 +0700 Subject: [PATCH 2/7] Fix CREATE TABLE AS SELECT ... UNION SELECT ... Provided by @fanchuo via PR #1309 --- src/main/jjtree/net/sf/jsqlparser/parser/JSqlParserCC.jjt | 5 +---- .../net/sf/jsqlparser/statement/create/CreateTableTest.java | 6 ++++++ 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/src/main/jjtree/net/sf/jsqlparser/parser/JSqlParserCC.jjt b/src/main/jjtree/net/sf/jsqlparser/parser/JSqlParserCC.jjt index 2942175bf..b9128bf80 100644 --- a/src/main/jjtree/net/sf/jsqlparser/parser/JSqlParserCC.jjt +++ b/src/main/jjtree/net/sf/jsqlparser/parser/JSqlParserCC.jjt @@ -4959,10 +4959,7 @@ CreateTable CreateTable(): // see https://docs.oracle.com/cd/B19306_01/server.102/b14200/statements_7002.htm#i2126725 // table properties , all these are optional [ rowMovement = RowMovement() { createTable.setRowMovement(rowMovement); }] - [ - ( LOOKAHEAD("(" SelectWithWithItems( ) ")") "(" select = SelectWithWithItems( ) { createTable.setSelect(select, true); } ")" - | select = SelectWithWithItems( ) { createTable.setSelect(select, false); } ) - ] + [ select = SelectWithWithItems( ) { createTable.setSelect(select, false); } ] [ ( LOOKAHEAD("(" Table() ")") "(" likeTable=Table() { createTable.setLikeTable(likeTable, true); } ")" | likeTable=Table() { createTable.setLikeTable(likeTable, false); } ) diff --git a/src/test/java/net/sf/jsqlparser/statement/create/CreateTableTest.java b/src/test/java/net/sf/jsqlparser/statement/create/CreateTableTest.java index c33019e1d..d8e6b7346 100644 --- a/src/test/java/net/sf/jsqlparser/statement/create/CreateTableTest.java +++ b/src/test/java/net/sf/jsqlparser/statement/create/CreateTableTest.java @@ -839,4 +839,10 @@ public void testCreateTableIssue1230() throws JSQLParserException { assertSqlCanBeParsedAndDeparsed( "CREATE TABLE TABLE_HISTORY (ID bigint generated by default as identity, CREATED_AT timestamp not null, TEXT varchar (255), primary key (ID))"); } + + @Test + public void testCreateUnionIssue1309() throws JSQLParserException { + assertSqlCanBeParsedAndDeparsed( + "CREATE TABLE temp.abc AS (SELECT c FROM t1) UNION (SELECT c FROM t2)"); + } } From 8a048415f4d659cf8d5081716fc87819477ce3aa Mon Sep 17 00:00:00 2001 From: Andreas Reichel Date: Tue, 7 Sep 2021 09:08:23 +0700 Subject: [PATCH 3/7] Fix #1316 Add more specific tests verifying the nature of the UpdateSets Allow "SELECT *" (without FROM) to parse, its a valid SELECT statement --- .../jsqlparser/statement/update/Update.java | 40 +++------- .../statement/update/UpdateSet.java | 30 ++++++-- .../util/deparser/UpdateDeParser.java | 45 ++--------- .../net/sf/jsqlparser/parser/JSqlParserCC.jjt | 56 ++++++++------ .../jsqlparser/statement/StatementsTest.java | 11 ++- .../statement/update/UpdateTest.java | 75 ++++++++++++------- .../select/oracle-tests/analytic_query10.sql | 3 +- .../select/oracle-tests/bindvar05.sql | 3 +- .../select/oracle-tests/case_when05.sql | 3 +- .../select/oracle-tests/condition01.sql | 3 +- .../select/oracle-tests/condition02.sql | 3 +- .../select/oracle-tests/condition03.sql | 3 +- .../select/oracle-tests/condition09.sql | 3 +- .../select/oracle-tests/condition12.sql | 3 +- .../select/oracle-tests/connect_by05.sql | 3 +- .../select/oracle-tests/for_update01.sql | 3 +- .../select/oracle-tests/for_update02.sql | 3 +- .../select/oracle-tests/for_update03.sql | 3 +- .../select/oracle-tests/for_update04.sql | 3 +- .../select/oracle-tests/for_update05.sql | 3 +- .../select/oracle-tests/function01.sql | 3 +- .../statement/select/oracle-tests/join08.sql | 3 +- .../statement/select/oracle-tests/join09.sql | 3 +- .../statement/select/oracle-tests/join10.sql | 3 +- .../oracle-tests/keywordasidentifier03.sql | 3 +- .../statement/select/oracle-tests/pivot02.sql | 3 +- .../statement/select/oracle-tests/pivot03.sql | 3 +- .../statement/select/oracle-tests/pivot04.sql | 3 +- .../statement/select/oracle-tests/pivot05.sql | 3 +- .../statement/select/oracle-tests/pivot06.sql | 3 +- .../statement/select/oracle-tests/pivot07.sql | 3 +- .../oracle-tests/pivot07_Parenthesis.sql | 3 +- .../statement/select/oracle-tests/pivot08.sql | 3 +- .../statement/select/oracle-tests/pivot12.sql | 3 +- .../select/oracle-tests/query_factoring06.sql | 3 +- .../select/oracle-tests/query_factoring09.sql | 3 +- .../select/oracle-tests/query_factoring12.sql | 3 +- .../statement/select/oracle-tests/set01.sql | 3 +- .../select/oracle-tests/simple02.sql | 3 +- .../select/oracle-tests/simple03.sql | 3 +- .../select/oracle-tests/simple04.sql | 3 +- .../select/oracle-tests/simple05.sql | 3 +- .../select/oracle-tests/simple06.sql | 3 +- .../statement/select/oracle-tests/union07.sql | 3 +- .../statement/select/oracle-tests/union08.sql | 3 +- .../statement/select/oracle-tests/union09.sql | 3 +- .../statement/select/oracle-tests/union10.sql | 3 +- 47 files changed, 213 insertions(+), 167 deletions(-) diff --git a/src/main/java/net/sf/jsqlparser/statement/update/Update.java b/src/main/java/net/sf/jsqlparser/statement/update/Update.java index 3dcd27059..fbfafd68d 100644 --- a/src/main/java/net/sf/jsqlparser/statement/update/Update.java +++ b/src/main/java/net/sf/jsqlparser/statement/update/Update.java @@ -183,12 +183,12 @@ public void setSelect(Select select) { @Deprecated public boolean isUseColumnsBrackets() { - return updateSets.get(0).usingBrackets; + return updateSets.get(0).usingBracketsForColumns; } @Deprecated public void setUseColumnsBrackets(boolean useColumnsBrackets) { - updateSets.get(0).usingBrackets = useColumnsBrackets; + updateSets.get(0).usingBracketsForColumns = useColumnsBrackets; } @Deprecated @@ -268,7 +268,7 @@ public String toString() { b.append(", "); } - if (updateSet.usingBrackets) { + if (updateSet.usingBracketsForColumns) { b.append("("); } @@ -279,46 +279,28 @@ public String toString() { b.append(updateSet.columns.get(i)); } - if (updateSet.usingBrackets) { + if (updateSet.usingBracketsForColumns) { b.append(")"); } b.append(" = "); + if (updateSet.usingBracketsForValues) { + b.append("("); + } + for (int i = 0; i < updateSet.expressions.size(); i++) { if (i > 0) { b.append(", "); } b.append(updateSet.expressions.get(i)); } + if (updateSet.usingBracketsForValues) { + b.append(")"); + } j++; } - -// if (!useSelect) { -// for (int i = 0; i < getColumns().size(); i++) { -// if (i != 0) { -// b.append(", "); -// } -// b.append(columns.get(i)).append(" = "); -// b.append(expressions.get(i)); -// } -// } else { -// if (useColumnsBrackets) { -// b.append("("); -// } -// for (int i = 0; i < getColumns().size(); i++) { -// if (i != 0) { -// b.append(", "); -// } -// b.append(columns.get(i)); -// } -// if (useColumnsBrackets) { -// b.append(")"); -// } -// b.append(" = "); -// b.append("(").append(select).append(")"); -// } if (fromItem != null) { b.append(" FROM ").append(fromItem); if (joins != null) { diff --git a/src/main/java/net/sf/jsqlparser/statement/update/UpdateSet.java b/src/main/java/net/sf/jsqlparser/statement/update/UpdateSet.java index 4426b87f8..3e6da1ba1 100644 --- a/src/main/java/net/sf/jsqlparser/statement/update/UpdateSet.java +++ b/src/main/java/net/sf/jsqlparser/statement/update/UpdateSet.java @@ -17,7 +17,8 @@ import java.util.Objects; public class UpdateSet { - protected boolean usingBrackets = false; + protected boolean usingBracketsForColumns = false; + protected boolean usingBracketsForValues = false; protected ArrayList columns = new ArrayList<>(); protected ArrayList expressions = new ArrayList<>(); @@ -34,12 +35,20 @@ public UpdateSet(Column column, Expression expression) { this.expressions.add(expression); } - public boolean isUsingBrackets() { - return usingBrackets; + public boolean isUsingBracketsForValues() { + return usingBracketsForValues; } - public void setUsingBrackets(boolean usingBrackets) { - this.usingBrackets = usingBrackets; + public void setUsingBracketsForValues(boolean usingBracketsForValues) { + this.usingBracketsForValues = usingBracketsForValues; + } + + public boolean isUsingBracketsForColumns() { + return usingBracketsForColumns; + } + + public void setUsingBracketsForColumns(boolean usingBracketsForColumns) { + this.usingBracketsForColumns = usingBracketsForColumns; } public ArrayList getColumns() { @@ -61,13 +70,18 @@ public void setExpressions(ArrayList expressions) { public void add(Column column, Expression expression) { columns.add(column); expressions.add(expression); - }; + } public void add(Column column) { columns.add(column); - }; + } + + public void add(Expression expression) { + expressions.add(expression); + } public void add(ExpressionList expressionList) { expressions.addAll(expressionList.getExpressions()); - }; + } + } diff --git a/src/main/java/net/sf/jsqlparser/util/deparser/UpdateDeParser.java b/src/main/java/net/sf/jsqlparser/util/deparser/UpdateDeParser.java index 01851ef5f..fdd168391 100644 --- a/src/main/java/net/sf/jsqlparser/util/deparser/UpdateDeParser.java +++ b/src/main/java/net/sf/jsqlparser/util/deparser/UpdateDeParser.java @@ -66,7 +66,7 @@ public void deParse(Update update) { buffer.append(", "); } - if (updateSet.isUsingBrackets()) { + if (updateSet.isUsingBracketsForColumns()) { buffer.append("("); } for (int i = 0; i < updateSet.getColumns().size(); i++) { @@ -75,56 +75,27 @@ public void deParse(Update update) { } updateSet.getColumns().get(i).accept(expressionVisitor); } - if (updateSet.isUsingBrackets()) { + if (updateSet.isUsingBracketsForColumns()) { buffer.append(")"); } buffer.append(" = "); + if (updateSet.isUsingBracketsForValues()) { + buffer.append("("); + } for (int i = 0; i < updateSet.getExpressions().size(); i++) { if (i > 0) { buffer.append(", "); } updateSet.getExpressions().get(i).accept(expressionVisitor); } + if (updateSet.isUsingBracketsForValues()) { + buffer.append(")"); + } j++; } - -// if (!update.isUseSelect()) { -// for (int i = 0; i < update.getColumns().size(); i++) { -// Column column = update.getColumns().get(i); -// column.accept(expressionVisitor); -// -// buffer.append(" = "); -// -// Expression expression = update.getExpressions().get(i); -// expression.accept(expressionVisitor); -// if (i < update.getColumns().size() - 1) { -// buffer.append(", "); -// } -// } -// } else { -// if (update.isUseColumnsBrackets()) { -// buffer.append("("); -// } -// for (int i = 0; i < update.getColumns().size(); i++) { -// if (i != 0) { -// buffer.append(", "); -// } -// Column column = update.getColumns().get(i); -// column.accept(expressionVisitor); -// } -// if (update.isUseColumnsBrackets()) { -// buffer.append(")"); -// } -// buffer.append(" = "); -// buffer.append("("); -// Select select = update.getSelect(); -// select.getSelectBody().accept(selectVisitor); -// buffer.append(")"); -// } - if (update.getFromItem() != null) { buffer.append(" FROM ").append(update.getFromItem()); if (update.getJoins() != null) { diff --git a/src/main/jjtree/net/sf/jsqlparser/parser/JSqlParserCC.jjt b/src/main/jjtree/net/sf/jsqlparser/parser/JSqlParserCC.jjt index b9128bf80..09d48d8f3 100644 --- a/src/main/jjtree/net/sf/jsqlparser/parser/JSqlParserCC.jjt +++ b/src/main/jjtree/net/sf/jsqlparser/parser/JSqlParserCC.jjt @@ -1114,6 +1114,7 @@ Update Update( List with ): UpdateSet updateSet = null; Column tableColumn = null; + SubSelect subSelect; Expression valueExpression = null; ExpressionList expressionList; Expression where = null; @@ -1130,31 +1131,44 @@ Update Update( List with ): ( - LOOKAHEAD(3) ( - tableColumn=Column() "=" valueExpression=SimpleExpression() { update.addUpdateSet(tableColumn, valueExpression); } - ("," tableColumn=Column() "=" valueExpression=SimpleExpression() { update.addUpdateSet(tableColumn, valueExpression); } )* - ) + LOOKAHEAD(3) tableColumn=Column() "=" valueExpression=SimpleExpression() { update.addUpdateSet(tableColumn, valueExpression); } + ("," tableColumn=Column() "=" valueExpression=SimpleExpression() { update.addUpdateSet(tableColumn, valueExpression); } )* | ( { updateSet = new UpdateSet(); update.addUpdateSet(updateSet); } - [ "(" { updateSet.setUsingBrackets(true); } ] + [ LOOKAHEAD(2) "(" { updateSet.setUsingBracketsForColumns(true); } ] tableColumn=Column() { updateSet.add(tableColumn); } - ("," tableColumn=Column() { updateSet.add(tableColumn); } )* - [ ")" ] + ( LOOKAHEAD(2) "," tableColumn=Column() { updateSet.add(tableColumn); } )* + [ LOOKAHEAD(2) ")" ] "=" - expressionList = ComplexExpressionList() { updateSet.add(expressionList); } ( - "," - tableColumn=Column() { updateSet = new UpdateSet(tableColumn); update.addUpdateSet(updateSet); } - ("," tableColumn=Column() { updateSet.add(tableColumn); } )* + LOOKAHEAD(3) subSelect=SubSelect() { updateSet.add(subSelect.withUseBrackets(false)); } + | + LOOKAHEAD(3) "(" expressionList = ComplexExpressionList() { updateSet.setUsingBracketsForValues(true); updateSet.add(expressionList); } ")" + | + valueExpression = Expression() { updateSet.add(valueExpression); } + ) + + ( + "," { updateSet = new UpdateSet(); update.addUpdateSet(updateSet); } + + [ LOOKAHEAD(2) "(" { updateSet.setUsingBracketsForColumns(true); } ] + tableColumn=Column() { updateSet.add(tableColumn); } + ( LOOKAHEAD(2) "," tableColumn=Column() { updateSet.add(tableColumn); } )* + [ LOOKAHEAD(2) ")" ] "=" - "(" - expressionList = ComplexExpressionList() { updateSet.add(expressionList); } - ")" + + ( + LOOKAHEAD(3) subSelect=SubSelect() { updateSet.add(subSelect.withUseBrackets(false)); } + | + LOOKAHEAD(3) "(" expressionList = ComplexExpressionList() { updateSet.setUsingBracketsForValues(true); updateSet.add(expressionList); } ")" + | + valueExpression = Expression() { updateSet.add(valueExpression); } + ) ) * ) ) @@ -1815,12 +1829,12 @@ PlainSelect PlainSelect() #PlainSelect: selectItems=SelectItemsList() [intoTables = IntoClause() { plainSelect.setIntoTables(intoTables); } ] - [ + [ LOOKAHEAD(2) fromItem=FromItem() joins=JoinsList() ] [ ksqlWindow=KSQLWindowClause() { plainSelect.setKsqlWindow(ksqlWindow); } ] - [ where=WhereClause() { plainSelect.setWhere(where); }] + [ LOOKAHEAD(2) where=WhereClause() { plainSelect.setWhere(where); }] [ oracleHierarchicalQueryClause=OracleHierarchicalQueryClause() { plainSelect.setOracleHierarchical(oracleHierarchicalQueryClause); } ] [ groupBy=GroupByColumnReferences() { plainSelect.setGroupByElement(groupBy); }] [ having=Having() { plainSelect.setHaving(having); }] @@ -1877,7 +1891,7 @@ SelectBody SetOperationList() #SetOperationList: { )* - [orderByElements=OrderByElements() {list.setOrderByElements(orderByElements);} ] + [ LOOKAHEAD(2) orderByElements=OrderByElements() {list.setOrderByElements(orderByElements);} ] [LOOKAHEAD() limit=LimitWithOffset() {list.setLimit(limit);} ] [LOOKAHEAD() offset = Offset() { list.setOffset(offset);} ] [LOOKAHEAD() fetch = Fetch() { list.setFetch(fetch);} ] @@ -1992,7 +2006,7 @@ List SelectItemsList(): SelectItem selectItem = null; } { - selectItem=SelectItem() { selectItemsList.add(selectItem); } ("," selectItem=SelectItem() { selectItemsList.add(selectItem); } )* + selectItem=SelectItem() { selectItemsList.add(selectItem); } ( LOOKAHEAD(2) "," selectItem=SelectItem() { selectItemsList.add(selectItem); } )* { return selectItemsList; } } @@ -2280,7 +2294,7 @@ List IntoClause(): Table table; } { - table=Table() { tables.add(table); } ("," table=Table() { tables.add(table); } )* + table=Table() { tables.add(table); } ( LOOKAHEAD(2) "," table=Table() { tables.add(table); } )* { return tables; } @@ -2432,7 +2446,7 @@ List JoinsList(): Join join = null; } { - (join=JoinerExpression() { joinsList.add(join); })* + ( LOOKAHEAD(2) join=JoinerExpression() { joinsList.add(join); })* { return joinsList; } } @@ -2655,7 +2669,7 @@ List OrderByElements(): } { [ ] orderByElement=OrderByElement() { orderByList.add(orderByElement); } - ("," orderByElement=OrderByElement() { orderByList.add(orderByElement); } )* + ( LOOKAHEAD(2) "," orderByElement=OrderByElement() { orderByList.add(orderByElement); } )* { return orderByList; } diff --git a/src/test/java/net/sf/jsqlparser/statement/StatementsTest.java b/src/test/java/net/sf/jsqlparser/statement/StatementsTest.java index 5ae82d230..4f8529e6b 100644 --- a/src/test/java/net/sf/jsqlparser/statement/StatementsTest.java +++ b/src/test/java/net/sf/jsqlparser/statement/StatementsTest.java @@ -67,7 +67,10 @@ public void testStatementsProblem() throws JSQLParserException { @Test public void testStatementsErrorRecovery() throws JSQLParserException, ParseException { - String sqls = "select * from mytable; select * from;"; + // "SELECT *" and "SELECT 1,2" are valid statements and so would return a correct SELECT object + // String sqls = "select * from mytable; select * from;"; + String sqls = "select * from mytable; select from;"; + CCJSqlParser parser = new CCJSqlParser(new StringProvider(sqls)); parser.setErrorRecovery(true); Statements parseStatements = parser.Statements(); @@ -75,6 +78,7 @@ public void testStatementsErrorRecovery() throws JSQLParserException, ParseExcep assertEquals(2, parseStatements.getStatements().size()); assertTrue(parseStatements.getStatements().get(0) instanceof Select); + assertNull(parseStatements.getStatements().get(1)); } @@ -93,7 +97,10 @@ public void testStatementsErrorRecovery2() throws JSQLParserException, ParseExce @Test public void testStatementsErrorRecovery3() throws JSQLParserException, ParseException { - String sqls = "select * from mytable; select * from;select * from mytable2"; + // "SELECT *" and "SELECT 1, 2" are valid SELECT statements + // String sqls = "select * from mytable; select * from;select * from mytable2"; + String sqls = "select * from mytable; select from;select * from mytable2"; + CCJSqlParser parser = new CCJSqlParser(new StringProvider(sqls)); parser.setErrorRecovery(true); Statements parseStatements = parser.Statements(); diff --git a/src/test/java/net/sf/jsqlparser/statement/update/UpdateTest.java b/src/test/java/net/sf/jsqlparser/statement/update/UpdateTest.java index 565cd493a..8476b9bb1 100644 --- a/src/test/java/net/sf/jsqlparser/statement/update/UpdateTest.java +++ b/src/test/java/net/sf/jsqlparser/statement/update/UpdateTest.java @@ -20,6 +20,9 @@ import static net.sf.jsqlparser.test.TestUtils.*; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; + +import net.sf.jsqlparser.parser.CCJSqlParserUtil; +import org.junit.Assert; import org.junit.Test; public class UpdateTest { @@ -191,44 +194,58 @@ public void testWith() throws JSQLParserException { @Test public void testUpdateSetsIssue1316() throws JSQLParserException { - String statement = + String sqlStr = "update test\n" + "set (a, b) = (select '1', '2')"; - assertSqlCanBeParsedAndDeparsed(statement, true); + assertSqlCanBeParsedAndDeparsed(sqlStr, true); + + sqlStr = + "update test\n" + + "set a = '1'" + + " , b = '2'"; + assertSqlCanBeParsedAndDeparsed(sqlStr, true); - statement = + sqlStr = "update test\n" + "set (a, b) = ('1', '2')"; - assertSqlCanBeParsedAndDeparsed(statement, true); + assertSqlCanBeParsedAndDeparsed(sqlStr, true); - statement = + sqlStr = "update test\n" + - "set (a, b) = values ('1', '2')"; - assertSqlCanBeParsedAndDeparsed(statement, true); + "set (a, b) = (values ('1', '2'))"; + assertSqlCanBeParsedAndDeparsed(sqlStr, true); - statement = + sqlStr = "update test\n" + "set (a, b) = (1, (select 2))"; - assertSqlCanBeParsedAndDeparsed(statement, true); - - statement = - "UPDATE\n" + - "prpjpaymentbill b\n" + - "SET\n" + - "(\n" + - "b.packagecode,\n" + - "b.packageremark,\n" + - "b.agentcode\n" + - ") =\n" + - "(SELECT\n" + - "p.payrefreason,\n" + - "p.classcode,\n" + - "p.riskcode\n" + - "FROM\n" + - "prpjcommbill p where p.policertiid='SDDH200937010330006366' ),\n" + - "b.payrefnotype = '05',\n" + - "b.packageunit = '4101170402'\n" + - "where b.payrefno='B370202091026000005' "; - assertSqlCanBeParsedAndDeparsed(statement, true); + assertSqlCanBeParsedAndDeparsed(sqlStr, true); + + sqlStr = + "UPDATE prpjpaymentbill b\n" + + "SET ( b.packagecode\n" + + " , b.packageremark\n" + + " , b.agentcode ) = ( SELECT p.payrefreason\n" + + " , p.classcode\n" + + " , p.riskcode\n" + + " FROM prpjcommbill p\n" + + " WHERE p.policertiid = 'SDDH200937010330006366' ) -- this is supposed to be UpdateSet 1\n" + + " , b.payrefnotype = '05' -- this is supposed to be UpdateSet 2\n" + + " , b.packageunit = '4101170402' -- this is supposed to be UpdateSet 3\n" + + "WHERE b.payrefno = 'B370202091026000005'"; + + + assertSqlCanBeParsedAndDeparsed(sqlStr, true); + + Update update = (Update) CCJSqlParserUtil.parse(sqlStr); + Assert.assertEquals(3, update.getUpdateSets().size()); + + Assert.assertEquals(3, update.getUpdateSets().get(0).getColumns().size()); + Assert.assertEquals(1, update.getUpdateSets().get(0).getExpressions().size()); + + Assert.assertEquals(1, update.getUpdateSets().get(1).getColumns().size()); + Assert.assertEquals(1, update.getUpdateSets().get(1).getExpressions().size()); + + Assert.assertEquals(1, update.getUpdateSets().get(2).getColumns().size()); + Assert.assertEquals(1, update.getUpdateSets().get(2).getExpressions().size()); } } diff --git a/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/analytic_query10.sql b/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/analytic_query10.sql index 51c48bf92..c2514f45c 100644 --- a/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/analytic_query10.sql +++ b/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/analytic_query10.sql @@ -20,4 +20,5 @@ SELECT STALENESS, FROM A ---@SUCCESSFULLY_PARSED_AND_DEPARSED first on Aug 3, 2021, 7:20:07 AM \ No newline at end of file +--@SUCCESSFULLY_PARSED_AND_DEPARSED first on Aug 3, 2021, 7:20:07 AM +--@FAILURE: select staleness,osize,obj#,type#,row_number()over(partition by bo# order by staleness,osize,obj#),case when row_number()over(partition by bo# order by staleness,osize,obj#)=1 then 64 else 0 end+case when row_number()over(partition by select tcp0.bo# from tabcompart$ tcp0 where tcp0.obj#=st0.bo# order by staleness,osize,obj#)=1 then 32 else 0 end aflags,0 status,:b5 sid,:b4 serial#,part#,bo#,loc_stale_pct from a recorded first on Sep 7, 2021 7:58:10 AM \ No newline at end of file diff --git a/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/bindvar05.sql b/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/bindvar05.sql index 7bf506eb1..a761ab564 100644 --- a/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/bindvar05.sql +++ b/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/bindvar05.sql @@ -22,4 +22,5 @@ and object_id not in ( select purge_object from recyclebin ) and upper(object_name) in upper(:name) ---@SUCCESSFULLY_PARSED_AND_DEPARSED first on Aug 3, 2021, 7:20:08 AM \ No newline at end of file +--@SUCCESSFULLY_PARSED_AND_DEPARSED first on Aug 3, 2021, 7:20:08 AM +--@FAILURE: select object_name,object_id,decode(status,'invalid','true','false')invalid,'true' runnable,plsql_debug from sys.dba_objects o,dba_plsql_object_settings s where o.owner=:schema and s.owner=:schema and s.name=o.object_name and s.type='package' and object_type='package' and subobject_name is null and object_id not in select purge_object from recyclebin and upper(object_name)in upper(:name) recorded first on Sep 7, 2021 7:58:09 AM \ No newline at end of file diff --git a/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/case_when05.sql b/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/case_when05.sql index f0dfdfa9b..2817d759d 100644 --- a/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/case_when05.sql +++ b/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/case_when05.sql @@ -20,4 +20,5 @@ select staleness , part#, bo# from st0 ---@SUCCESSFULLY_PARSED_AND_DEPARSED first on Aug 3, 2021, 7:20:08 AM \ No newline at end of file +--@SUCCESSFULLY_PARSED_AND_DEPARSED first on Aug 3, 2021, 7:20:08 AM +--@FAILURE: select staleness,osize,obj#,type#,case when row_number()over(partition by bo# order by staleness,osize,obj#)=1 then 64 else 0 end+case when row_number()over(partition by select tcp0.bo# from tabcompart$ tcp0 where tcp0.obj#=st0.bo# order by staleness,osize,obj#)=1 then 32 else 0 end aflags,0 status,:b3 sid,:b2 serial#,part#,bo# from st0 recorded first on Sep 7, 2021 7:58:09 AM \ No newline at end of file diff --git a/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/condition01.sql b/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/condition01.sql index f055a5a05..0db691a8b 100644 --- a/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/condition01.sql +++ b/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/condition01.sql @@ -15,4 +15,5 @@ select department_id, last_name, salary order by department_id ---@SUCCESSFULLY_PARSED_AND_DEPARSED first on Aug 3, 2021, 7:20:08 AM \ No newline at end of file +--@SUCCESSFULLY_PARSED_AND_DEPARSED first on Aug 3, 2021, 7:20:08 AM +--@FAILURE: select department_id,last_name,salary from employees x where salary>select avg(salary)from employees where x.department_id=department_id order by department_id recorded first on Sep 7, 2021 7:58:09 AM \ No newline at end of file diff --git a/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/condition02.sql b/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/condition02.sql index 8a713ea8e..4d8b9d09e 100644 --- a/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/condition02.sql +++ b/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/condition02.sql @@ -16,4 +16,5 @@ select * and to_yminterval('01-00') + x < sysdate ---@SUCCESSFULLY_PARSED_AND_DEPARSED first on Aug 3, 2021, 7:20:08 AM \ No newline at end of file +--@SUCCESSFULLY_PARSED_AND_DEPARSED first on Aug 3, 2021, 7:20:08 AM +--@FAILURE: select*from employees x where salary>select avg(salary)from x and 1=1 and hiredate=sysdate and to_yminterval('01-00')select avg(salary)from x and 1=1 and hiredate=sysdate and to_yminterval('01-00') 0 ) ---@SUCCESSFULLY_PARSED_AND_DEPARSED first on Aug 3, 2021, 7:20:08 AM \ No newline at end of file +--@SUCCESSFULLY_PARSED_AND_DEPARSED first on Aug 3, 2021, 7:20:08 AM +--@FAILURE: select sum(nvl(pl.qty,0))from oline ol,pline pl,blocation bl where ol.id=pl.id and pl.no=pl.no and bl.id=pl.id and(select count(*)from la.sa where pl.id like sa.bid>0 or select count(*)from la.sa where bl.id like sa.id>0) recorded first on Sep 7, 2021 7:58:10 AM \ No newline at end of file diff --git a/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/condition12.sql b/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/condition12.sql index afe20c6f8..e238c5a6f 100644 --- a/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/condition12.sql +++ b/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/condition12.sql @@ -19,4 +19,5 @@ where and "timestamp" <= 1298505600000 ---@SUCCESSFULLY_PARSED_AND_DEPARSED first on Aug 3, 2021, 7:20:08 AM \ No newline at end of file +--@SUCCESSFULLY_PARSED_AND_DEPARSED first on Aug 3, 2021, 7:20:08 AM +--@FAILURE: select*from v.e where cid<>rid and rid not in(select distinct rid from v.s)union(select distinct rid from v.p)and "timestamp"<=1298505600000 recorded first on Sep 7, 2021 7:58:09 AM \ No newline at end of file diff --git a/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/connect_by05.sql b/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/connect_by05.sql index 2b72bce74..177428579 100644 --- a/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/connect_by05.sql +++ b/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/connect_by05.sql @@ -17,4 +17,5 @@ from ( select trim(valeur) from liste ---@SUCCESSFULLY_PARSED_AND_DEPARSED first on Aug 3, 2021, 7:20:07 AM \ No newline at end of file +--@SUCCESSFULLY_PARSED_AND_DEPARSED first on Aug 3, 2021, 7:20:07 AM +--@FAILURE: with liste as(select substr(:liste,instr(','||:liste||',',',',1,rn),instr(','||:liste||',',',',1,rn+1)-instr(','||:liste||',',',',1,rn)-1)valeur from select rownum rn from dual connect by level<=length(:liste)-length(replace(:liste,',',''))+1)select trim(valeur)from liste recorded first on Sep 7, 2021 7:58:09 AM \ No newline at end of file diff --git a/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/for_update01.sql b/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/for_update01.sql index 9bec896ee..16b26902e 100644 --- a/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/for_update01.sql +++ b/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/for_update01.sql @@ -12,4 +12,5 @@ select employee_id from (select * from employees) ---@SUCCESSFULLY_PARSED_AND_DEPARSED first on Aug 3, 2021, 7:20:08 AM \ No newline at end of file +--@SUCCESSFULLY_PARSED_AND_DEPARSED first on Aug 3, 2021, 7:20:08 AM +--@FAILURE: select employee_id from select*from employees for update of employee_id recorded first on Sep 7, 2021 7:58:09 AM \ No newline at end of file diff --git a/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/for_update02.sql b/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/for_update02.sql index fec5b51ab..0be2cd2d4 100644 --- a/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/for_update02.sql +++ b/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/for_update02.sql @@ -12,4 +12,5 @@ select employee_id from (select employee_id+1 as employee_id from employees) ---@SUCCESSFULLY_PARSED_AND_DEPARSED first on Aug 3, 2021, 7:20:08 AM \ No newline at end of file +--@SUCCESSFULLY_PARSED_AND_DEPARSED first on Aug 3, 2021, 7:20:08 AM +--@FAILURE: select employee_id from select employee_id+1 as employee_id from employees for update recorded first on Sep 7, 2021 7:58:09 AM \ No newline at end of file diff --git a/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/for_update03.sql b/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/for_update03.sql index 31ff7b89b..83ffa9cfa 100644 --- a/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/for_update03.sql +++ b/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/for_update03.sql @@ -12,4 +12,5 @@ select employee_id from (select employee_id+1 as employee_id from employees) ---@SUCCESSFULLY_PARSED_AND_DEPARSED first on Aug 3, 2021, 7:20:08 AM \ No newline at end of file +--@SUCCESSFULLY_PARSED_AND_DEPARSED first on Aug 3, 2021, 7:20:08 AM +--@FAILURE: select employee_id from select employee_id+1 as employee_id from employees for update of employee_id recorded first on Sep 7, 2021 7:58:09 AM \ No newline at end of file diff --git a/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/for_update04.sql b/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/for_update04.sql index 59ffc0e6e..dda9141d0 100644 --- a/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/for_update04.sql +++ b/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/for_update04.sql @@ -11,4 +11,5 @@ select employee_id from (select employee_id+1 as employee_id from employees) for update of employee_id nowait ---@SUCCESSFULLY_PARSED_AND_DEPARSED first on Aug 3, 2021, 7:20:08 AM \ No newline at end of file +--@SUCCESSFULLY_PARSED_AND_DEPARSED first on Aug 3, 2021, 7:20:08 AM +--@FAILURE: select employee_id from select employee_id+1 as employee_id from employees for update of employee_id nowait recorded first on Sep 7, 2021 7:58:09 AM \ No newline at end of file diff --git a/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/for_update05.sql b/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/for_update05.sql index d57275cd6..9f566da49 100644 --- a/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/for_update05.sql +++ b/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/for_update05.sql @@ -11,4 +11,5 @@ select employee_id from (select employee_id+1 as employee_id from employees) for update of employee_id wait 10 ---@SUCCESSFULLY_PARSED_AND_DEPARSED first on Aug 3, 2021, 7:20:08 AM \ No newline at end of file +--@SUCCESSFULLY_PARSED_AND_DEPARSED first on Aug 3, 2021, 7:20:08 AM +--@FAILURE: select employee_id from select employee_id+1 as employee_id from employees for update of employee_id wait 10 recorded first on Sep 7, 2021 7:58:09 AM \ No newline at end of file diff --git a/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/function01.sql b/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/function01.sql index 7cf22151b..a4a30e614 100644 --- a/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/function01.sql +++ b/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/function01.sql @@ -9,4 +9,5 @@ --- select decode(decode(decode( (select count(1) from dual), a, 1, 0), 0, 1), 1, 0) from dual ---@SUCCESSFULLY_PARSED_AND_DEPARSED first on Aug 3, 2021, 7:20:08 AM \ No newline at end of file +--@SUCCESSFULLY_PARSED_AND_DEPARSED first on Aug 3, 2021, 7:20:08 AM +--@FAILURE: select decode(decode(decode(select count(1)from dual,a,1,0),0,1),1,0)from dual recorded first on Sep 7, 2021 7:58:09 AM \ No newline at end of file diff --git a/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/join08.sql b/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/join08.sql index b3c57ad20..38a7a3a1b 100644 --- a/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/join08.sql +++ b/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/join08.sql @@ -16,4 +16,5 @@ inner join (select * from dual) using(dummy) inner join (select * from dual) d on(d.dummy=t1.dummy) ---@SUCCESSFULLY_PARSED_AND_DEPARSED first on Aug 3, 2021, 7:20:08 AM \ No newline at end of file +--@SUCCESSFULLY_PARSED_AND_DEPARSED first on Aug 3, 2021, 7:20:08 AM +--@FAILURE: select*from dual t1 join select*from dual tt2 using(dummy)join select*from dual using(dummy)join select*from dual d on(d.dummy=tt3.dummy)inner join select*from dual tt2 using(dummy)inner join select*from dual using(dummy)inner join select*from dual d on(d.dummy=t1.dummy) recorded first on Sep 7, 2021 7:58:09 AM \ No newline at end of file diff --git a/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/join09.sql b/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/join09.sql index c85a02a2a..136414c0b 100644 --- a/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/join09.sql +++ b/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/join09.sql @@ -16,4 +16,5 @@ inner join (select * from dual) using(dummy) inner join (select * from dual) d on(d.dummy=t1.dummy) ---@SUCCESSFULLY_PARSED_AND_DEPARSED first on Aug 3, 2021, 7:20:08 AM \ No newline at end of file +--@SUCCESSFULLY_PARSED_AND_DEPARSED first on Aug 3, 2021, 7:20:08 AM +--@FAILURE: select*from dual t1 left outer join select*from dual tt2 using(dummy)left outer join select*from dual using(dummy)left outer join select*from dual d on(d.dummy=tt3.dummy)inner join select*from dual tt2 using(dummy)inner join select*from dual using(dummy)inner join select*from dual d on(d.dummy=t1.dummy) recorded first on Sep 7, 2021 7:58:09 AM \ No newline at end of file diff --git a/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/join10.sql b/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/join10.sql index 54671f903..3b793ac24 100644 --- a/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/join10.sql +++ b/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/join10.sql @@ -13,4 +13,5 @@ select * from dual t1, ) ---@SUCCESSFULLY_PARSED_AND_DEPARSED first on Aug 3, 2021, 7:20:08 AM \ No newline at end of file +--@SUCCESSFULLY_PARSED_AND_DEPARSED first on Aug 3, 2021, 7:20:08 AM +--@FAILURE: select*from dual t1,(dual left outer join select*from dual tt2 using(dummy)) recorded first on Sep 7, 2021 7:58:09 AM \ No newline at end of file diff --git a/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/keywordasidentifier03.sql b/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/keywordasidentifier03.sql index 2344d13eb..d06afcf22 100644 --- a/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/keywordasidentifier03.sql +++ b/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/keywordasidentifier03.sql @@ -32,4 +32,5 @@ ALL_IND_EXPRESSIONS ie where ind.index_name = ie.index_name(+) and ind.index_owner = ie.index_owner(+) ---@SUCCESSFULLY_PARSED_AND_DEPARSED first on Aug 3, 2021, 7:20:08 AM \ No newline at end of file +--@SUCCESSFULLY_PARSED_AND_DEPARSED first on Aug 3, 2021, 7:20:08 AM +--@FAILURE: select ind.index_owner,ind.index_name,ind.uniqueness,ind.status,ind.index_type,ind.temporary,ind.partitioned,ind.funcidx_status,ind.join_index,ind.columns,ie.column_expression,ind.index_name sdev_link_name,'index' sdev_link_type,ind.index_owner sdev_link_owner from select index_owner,table_owner,index_name,uniqueness,status,index_type,temporary,partitioned,funcidx_status,join_index,max(decode(position,1,column_name))||max(decode(position,2,','||column_name))||max(decode(position,3,','||column_name))||max(decode(position,4,','||column_name))||max(decode(position,5,','||column_name))||max(decode(position,6,','||column_name))||max(decode(position,7,','||column_name))||max(decode(position,8,','||column_name))||max(decode(position,9,','||column_name))||max(decode(position,10,','||column_name))columns from select di.owner index_owner,dc.table_owner,dc.index_name,di.uniqueness,di.status,di.index_type,di.temporary,di.partitioned,di.funcidx_status,di.join_index,dc.column_name,dc.column_position position from all_ind_columns dc,all_indexes di where dc.table_owner=:object_owner and dc.table_name=:object_name and dc.index_name=di.index_name and dc.index_owner=di.owner group by index_owner,table_owner,index_name,uniqueness,status,index_type,temporary,partitioned,funcidx_status,join_index ind,all_ind_expressions ie where ind.index_name=ie.index_name(+)and ind.index_owner=ie.index_owner(+) recorded first on Sep 7, 2021 7:58:10 AM \ No newline at end of file diff --git a/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/pivot02.sql b/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/pivot02.sql index d78b08cc3..b433389fd 100644 --- a/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/pivot02.sql +++ b/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/pivot02.sql @@ -20,4 +20,5 @@ select * from ( ---@SUCCESSFULLY_PARSED_AND_DEPARSED first on Aug 3, 2021, 7:20:08 AM \ No newline at end of file +--@SUCCESSFULLY_PARSED_AND_DEPARSED first on Aug 3, 2021, 7:20:08 AM +--@FAILURE: select*from select times_purchased as "puchase frequency",state_code from customers t pivot xml(count(state_code)for state_code in(select state_code from preferred_states))order by 1 recorded first on Sep 7, 2021 7:58:10 AM \ No newline at end of file diff --git a/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/pivot03.sql b/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/pivot03.sql index 549bcac89..a751ae074 100644 --- a/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/pivot03.sql +++ b/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/pivot03.sql @@ -20,4 +20,5 @@ select * from ( ---@SUCCESSFULLY_PARSED_AND_DEPARSED first on Aug 3, 2021, 7:20:08 AM \ No newline at end of file +--@SUCCESSFULLY_PARSED_AND_DEPARSED first on Aug 3, 2021, 7:20:08 AM +--@FAILURE: select*from select times_purchased as "purchase frequency",state_code from customers t pivot xml(count(state_code)for state_code in(any))order by 1 recorded first on Sep 7, 2021 7:58:09 AM \ No newline at end of file diff --git a/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/pivot04.sql b/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/pivot04.sql index a6639e601..ac7e3baf3 100644 --- a/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/pivot04.sql +++ b/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/pivot04.sql @@ -28,4 +28,5 @@ from ) ---@SUCCESSFULLY_PARSED_AND_DEPARSED first on Aug 3, 2021, 7:20:08 AM \ No newline at end of file +--@SUCCESSFULLY_PARSED_AND_DEPARSED first on Aug 3, 2021, 7:20:08 AM +--@FAILURE: select value from(select 'a' v1,'e' v2,'i' v3,'o' v4,'u' v5 from dual unpivot(value for value_type in(v1,v2,v3,v4,v5))) recorded first on Sep 7, 2021 7:58:09 AM \ No newline at end of file diff --git a/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/pivot05.sql b/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/pivot05.sql index e46b11bec..0e647c18e 100644 --- a/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/pivot05.sql +++ b/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/pivot05.sql @@ -13,4 +13,5 @@ from (select customer_id, product_code, quantity pivot xml (sum(quantity) as sum_quantity for product_code in (select distinct product_code from pivot_test)) ---@SUCCESSFULLY_PARSED_AND_DEPARSED first on Aug 3, 2021, 7:20:08 AM \ No newline at end of file +--@SUCCESSFULLY_PARSED_AND_DEPARSED first on Aug 3, 2021, 7:20:08 AM +--@FAILURE: select*from select customer_id,product_code,quantity from pivot_test pivot xml(sum(quantity)as sum_quantity for product_code in(select distinct product_code from pivot_test)) recorded first on Sep 7, 2021 7:58:09 AM \ No newline at end of file diff --git a/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/pivot06.sql b/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/pivot06.sql index 52eaba3b7..c9522b109 100644 --- a/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/pivot06.sql +++ b/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/pivot06.sql @@ -14,4 +14,5 @@ pivot xml (sum(quantity) as sum_quantity for product_code in (select distinct pr from pivot_test where id < 10)) ---@SUCCESSFULLY_PARSED_AND_DEPARSED first on Aug 3, 2021, 7:20:08 AM \ No newline at end of file +--@SUCCESSFULLY_PARSED_AND_DEPARSED first on Aug 3, 2021, 7:20:08 AM +--@FAILURE: select*from select product_code,quantity from pivot_test pivot xml(sum(quantity)as sum_quantity for product_code in(select distinct product_code from pivot_test where id<10)) recorded first on Sep 7, 2021 7:58:10 AM \ No newline at end of file diff --git a/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/pivot07.sql b/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/pivot07.sql index f32160836..cad1e0449 100644 --- a/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/pivot07.sql +++ b/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/pivot07.sql @@ -13,4 +13,5 @@ from (select customer_id, product_code, quantity pivot (sum(quantity) as sum_quantity for product_code in ('a' as a, 'b' as b, 'c' as c)) order by customer_id ---@SUCCESSFULLY_PARSED_AND_DEPARSED first on Aug 3, 2021, 7:20:08 AM \ No newline at end of file +--@SUCCESSFULLY_PARSED_AND_DEPARSED first on Aug 3, 2021, 7:20:08 AM +--@FAILURE: select*from select customer_id,product_code,quantity from pivot_test pivot(sum(quantity)as sum_quantity for product_code in('a' as a,'b' as b,'c' as c))order by customer_id recorded first on Sep 7, 2021 7:58:10 AM \ No newline at end of file diff --git a/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/pivot07_Parenthesis.sql b/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/pivot07_Parenthesis.sql index e47df8ee7..7d20a1525 100644 --- a/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/pivot07_Parenthesis.sql +++ b/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/pivot07_Parenthesis.sql @@ -14,4 +14,5 @@ from from pivot_test) pivot (sum(quantity) as sum_quantity for product_code in ('a' as a, 'b' as b, 'c' as c)) ) ---@SUCCESSFULLY_PARSED_AND_DEPARSED first on Jul 21, 2021 10:33:10 AM \ No newline at end of file +--@SUCCESSFULLY_PARSED_AND_DEPARSED first on Jul 21, 2021 10:33:10 AM +--@FAILURE: select value from(select customer_id,product_code,quantity from pivot_test pivot(sum(quantity)as sum_quantity for product_code in('a' as a,'b' as b,'c' as c))) recorded first on Sep 7, 2021 7:58:09 AM \ No newline at end of file diff --git a/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/pivot08.sql b/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/pivot08.sql index b9ecebb4a..5851deab4 100644 --- a/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/pivot08.sql +++ b/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/pivot08.sql @@ -12,4 +12,5 @@ from (select product_code, quantity from pivot_test) pivot (sum(quantity) as sum_quantity for product_code in ('a' as a, 'b' as b, 'c' as c)) ---@SUCCESSFULLY_PARSED_AND_DEPARSED first on Aug 3, 2021, 7:20:07 AM \ No newline at end of file +--@SUCCESSFULLY_PARSED_AND_DEPARSED first on Aug 3, 2021, 7:20:07 AM +--@FAILURE: select*from select product_code,quantity from pivot_test pivot(sum(quantity)as sum_quantity for product_code in('a' as a,'b' as b,'c' as c)) recorded first on Sep 7, 2021 7:58:09 AM \ No newline at end of file diff --git a/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/pivot12.sql b/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/pivot12.sql index b4ed92b1c..3a9b02a07 100644 --- a/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/pivot12.sql +++ b/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/pivot12.sql @@ -26,4 +26,5 @@ ) ) ---@SUCCESSFULLY_PARSED_AND_DEPARSED first on Aug 3, 2021, 7:20:08 AM \ No newline at end of file +--@SUCCESSFULLY_PARSED_AND_DEPARSED first on Aug 3, 2021, 7:20:08 AM +--@FAILURE: select value from(select 'a' v1,'e' v2,'i' v3,'o' v4,'u' v5 from dual unpivot include nulls(value for value_type in(v1,v2,v3,v4,v5))) recorded first on Sep 7, 2021 7:58:09 AM \ No newline at end of file diff --git a/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/query_factoring06.sql b/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/query_factoring06.sql index b0be49ca1..2abb55793 100644 --- a/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/query_factoring06.sql +++ b/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/query_factoring06.sql @@ -23,4 +23,5 @@ select * from dept_costs ---@SUCCESSFULLY_PARSED_AND_DEPARSED first on Aug 3, 2021, 7:20:08 AM \ No newline at end of file +--@SUCCESSFULLY_PARSED_AND_DEPARSED first on Aug 3, 2021, 7:20:08 AM +--@FAILURE: with dept_costs as(select department_name,sum(salary)dept_total from employees e,departments d where e.department_id=d.department_id group by department_name),avg_cost as(select sum(dept_total)/count(*)avg from dept_costs)select*from dept_costs where dept_total>select avvg from avg_cost order by department_name recorded first on Sep 7, 2021 7:58:09 AM \ No newline at end of file diff --git a/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/query_factoring09.sql b/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/query_factoring09.sql index 5f155486e..57b55cf03 100644 --- a/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/query_factoring09.sql +++ b/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/query_factoring09.sql @@ -16,4 +16,5 @@ from t1, rn where rn <= cases order by pname ---@SUCCESSFULLY_PARSED_AND_DEPARSED first on Aug 3, 2021, 7:20:08 AM \ No newline at end of file +--@SUCCESSFULLY_PARSED_AND_DEPARSED first on Aug 3, 2021, 7:20:08 AM +--@FAILURE: with rn as(select rownum rn from dual connect by level<=select max(cases)from t1)select pname from t1,rn where rn<=cases order by pname recorded first on Sep 7, 2021 7:58:10 AM \ No newline at end of file diff --git a/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/query_factoring12.sql b/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/query_factoring12.sql index 9b0a13ed9..11019f7cf 100644 --- a/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/query_factoring12.sql +++ b/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/query_factoring12.sql @@ -10,4 +10,5 @@ with days as (select (select trunc(sysdate, 'MONTH') from dual) + rownum -1 as d from dual connect by rownum < 31) select d from days where (trunc(d) - trunc(d,'IW') +1 ) not in (6,7) and d <= last_day(sysdate) ---@SUCCESSFULLY_PARSED_AND_DEPARSED first on Aug 3, 2021, 7:20:07 AM \ No newline at end of file +--@SUCCESSFULLY_PARSED_AND_DEPARSED first on Aug 3, 2021, 7:20:07 AM +--@FAILURE: with days as(select select trunc(sysdate,'month')from dual+rownum-1 as d from dual connect by rownum<31)select d from days where(trunc(d)-trunc(d,'iw')+1)not in(6,7)and d<=last_day(sysdate) recorded first on Sep 7, 2021 7:58:10 AM \ No newline at end of file diff --git a/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/set01.sql b/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/set01.sql index 0280db742..7fdab87ef 100644 --- a/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/set01.sql +++ b/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/set01.sql @@ -14,4 +14,5 @@ select nt from dual ) ---@SUCCESSFULLY_PARSED_AND_DEPARSED first on Aug 3, 2021, 7:20:07 AM \ No newline at end of file +--@SUCCESSFULLY_PARSED_AND_DEPARSED first on Aug 3, 2021, 7:20:07 AM +--@FAILURE: select nt,set(nt)as nt_set from select varchar2_ntt('a','b','c','c')as nt from dual recorded first on Sep 7, 2021 7:58:10 AM \ No newline at end of file diff --git a/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/simple02.sql b/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/simple02.sql index 190597280..ecbcae66c 100644 --- a/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/simple02.sql +++ b/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/simple02.sql @@ -11,4 +11,5 @@ select employee_id from (select employee_id+1 as employee_id from employees) for update ---@SUCCESSFULLY_PARSED_AND_DEPARSED first on Aug 3, 2021, 7:20:08 AM \ No newline at end of file +--@SUCCESSFULLY_PARSED_AND_DEPARSED first on Aug 3, 2021, 7:20:08 AM +--@FAILURE: select employee_id from select employee_id+1 as employee_id from employees for update recorded first on Sep 7, 2021 7:58:09 AM \ No newline at end of file diff --git a/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/simple03.sql b/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/simple03.sql index 934524cd0..1ccef9977 100644 --- a/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/simple03.sql +++ b/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/simple03.sql @@ -11,4 +11,5 @@ select employee_id from (select employee_id+1 as employee_id from employees) for update of employee_id ---@SUCCESSFULLY_PARSED_AND_DEPARSED first on Aug 3, 2021, 7:20:08 AM \ No newline at end of file +--@SUCCESSFULLY_PARSED_AND_DEPARSED first on Aug 3, 2021, 7:20:08 AM +--@FAILURE: select employee_id from select employee_id+1 as employee_id from employees for update of employee_id recorded first on Sep 7, 2021 7:58:09 AM \ No newline at end of file diff --git a/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/simple04.sql b/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/simple04.sql index 4a68cb349..f0c7c55af 100644 --- a/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/simple04.sql +++ b/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/simple04.sql @@ -19,4 +19,5 @@ select * from ) ---@SUCCESSFULLY_PARSED_AND_DEPARSED first on Aug 3, 2021, 7:20:08 AM \ No newline at end of file +--@SUCCESSFULLY_PARSED_AND_DEPARSED first on Aug 3, 2021, 7:20:08 AM +--@FAILURE: select*from(select*from dual unpivot(value for value_type in(dummy))) recorded first on Sep 7, 2021 7:58:09 AM \ No newline at end of file diff --git a/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/simple05.sql b/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/simple05.sql index c210af03f..1b6e86802 100644 --- a/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/simple05.sql +++ b/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/simple05.sql @@ -17,4 +17,5 @@ select * from a ) ---@SUCCESSFULLY_PARSED_AND_DEPARSED first on Aug 3, 2021, 7:20:08 AM \ No newline at end of file +--@SUCCESSFULLY_PARSED_AND_DEPARSED first on Aug 3, 2021, 7:20:08 AM +--@FAILURE: select*from select*from a unpivot(value for value_type in(dummy)) recorded first on Sep 7, 2021 7:58:09 AM \ No newline at end of file diff --git a/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/simple06.sql b/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/simple06.sql index 966a8b6f1..a0d1e53a5 100644 --- a/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/simple06.sql +++ b/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/simple06.sql @@ -10,4 +10,5 @@ select * from (( select * from dual)) a ---@SUCCESSFULLY_PARSED_AND_DEPARSED first on Aug 3, 2021, 7:20:08 AM \ No newline at end of file +--@SUCCESSFULLY_PARSED_AND_DEPARSED first on Aug 3, 2021, 7:20:08 AM +--@FAILURE: select*from(select*from dual)a recorded first on Sep 7, 2021 7:58:09 AM \ No newline at end of file diff --git a/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/union07.sql b/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/union07.sql index 47f09e09c..5ddc2c99a 100644 --- a/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/union07.sql +++ b/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/union07.sql @@ -51,4 +51,5 @@ select * from ( ) where rownum_ >= ? ---@SUCCESSFULLY_PARSED_AND_DEPARSED first on Aug 3, 2021, 7:20:08 AM \ No newline at end of file +--@SUCCESSFULLY_PARSED_AND_DEPARSED first on Aug 3, 2021, 7:20:08 AM +--@FAILURE: select*from select row_.*,rownum rownum_ from select*from select results.*,row_number()over(partition by results.object_id order by results.gmt_modified desc)rn from(select sus.id id,sus.gmt_create gmt_create,sus.gmt_modified gmt_modified,sus.company_id company_id,sus.object_id object_id,sus.object_type object_type,sus.confirm_type confirm_type,sus.operator operator,sus.filter_type filter_type,sus.member_id member_id,sus.member_fuc_q member_fuc_q,sus.risk_type risk_type,'y' is_draft from f_u_c_ sus,a_b_c_draft p,member m where 1=1 and p.company_id=m.company_id and m.login_id=? and p.sale_type in(?)and p.id=sus.object_id)union(select sus.id id,sus.gmt_create gmt_create,sus.gmt_modified gmt_modified,sus.company_id company_id,sus.object_id object_id,sus.object_type object_type,sus.confirm_type confirm_type,sus.operator operator,sus.filter_type filter_type,sus.member_id member_id,sus.member_fuc_q member_fuc_q,sus.risk_type risk_type,'n' is_draft from f_u_c_ sus,a_b_c p,member m where 1=1 and p.company_id=m.company_id and m.login_id=? and p.sale_type in(?)and p.id=sus.object_id)results where rn=1 order by gmt_modified desc row_ where rownum<=? where rownum_>=? recorded first on Sep 7, 2021 7:58:10 AM \ No newline at end of file diff --git a/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/union08.sql b/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/union08.sql index 5da67f266..a9bd1142c 100644 --- a/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/union08.sql +++ b/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/union08.sql @@ -13,4 +13,5 @@ select * from dual where exists ( (select * from dual) ) ---@SUCCESSFULLY_PARSED_AND_DEPARSED first on Aug 3, 2021, 7:20:08 AM \ No newline at end of file +--@SUCCESSFULLY_PARSED_AND_DEPARSED first on Aug 3, 2021, 7:20:08 AM +--@FAILURE: select*from dual where exists(select*from dual)union all(select*from dual) recorded first on Sep 7, 2021 7:58:09 AM \ No newline at end of file diff --git a/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/union09.sql b/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/union09.sql index a19cc34a8..94d1e4d78 100644 --- a/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/union09.sql +++ b/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/union09.sql @@ -35,4 +35,5 @@ select * from ( ) where rownum >= 1 ---@SUCCESSFULLY_PARSED_AND_DEPARSED first on Aug 3, 2021, 7:20:08 AM \ No newline at end of file +--@SUCCESSFULLY_PARSED_AND_DEPARSED first on Aug 3, 2021, 7:20:08 AM +--@FAILURE: select*from select row_.*from select*from select results.*,1 rn from(select dummy from dual where 1=1)union(select dummy from dual where 1=1)results where rn=1 order by dummy desc row_ where rownum<=1 where rownum>=1 recorded first on Sep 7, 2021 7:58:09 AM \ No newline at end of file diff --git a/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/union10.sql b/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/union10.sql index 0055acf05..eb8f20a48 100644 --- a/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/union10.sql +++ b/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/union10.sql @@ -22,4 +22,5 @@ select as yes_no from dual ---@SUCCESSFULLY_PARSED_AND_DEPARSED first on Aug 3, 2021, 7:20:08 AM \ No newline at end of file +--@SUCCESSFULLY_PARSED_AND_DEPARSED first on Aug 3, 2021, 7:20:08 AM +--@FAILURE: select(select 'y' from dual where exists select 1 from dual where 1=0)union(select 'n' from dual where not exists select 1 from dual where 1=0)as yes_no from dual recorded first on Sep 7, 2021 7:58:09 AM \ No newline at end of file From c20bebf539693816d658f254043430201805b4c3 Mon Sep 17 00:00:00 2001 From: Andreas Reichel Date: Tue, 7 Sep 2021 09:48:41 +0700 Subject: [PATCH 4/7] Add the enhancements since Release 4.1 --- README.md | 36 +++++++++++++++++++++++++++++------- 1 file changed, 29 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index 5cac7869e..024d6addd 100644 --- a/README.md +++ b/README.md @@ -54,9 +54,25 @@ To help JSqlParser's development you are encouraged to provide Also I would like to know about needed examples or documentation stuff. ## Extensions in the latest SNAPSHOT version 4.2 - +* API change: Support `SELECT ...` without a `FROM` clause, making `SELECT 1, 2` and `SELECT *` parsable statements (before those failed) +* API change: Support complex `UPDATE` sets (using multiple `SubQuery` or `ValueList` or Single Values, in combination) +* Support nested `CASE` expressions with complex expression arguments +* API change: Support `JOIN` with multiple trailing `ON` Expressions (`JOIN ... JOIN ... ON ... ON ...`) +* Support Oracle Hierarchical `CONNECT_BY_ROOT` Operator +* Support Transact-SQL `IF ... ELSE ...` Statement Control Flows. +* Allow optional parameters for the `ALTER TABLE ...` statement (e.g. `ALTER TABLE ... MOVE TABLESPACE ...`) +* Support Oracle `ALTER SYSTEM ...` statement +* Support Oracle Named Function Parameters`Func( param1 => arg1, ...` +* Add Gradle build +* Allow `JdbcParameter` or `JdbcNamedParameter` for MySQL FullTextSearch +* Allow `Cast` into `Row` Constructor +* Support Oracle `RENAME ... TO ...` statement +* Support Oracle `PURGE` statement +* Support JSON functions `JSON_OBJECT()`, `JSON_ARRAY()`, `JSON_OBJECTAGG()`, `JSON_ARRAYAGG()` * API change: merge ALL and ANY expressions class -* allow `CURRENT DATE`in addition to `CURRENT_DATE` (without underbar) +* Allow DB2 compliant `CURRENT DATE`in addition to `CURRENT_DATE` (without underscore) + +Additionally, we have fixed many errors and improved the code quality and the test coverage. ## Extensions of JSqlParser releases @@ -67,16 +83,22 @@ Also I would like to know about needed examples or documentation stuff. ## Building from the sources As the project is a Maven project, building is rather simple by running: +```shell +mvn package +``` - mvn package +Since 4.2, alternatively Gradle can be used +```shell +gradle build +``` The project requires the following to build: -- Maven +- Maven (or Gradle) - JDK 8 or later. The jar will target JDK 8, but the version of the maven-compiler-plugin that JsqlParser uses requires JDK 8+ -This will produce the jsqlparser-VERSION.jar file in the target/ directory. +This will produce the jsqlparser-VERSION.jar file in the `target/` directory (`build/libs/jsqlparser-VERSION.jar` in case of Gradle). -**To build this project without using Maven, one has to build the parser by JavaCC using the CLI options it provides.** +**To build this project without using Maven or Gradle, one has to build the parser by JavaCC using the CLI options it provides.** ## Debugging through problems @@ -124,7 +146,7 @@ And this is the dependency declaration in your pom: com.github.jsqlparser jsqlparser - 4.0 + 4.1 ``` From 59f07ef464928d5549ae4ac656bd3fc12b2aa98b Mon Sep 17 00:00:00 2001 From: Andreas Reichel Date: Tue, 7 Sep 2021 09:59:29 +0700 Subject: [PATCH 5/7] Adjust the Coverage --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index 8bd8e2600..049620aba 100644 --- a/build.gradle +++ b/build.gradle @@ -73,7 +73,7 @@ jacocoTestCoverageVerification { violationRules { rule { limit { - minimum = 0.837 + minimum = 0.836 } } } From 260b9387ab7df6c57a51cc208c1a6bcf7cecd086 Mon Sep 17 00:00:00 2001 From: Andreas Reichel Date: Tue, 7 Sep 2021 10:34:57 +0700 Subject: [PATCH 6/7] Improve Test Coverage --- build.gradle | 2 +- .../sf/jsqlparser/statement/ExplainTest.java | 3 ++ .../statement/IfElseStatementTest.java | 2 +- .../statement/ResetStatementTest.java | 11 +++++++ .../statement/RollbackStatementTest.java | 30 +++++++++++++++++++ .../statement/SetStatementTest.java | 14 +++++++++ .../statement/alter/AlterSessionTest.java | 25 ++++++++++++++++ .../create/synonym/CreateSynonymTest.java | 5 ++++ .../show/ShowTablesStatementTest.java | 18 +++++++++++ .../statement/values/ValuesTest.java | 11 +++++++ .../util/deparser/StatementDeParserTest.java | 11 +++---- 11 files changed, 123 insertions(+), 9 deletions(-) create mode 100644 src/test/java/net/sf/jsqlparser/statement/RollbackStatementTest.java diff --git a/build.gradle b/build.gradle index 049620aba..f137150c8 100644 --- a/build.gradle +++ b/build.gradle @@ -73,7 +73,7 @@ jacocoTestCoverageVerification { violationRules { rule { limit { - minimum = 0.836 + minimum = 0.838 } } } diff --git a/src/test/java/net/sf/jsqlparser/statement/ExplainTest.java b/src/test/java/net/sf/jsqlparser/statement/ExplainTest.java index f146f239b..3239a6780 100644 --- a/src/test/java/net/sf/jsqlparser/statement/ExplainTest.java +++ b/src/test/java/net/sf/jsqlparser/statement/ExplainTest.java @@ -65,5 +65,8 @@ public void getOption_returnsValues() throws JSQLParserException { ExplainStatement.Option buffers = explain.getOption(ExplainStatement.OptionType.BUFFERS); assertThat(buffers).isNotNull().extracting(ExplainStatement.Option::getValue).isEqualTo("FALSE"); + + explain = (ExplainStatement) CCJSqlParserUtil.parse("EXPLAIN SELECT * FROM mytable"); + assertThat(explain.getOption(ExplainStatement.OptionType.ANALYZE)).isNull(); } } diff --git a/src/test/java/net/sf/jsqlparser/statement/IfElseStatementTest.java b/src/test/java/net/sf/jsqlparser/statement/IfElseStatementTest.java index ff71a2f4e..a2aa90e6f 100644 --- a/src/test/java/net/sf/jsqlparser/statement/IfElseStatementTest.java +++ b/src/test/java/net/sf/jsqlparser/statement/IfElseStatementTest.java @@ -82,7 +82,7 @@ public void testObjectBuilder() throws JSQLParserException { } @Test - public void testValidation() throws JSQLParserException { + public void testValidation() { String sqlStr = "IF OBJECT_ID('tOrigin', 'U') IS NOT NULL DROP TABLE tOrigin1;"; List errors = Validation.validate(Arrays.asList(DatabaseType.SQLSERVER, FeaturesAllowed.DROP), sqlStr); diff --git a/src/test/java/net/sf/jsqlparser/statement/ResetStatementTest.java b/src/test/java/net/sf/jsqlparser/statement/ResetStatementTest.java index e64c709bd..745348d41 100644 --- a/src/test/java/net/sf/jsqlparser/statement/ResetStatementTest.java +++ b/src/test/java/net/sf/jsqlparser/statement/ResetStatementTest.java @@ -10,6 +10,7 @@ package net.sf.jsqlparser.statement; import net.sf.jsqlparser.JSQLParserException; +import org.junit.Assert; import org.junit.Test; import static net.sf.jsqlparser.test.TestUtils.assertSqlCanBeParsedAndDeparsed; @@ -25,4 +26,14 @@ public void tesResetAll() throws JSQLParserException { assertSqlCanBeParsedAndDeparsed("RESET ALL"); } + @Test + public void testObject() { + ResetStatement resetStatement=new ResetStatement(); + Assert.assertNotNull(resetStatement.getName()); + + resetStatement.add("something"); + resetStatement.setName("somethingElse"); + Assert.assertEquals("somethingElse", resetStatement.getName()); + } + } diff --git a/src/test/java/net/sf/jsqlparser/statement/RollbackStatementTest.java b/src/test/java/net/sf/jsqlparser/statement/RollbackStatementTest.java new file mode 100644 index 000000000..5d72bd0d1 --- /dev/null +++ b/src/test/java/net/sf/jsqlparser/statement/RollbackStatementTest.java @@ -0,0 +1,30 @@ +/*- + * #%L + * JSQLParser library + * %% + * Copyright (C) 2004 - 2021 JSQLParser + * %% + * Dual licensed under GNU LGPL 2.1 or Apache License 2.0 + * #L% + */ +package net.sf.jsqlparser.statement; + +import org.junit.Assert; +import org.junit.Test; + +public class RollbackStatementTest { + + @Test + public void testObject() { + RollbackStatement rollbackStatement = new RollbackStatement() + .withUsingWorkKeyword(true) + .withUsingSavepointKeyword(true) + .withSavepointName("mySavePoint") + .withForceDistributedTransactionIdentifier("$ForceDistributedTransactionIdentifier"); + + Assert.assertTrue(rollbackStatement.isUsingSavepointKeyword()); + Assert.assertEquals("mySavePoint", rollbackStatement.getSavepointName()); + Assert.assertEquals("$ForceDistributedTransactionIdentifier", rollbackStatement.getForceDistributedTransactionIdentifier()); + } + +} diff --git a/src/test/java/net/sf/jsqlparser/statement/SetStatementTest.java b/src/test/java/net/sf/jsqlparser/statement/SetStatementTest.java index c99220e37..bf55cd34f 100644 --- a/src/test/java/net/sf/jsqlparser/statement/SetStatementTest.java +++ b/src/test/java/net/sf/jsqlparser/statement/SetStatementTest.java @@ -11,8 +11,13 @@ import net.sf.jsqlparser.JSQLParserException; import static net.sf.jsqlparser.test.TestUtils.assertSqlCanBeParsedAndDeparsed; + +import net.sf.jsqlparser.expression.StringValue; +import org.junit.Assert; import org.junit.Test; +import java.util.Collections; + /** * * @author toben @@ -57,4 +62,13 @@ public void tesLocalWithEq() throws JSQLParserException { public void testValueOnIssue927() throws JSQLParserException { assertSqlCanBeParsedAndDeparsed("SET standard_conforming_strings = on"); } + + @Test + public void testObject() { + SetStatement setStatement = new SetStatement(); + setStatement.add("standard_conforming_strings", Collections.singletonList(new StringValue("ON")), false); + setStatement.withUseEqual(0, true).remove(0); + + Assert.assertEquals(0, setStatement.getCount()); + } } diff --git a/src/test/java/net/sf/jsqlparser/statement/alter/AlterSessionTest.java b/src/test/java/net/sf/jsqlparser/statement/alter/AlterSessionTest.java index 7b61b4a07..6ca0fd408 100644 --- a/src/test/java/net/sf/jsqlparser/statement/alter/AlterSessionTest.java +++ b/src/test/java/net/sf/jsqlparser/statement/alter/AlterSessionTest.java @@ -11,8 +11,12 @@ import net.sf.jsqlparser.JSQLParserException; import net.sf.jsqlparser.test.TestUtils; +import org.junit.Assert; import org.junit.Test; +import java.util.Arrays; +import java.util.Collections; + public class AlterSessionTest { @Test public void testAlterSessionAdvise() throws JSQLParserException { @@ -64,4 +68,25 @@ public void testAlterSessionSet() throws JSQLParserException { TestUtils.assertSqlCanBeParsedAndDeparsed("ALTER SESSION SET ddl_lock_timeout=7200", true); TestUtils.assertSqlCanBeParsedAndDeparsed("ALTER SESSION SET ddl_lock_timeout = 7200", true); } + + + @Test + public void testAlterSessionResumable() throws JSQLParserException { + TestUtils.assertSqlCanBeParsedAndDeparsed("ALTER SESSION ENABLE RESUMABLE", true); + TestUtils.assertSqlCanBeParsedAndDeparsed("ALTER SESSION DISABLE RESUMABLE", true); + } + + @Test + public void testObject() { + AlterSession alterSession = new AlterSession(AlterSessionOperation.FORCE_PARALLEL_QUERY, Collections.emptyList()); + Assert.assertEquals(AlterSessionOperation.FORCE_PARALLEL_QUERY, alterSession.getOperation()); + + alterSession.setOperation(AlterSessionOperation.DISABLE_PARALLEL_DML); + Assert.assertEquals(AlterSessionOperation.DISABLE_PARALLEL_DML, alterSession.getOperation()); + + Assert.assertEquals(0, alterSession.getParameters().size()); + + alterSession.setParameters(Arrays.asList("PARALLEL", "6")); + Assert.assertEquals(2, alterSession.getParameters().size()); + } } diff --git a/src/test/java/net/sf/jsqlparser/statement/create/synonym/CreateSynonymTest.java b/src/test/java/net/sf/jsqlparser/statement/create/synonym/CreateSynonymTest.java index 74ad5248f..0f3641bd2 100644 --- a/src/test/java/net/sf/jsqlparser/statement/create/synonym/CreateSynonymTest.java +++ b/src/test/java/net/sf/jsqlparser/statement/create/synonym/CreateSynonymTest.java @@ -11,7 +11,9 @@ import net.sf.jsqlparser.JSQLParserException; import net.sf.jsqlparser.parser.CCJSqlParserUtil; +import net.sf.jsqlparser.schema.Synonym; import org.assertj.core.api.Assertions; +import org.junit.Assert; import org.junit.Test; import static net.sf.jsqlparser.test.TestUtils.assertSqlCanBeParsedAndDeparsed; @@ -51,5 +53,8 @@ public void synonymAttributes() throws Exception { Assertions.assertThat(createSynonym.isPublicSynonym()).isTrue(); Assertions.assertThat(createSynonym.getSynonym().getFullyQualifiedName()).isEqualTo("TBL_TABLE_NAME"); Assertions.assertThat(createSynonym.getFor()).isEqualTo("SCHEMA.T_TBL_NAME"); + + Assert.assertEquals(2, createSynonym.getForList().size()); + Assert.assertEquals("NEW_TBL_TABLE_NAME", createSynonym.withSynonym(new Synonym().withName("NEW_TBL_TABLE_NAME")).getSynonym().getName()); } } diff --git a/src/test/java/net/sf/jsqlparser/statement/show/ShowTablesStatementTest.java b/src/test/java/net/sf/jsqlparser/statement/show/ShowTablesStatementTest.java index 535759351..e280cb000 100644 --- a/src/test/java/net/sf/jsqlparser/statement/show/ShowTablesStatementTest.java +++ b/src/test/java/net/sf/jsqlparser/statement/show/ShowTablesStatementTest.java @@ -9,6 +9,10 @@ */ package net.sf.jsqlparser.statement.show; +import net.sf.jsqlparser.JSQLParserException; +import net.sf.jsqlparser.parser.CCJSqlParserUtil; +import net.sf.jsqlparser.test.TestUtils; +import org.junit.Assert; import org.junit.Test; import static net.sf.jsqlparser.test.TestUtils.assertSqlCanBeParsedAndDeparsed; @@ -44,4 +48,18 @@ public void showTablesLikeExpression() throws Exception { public void showTablesWhereExpression() throws Exception { assertSqlCanBeParsedAndDeparsed("SHOW TABLES WHERE table_name = 'FOO'"); } + + @Test + public void testObject() throws JSQLParserException, JSQLParserException { + ShowTablesStatement showTablesStatement = (ShowTablesStatement) CCJSqlParserUtil.parse("SHOW TABLES WHERE table_name = 'FOO'"); + Assert.assertEquals(0, showTablesStatement.getModifiers().size()); + TestUtils.assertExpressionCanBeDeparsedAs(showTablesStatement.getWhereCondition(), "table_name = 'FOO'"); + + showTablesStatement = (ShowTablesStatement) CCJSqlParserUtil.parse("SHOW FULL TABLES IN db_name"); + Assert.assertEquals(1, showTablesStatement.getModifiers().size()); + Assert.assertEquals(ShowTablesStatement.SelectionMode.IN, showTablesStatement.getSelectionMode()); + + showTablesStatement = (ShowTablesStatement) CCJSqlParserUtil.parse("SHOW TABLES LIKE '%FOO%'"); + TestUtils.assertExpressionCanBeDeparsedAs(showTablesStatement.getLikeExpression(), "'%FOO%'"); + } } diff --git a/src/test/java/net/sf/jsqlparser/statement/values/ValuesTest.java b/src/test/java/net/sf/jsqlparser/statement/values/ValuesTest.java index aa32bc543..46d71a1bc 100644 --- a/src/test/java/net/sf/jsqlparser/statement/values/ValuesTest.java +++ b/src/test/java/net/sf/jsqlparser/statement/values/ValuesTest.java @@ -15,6 +15,7 @@ import net.sf.jsqlparser.expression.StringValue; import net.sf.jsqlparser.expression.operators.relational.ExpressionList; import net.sf.jsqlparser.statement.Statement; +import net.sf.jsqlparser.statement.StatementVisitorAdapter; import net.sf.jsqlparser.statement.select.Select; import net.sf.jsqlparser.statement.select.SetOperationList; @@ -22,6 +23,8 @@ import org.junit.Test; +import java.util.Arrays; + public class ValuesTest { @Test @@ -48,4 +51,12 @@ public void testDuplicateKey() throws JSQLParserException { public void testComplexWithQueryIssue561() throws JSQLParserException { assertSqlCanBeParsedAndDeparsed("WITH split (word, str, hascomma) AS (VALUES ('', 'Auto,A,1234444', 1) UNION ALL SELECT substr(str, 0, CASE WHEN instr(str, ',') THEN instr(str, ',') ELSE length(str) + 1 END), ltrim(substr(str, instr(str, ',')), ','), instr(str, ',') FROM split WHERE hascomma) SELECT trim(word) FROM split WHERE word != ''"); } + + @Test + public void testObject() { + ValuesStatement valuesStatement=new ValuesStatement().addExpressions(new StringValue("1"), new StringValue("2")); + valuesStatement.addExpressions(Arrays.asList(new StringValue("3"), new StringValue("4"))); + + valuesStatement.accept(new StatementVisitorAdapter()); + } } diff --git a/src/test/java/net/sf/jsqlparser/util/deparser/StatementDeParserTest.java b/src/test/java/net/sf/jsqlparser/util/deparser/StatementDeParserTest.java index bc8e2954d..ee5e5e408 100644 --- a/src/test/java/net/sf/jsqlparser/util/deparser/StatementDeParserTest.java +++ b/src/test/java/net/sf/jsqlparser/util/deparser/StatementDeParserTest.java @@ -16,6 +16,7 @@ import java.util.ArrayList; import java.util.List; +import net.sf.jsqlparser.parser.CCJSqlParserUtil; import net.sf.jsqlparser.statement.update.UpdateSet; import org.junit.Before; import org.junit.Test; @@ -31,7 +32,6 @@ import net.sf.jsqlparser.statement.IfElseStatement; import net.sf.jsqlparser.statement.SetStatement; import net.sf.jsqlparser.statement.delete.Delete; -import net.sf.jsqlparser.statement.drop.Drop; import net.sf.jsqlparser.statement.execute.Execute; import net.sf.jsqlparser.statement.insert.Insert; import net.sf.jsqlparser.statement.replace.Replace; @@ -368,12 +368,9 @@ public void shouldUseProvidedDeparsersWhenDeParsingUpsertWithExpressionList() th @Test @SuppressWarnings("PMD.JUnitTestsShouldIncludeAssert") - public void shouldUseProvidedDeparsersWhenDeParsingIfThenStatement() { - Expression condition = mock(Expression.class); - Drop ifStatement = mock(Drop.class); - - IfElseStatement ifElseStatement = new IfElseStatement(condition, ifStatement); - + public void shouldUseProvidedDeparsersWhenDeParsingIfThenStatement() throws JSQLParserException { + String sqlStr = "IF OBJECT_ID('tOrigin', 'U') IS NOT NULL DROP TABLE tOrigin1"; + IfElseStatement ifElseStatement = (IfElseStatement) CCJSqlParserUtil.parse(sqlStr); statementDeParser.deParse(ifElseStatement); } From b516a9e50b1c902782aa7a7225fa8a424ab086ea Mon Sep 17 00:00:00 2001 From: Andreas Reichel Date: Tue, 7 Sep 2021 10:42:59 +0700 Subject: [PATCH 7/7] Revert the Special Oracle Tests (accidentally set to FAILURE) --- .../statement/select/oracle-tests/analytic_query10.sql | 3 +-- .../sf/jsqlparser/statement/select/oracle-tests/bindvar05.sql | 3 +-- .../jsqlparser/statement/select/oracle-tests/case_when05.sql | 3 +-- .../jsqlparser/statement/select/oracle-tests/condition01.sql | 3 +-- .../jsqlparser/statement/select/oracle-tests/condition02.sql | 3 +-- .../jsqlparser/statement/select/oracle-tests/condition03.sql | 3 +-- .../jsqlparser/statement/select/oracle-tests/condition09.sql | 3 +-- .../jsqlparser/statement/select/oracle-tests/condition12.sql | 3 +-- .../jsqlparser/statement/select/oracle-tests/connect_by05.sql | 3 +-- .../jsqlparser/statement/select/oracle-tests/for_update01.sql | 3 +-- .../jsqlparser/statement/select/oracle-tests/for_update02.sql | 3 +-- .../jsqlparser/statement/select/oracle-tests/for_update03.sql | 3 +-- .../jsqlparser/statement/select/oracle-tests/for_update04.sql | 3 +-- .../jsqlparser/statement/select/oracle-tests/for_update05.sql | 3 +-- .../sf/jsqlparser/statement/select/oracle-tests/function01.sql | 3 +-- .../net/sf/jsqlparser/statement/select/oracle-tests/join08.sql | 3 +-- .../net/sf/jsqlparser/statement/select/oracle-tests/join09.sql | 3 +-- .../net/sf/jsqlparser/statement/select/oracle-tests/join10.sql | 3 +-- .../statement/select/oracle-tests/keywordasidentifier03.sql | 3 +-- .../sf/jsqlparser/statement/select/oracle-tests/pivot02.sql | 3 +-- .../sf/jsqlparser/statement/select/oracle-tests/pivot03.sql | 3 +-- .../sf/jsqlparser/statement/select/oracle-tests/pivot04.sql | 3 +-- .../sf/jsqlparser/statement/select/oracle-tests/pivot05.sql | 3 +-- .../sf/jsqlparser/statement/select/oracle-tests/pivot06.sql | 3 +-- .../sf/jsqlparser/statement/select/oracle-tests/pivot07.sql | 3 +-- .../statement/select/oracle-tests/pivot07_Parenthesis.sql | 3 +-- .../sf/jsqlparser/statement/select/oracle-tests/pivot08.sql | 3 +-- .../sf/jsqlparser/statement/select/oracle-tests/pivot12.sql | 3 +-- .../statement/select/oracle-tests/query_factoring06.sql | 3 +-- .../statement/select/oracle-tests/query_factoring09.sql | 3 +-- .../statement/select/oracle-tests/query_factoring12.sql | 3 +-- .../net/sf/jsqlparser/statement/select/oracle-tests/set01.sql | 3 +-- .../sf/jsqlparser/statement/select/oracle-tests/simple02.sql | 3 +-- .../sf/jsqlparser/statement/select/oracle-tests/simple03.sql | 3 +-- .../sf/jsqlparser/statement/select/oracle-tests/simple04.sql | 3 +-- .../sf/jsqlparser/statement/select/oracle-tests/simple05.sql | 3 +-- .../sf/jsqlparser/statement/select/oracle-tests/simple06.sql | 3 +-- .../sf/jsqlparser/statement/select/oracle-tests/union07.sql | 3 +-- .../sf/jsqlparser/statement/select/oracle-tests/union08.sql | 3 +-- .../sf/jsqlparser/statement/select/oracle-tests/union09.sql | 3 +-- .../sf/jsqlparser/statement/select/oracle-tests/union10.sql | 3 +-- 41 files changed, 41 insertions(+), 82 deletions(-) diff --git a/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/analytic_query10.sql b/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/analytic_query10.sql index c2514f45c..51c48bf92 100644 --- a/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/analytic_query10.sql +++ b/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/analytic_query10.sql @@ -20,5 +20,4 @@ SELECT STALENESS, FROM A ---@SUCCESSFULLY_PARSED_AND_DEPARSED first on Aug 3, 2021, 7:20:07 AM ---@FAILURE: select staleness,osize,obj#,type#,row_number()over(partition by bo# order by staleness,osize,obj#),case when row_number()over(partition by bo# order by staleness,osize,obj#)=1 then 64 else 0 end+case when row_number()over(partition by select tcp0.bo# from tabcompart$ tcp0 where tcp0.obj#=st0.bo# order by staleness,osize,obj#)=1 then 32 else 0 end aflags,0 status,:b5 sid,:b4 serial#,part#,bo#,loc_stale_pct from a recorded first on Sep 7, 2021 7:58:10 AM \ No newline at end of file +--@SUCCESSFULLY_PARSED_AND_DEPARSED first on Aug 3, 2021, 7:20:07 AM \ No newline at end of file diff --git a/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/bindvar05.sql b/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/bindvar05.sql index a761ab564..7bf506eb1 100644 --- a/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/bindvar05.sql +++ b/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/bindvar05.sql @@ -22,5 +22,4 @@ and object_id not in ( select purge_object from recyclebin ) and upper(object_name) in upper(:name) ---@SUCCESSFULLY_PARSED_AND_DEPARSED first on Aug 3, 2021, 7:20:08 AM ---@FAILURE: select object_name,object_id,decode(status,'invalid','true','false')invalid,'true' runnable,plsql_debug from sys.dba_objects o,dba_plsql_object_settings s where o.owner=:schema and s.owner=:schema and s.name=o.object_name and s.type='package' and object_type='package' and subobject_name is null and object_id not in select purge_object from recyclebin and upper(object_name)in upper(:name) recorded first on Sep 7, 2021 7:58:09 AM \ No newline at end of file +--@SUCCESSFULLY_PARSED_AND_DEPARSED first on Aug 3, 2021, 7:20:08 AM \ No newline at end of file diff --git a/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/case_when05.sql b/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/case_when05.sql index 2817d759d..f0dfdfa9b 100644 --- a/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/case_when05.sql +++ b/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/case_when05.sql @@ -20,5 +20,4 @@ select staleness , part#, bo# from st0 ---@SUCCESSFULLY_PARSED_AND_DEPARSED first on Aug 3, 2021, 7:20:08 AM ---@FAILURE: select staleness,osize,obj#,type#,case when row_number()over(partition by bo# order by staleness,osize,obj#)=1 then 64 else 0 end+case when row_number()over(partition by select tcp0.bo# from tabcompart$ tcp0 where tcp0.obj#=st0.bo# order by staleness,osize,obj#)=1 then 32 else 0 end aflags,0 status,:b3 sid,:b2 serial#,part#,bo# from st0 recorded first on Sep 7, 2021 7:58:09 AM \ No newline at end of file +--@SUCCESSFULLY_PARSED_AND_DEPARSED first on Aug 3, 2021, 7:20:08 AM \ No newline at end of file diff --git a/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/condition01.sql b/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/condition01.sql index 0db691a8b..f055a5a05 100644 --- a/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/condition01.sql +++ b/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/condition01.sql @@ -15,5 +15,4 @@ select department_id, last_name, salary order by department_id ---@SUCCESSFULLY_PARSED_AND_DEPARSED first on Aug 3, 2021, 7:20:08 AM ---@FAILURE: select department_id,last_name,salary from employees x where salary>select avg(salary)from employees where x.department_id=department_id order by department_id recorded first on Sep 7, 2021 7:58:09 AM \ No newline at end of file +--@SUCCESSFULLY_PARSED_AND_DEPARSED first on Aug 3, 2021, 7:20:08 AM \ No newline at end of file diff --git a/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/condition02.sql b/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/condition02.sql index 4d8b9d09e..8a713ea8e 100644 --- a/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/condition02.sql +++ b/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/condition02.sql @@ -16,5 +16,4 @@ select * and to_yminterval('01-00') + x < sysdate ---@SUCCESSFULLY_PARSED_AND_DEPARSED first on Aug 3, 2021, 7:20:08 AM ---@FAILURE: select*from employees x where salary>select avg(salary)from x and 1=1 and hiredate=sysdate and to_yminterval('01-00')select avg(salary)from x and 1=1 and hiredate=sysdate and to_yminterval('01-00') 0 ) ---@SUCCESSFULLY_PARSED_AND_DEPARSED first on Aug 3, 2021, 7:20:08 AM ---@FAILURE: select sum(nvl(pl.qty,0))from oline ol,pline pl,blocation bl where ol.id=pl.id and pl.no=pl.no and bl.id=pl.id and(select count(*)from la.sa where pl.id like sa.bid>0 or select count(*)from la.sa where bl.id like sa.id>0) recorded first on Sep 7, 2021 7:58:10 AM \ No newline at end of file +--@SUCCESSFULLY_PARSED_AND_DEPARSED first on Aug 3, 2021, 7:20:08 AM \ No newline at end of file diff --git a/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/condition12.sql b/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/condition12.sql index e238c5a6f..afe20c6f8 100644 --- a/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/condition12.sql +++ b/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/condition12.sql @@ -19,5 +19,4 @@ where and "timestamp" <= 1298505600000 ---@SUCCESSFULLY_PARSED_AND_DEPARSED first on Aug 3, 2021, 7:20:08 AM ---@FAILURE: select*from v.e where cid<>rid and rid not in(select distinct rid from v.s)union(select distinct rid from v.p)and "timestamp"<=1298505600000 recorded first on Sep 7, 2021 7:58:09 AM \ No newline at end of file +--@SUCCESSFULLY_PARSED_AND_DEPARSED first on Aug 3, 2021, 7:20:08 AM \ No newline at end of file diff --git a/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/connect_by05.sql b/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/connect_by05.sql index 177428579..2b72bce74 100644 --- a/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/connect_by05.sql +++ b/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/connect_by05.sql @@ -17,5 +17,4 @@ from ( select trim(valeur) from liste ---@SUCCESSFULLY_PARSED_AND_DEPARSED first on Aug 3, 2021, 7:20:07 AM ---@FAILURE: with liste as(select substr(:liste,instr(','||:liste||',',',',1,rn),instr(','||:liste||',',',',1,rn+1)-instr(','||:liste||',',',',1,rn)-1)valeur from select rownum rn from dual connect by level<=length(:liste)-length(replace(:liste,',',''))+1)select trim(valeur)from liste recorded first on Sep 7, 2021 7:58:09 AM \ No newline at end of file +--@SUCCESSFULLY_PARSED_AND_DEPARSED first on Aug 3, 2021, 7:20:07 AM \ No newline at end of file diff --git a/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/for_update01.sql b/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/for_update01.sql index 16b26902e..9bec896ee 100644 --- a/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/for_update01.sql +++ b/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/for_update01.sql @@ -12,5 +12,4 @@ select employee_id from (select * from employees) ---@SUCCESSFULLY_PARSED_AND_DEPARSED first on Aug 3, 2021, 7:20:08 AM ---@FAILURE: select employee_id from select*from employees for update of employee_id recorded first on Sep 7, 2021 7:58:09 AM \ No newline at end of file +--@SUCCESSFULLY_PARSED_AND_DEPARSED first on Aug 3, 2021, 7:20:08 AM \ No newline at end of file diff --git a/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/for_update02.sql b/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/for_update02.sql index 0be2cd2d4..fec5b51ab 100644 --- a/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/for_update02.sql +++ b/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/for_update02.sql @@ -12,5 +12,4 @@ select employee_id from (select employee_id+1 as employee_id from employees) ---@SUCCESSFULLY_PARSED_AND_DEPARSED first on Aug 3, 2021, 7:20:08 AM ---@FAILURE: select employee_id from select employee_id+1 as employee_id from employees for update recorded first on Sep 7, 2021 7:58:09 AM \ No newline at end of file +--@SUCCESSFULLY_PARSED_AND_DEPARSED first on Aug 3, 2021, 7:20:08 AM \ No newline at end of file diff --git a/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/for_update03.sql b/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/for_update03.sql index 83ffa9cfa..31ff7b89b 100644 --- a/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/for_update03.sql +++ b/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/for_update03.sql @@ -12,5 +12,4 @@ select employee_id from (select employee_id+1 as employee_id from employees) ---@SUCCESSFULLY_PARSED_AND_DEPARSED first on Aug 3, 2021, 7:20:08 AM ---@FAILURE: select employee_id from select employee_id+1 as employee_id from employees for update of employee_id recorded first on Sep 7, 2021 7:58:09 AM \ No newline at end of file +--@SUCCESSFULLY_PARSED_AND_DEPARSED first on Aug 3, 2021, 7:20:08 AM \ No newline at end of file diff --git a/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/for_update04.sql b/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/for_update04.sql index dda9141d0..59ffc0e6e 100644 --- a/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/for_update04.sql +++ b/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/for_update04.sql @@ -11,5 +11,4 @@ select employee_id from (select employee_id+1 as employee_id from employees) for update of employee_id nowait ---@SUCCESSFULLY_PARSED_AND_DEPARSED first on Aug 3, 2021, 7:20:08 AM ---@FAILURE: select employee_id from select employee_id+1 as employee_id from employees for update of employee_id nowait recorded first on Sep 7, 2021 7:58:09 AM \ No newline at end of file +--@SUCCESSFULLY_PARSED_AND_DEPARSED first on Aug 3, 2021, 7:20:08 AM \ No newline at end of file diff --git a/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/for_update05.sql b/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/for_update05.sql index 9f566da49..d57275cd6 100644 --- a/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/for_update05.sql +++ b/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/for_update05.sql @@ -11,5 +11,4 @@ select employee_id from (select employee_id+1 as employee_id from employees) for update of employee_id wait 10 ---@SUCCESSFULLY_PARSED_AND_DEPARSED first on Aug 3, 2021, 7:20:08 AM ---@FAILURE: select employee_id from select employee_id+1 as employee_id from employees for update of employee_id wait 10 recorded first on Sep 7, 2021 7:58:09 AM \ No newline at end of file +--@SUCCESSFULLY_PARSED_AND_DEPARSED first on Aug 3, 2021, 7:20:08 AM \ No newline at end of file diff --git a/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/function01.sql b/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/function01.sql index a4a30e614..7cf22151b 100644 --- a/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/function01.sql +++ b/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/function01.sql @@ -9,5 +9,4 @@ --- select decode(decode(decode( (select count(1) from dual), a, 1, 0), 0, 1), 1, 0) from dual ---@SUCCESSFULLY_PARSED_AND_DEPARSED first on Aug 3, 2021, 7:20:08 AM ---@FAILURE: select decode(decode(decode(select count(1)from dual,a,1,0),0,1),1,0)from dual recorded first on Sep 7, 2021 7:58:09 AM \ No newline at end of file +--@SUCCESSFULLY_PARSED_AND_DEPARSED first on Aug 3, 2021, 7:20:08 AM \ No newline at end of file diff --git a/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/join08.sql b/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/join08.sql index 38a7a3a1b..b3c57ad20 100644 --- a/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/join08.sql +++ b/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/join08.sql @@ -16,5 +16,4 @@ inner join (select * from dual) using(dummy) inner join (select * from dual) d on(d.dummy=t1.dummy) ---@SUCCESSFULLY_PARSED_AND_DEPARSED first on Aug 3, 2021, 7:20:08 AM ---@FAILURE: select*from dual t1 join select*from dual tt2 using(dummy)join select*from dual using(dummy)join select*from dual d on(d.dummy=tt3.dummy)inner join select*from dual tt2 using(dummy)inner join select*from dual using(dummy)inner join select*from dual d on(d.dummy=t1.dummy) recorded first on Sep 7, 2021 7:58:09 AM \ No newline at end of file +--@SUCCESSFULLY_PARSED_AND_DEPARSED first on Aug 3, 2021, 7:20:08 AM \ No newline at end of file diff --git a/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/join09.sql b/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/join09.sql index 136414c0b..c85a02a2a 100644 --- a/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/join09.sql +++ b/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/join09.sql @@ -16,5 +16,4 @@ inner join (select * from dual) using(dummy) inner join (select * from dual) d on(d.dummy=t1.dummy) ---@SUCCESSFULLY_PARSED_AND_DEPARSED first on Aug 3, 2021, 7:20:08 AM ---@FAILURE: select*from dual t1 left outer join select*from dual tt2 using(dummy)left outer join select*from dual using(dummy)left outer join select*from dual d on(d.dummy=tt3.dummy)inner join select*from dual tt2 using(dummy)inner join select*from dual using(dummy)inner join select*from dual d on(d.dummy=t1.dummy) recorded first on Sep 7, 2021 7:58:09 AM \ No newline at end of file +--@SUCCESSFULLY_PARSED_AND_DEPARSED first on Aug 3, 2021, 7:20:08 AM \ No newline at end of file diff --git a/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/join10.sql b/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/join10.sql index 3b793ac24..54671f903 100644 --- a/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/join10.sql +++ b/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/join10.sql @@ -13,5 +13,4 @@ select * from dual t1, ) ---@SUCCESSFULLY_PARSED_AND_DEPARSED first on Aug 3, 2021, 7:20:08 AM ---@FAILURE: select*from dual t1,(dual left outer join select*from dual tt2 using(dummy)) recorded first on Sep 7, 2021 7:58:09 AM \ No newline at end of file +--@SUCCESSFULLY_PARSED_AND_DEPARSED first on Aug 3, 2021, 7:20:08 AM \ No newline at end of file diff --git a/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/keywordasidentifier03.sql b/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/keywordasidentifier03.sql index d06afcf22..2344d13eb 100644 --- a/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/keywordasidentifier03.sql +++ b/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/keywordasidentifier03.sql @@ -32,5 +32,4 @@ ALL_IND_EXPRESSIONS ie where ind.index_name = ie.index_name(+) and ind.index_owner = ie.index_owner(+) ---@SUCCESSFULLY_PARSED_AND_DEPARSED first on Aug 3, 2021, 7:20:08 AM ---@FAILURE: select ind.index_owner,ind.index_name,ind.uniqueness,ind.status,ind.index_type,ind.temporary,ind.partitioned,ind.funcidx_status,ind.join_index,ind.columns,ie.column_expression,ind.index_name sdev_link_name,'index' sdev_link_type,ind.index_owner sdev_link_owner from select index_owner,table_owner,index_name,uniqueness,status,index_type,temporary,partitioned,funcidx_status,join_index,max(decode(position,1,column_name))||max(decode(position,2,','||column_name))||max(decode(position,3,','||column_name))||max(decode(position,4,','||column_name))||max(decode(position,5,','||column_name))||max(decode(position,6,','||column_name))||max(decode(position,7,','||column_name))||max(decode(position,8,','||column_name))||max(decode(position,9,','||column_name))||max(decode(position,10,','||column_name))columns from select di.owner index_owner,dc.table_owner,dc.index_name,di.uniqueness,di.status,di.index_type,di.temporary,di.partitioned,di.funcidx_status,di.join_index,dc.column_name,dc.column_position position from all_ind_columns dc,all_indexes di where dc.table_owner=:object_owner and dc.table_name=:object_name and dc.index_name=di.index_name and dc.index_owner=di.owner group by index_owner,table_owner,index_name,uniqueness,status,index_type,temporary,partitioned,funcidx_status,join_index ind,all_ind_expressions ie where ind.index_name=ie.index_name(+)and ind.index_owner=ie.index_owner(+) recorded first on Sep 7, 2021 7:58:10 AM \ No newline at end of file +--@SUCCESSFULLY_PARSED_AND_DEPARSED first on Aug 3, 2021, 7:20:08 AM \ No newline at end of file diff --git a/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/pivot02.sql b/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/pivot02.sql index b433389fd..d78b08cc3 100644 --- a/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/pivot02.sql +++ b/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/pivot02.sql @@ -20,5 +20,4 @@ select * from ( ---@SUCCESSFULLY_PARSED_AND_DEPARSED first on Aug 3, 2021, 7:20:08 AM ---@FAILURE: select*from select times_purchased as "puchase frequency",state_code from customers t pivot xml(count(state_code)for state_code in(select state_code from preferred_states))order by 1 recorded first on Sep 7, 2021 7:58:10 AM \ No newline at end of file +--@SUCCESSFULLY_PARSED_AND_DEPARSED first on Aug 3, 2021, 7:20:08 AM \ No newline at end of file diff --git a/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/pivot03.sql b/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/pivot03.sql index a751ae074..549bcac89 100644 --- a/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/pivot03.sql +++ b/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/pivot03.sql @@ -20,5 +20,4 @@ select * from ( ---@SUCCESSFULLY_PARSED_AND_DEPARSED first on Aug 3, 2021, 7:20:08 AM ---@FAILURE: select*from select times_purchased as "purchase frequency",state_code from customers t pivot xml(count(state_code)for state_code in(any))order by 1 recorded first on Sep 7, 2021 7:58:09 AM \ No newline at end of file +--@SUCCESSFULLY_PARSED_AND_DEPARSED first on Aug 3, 2021, 7:20:08 AM \ No newline at end of file diff --git a/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/pivot04.sql b/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/pivot04.sql index ac7e3baf3..a6639e601 100644 --- a/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/pivot04.sql +++ b/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/pivot04.sql @@ -28,5 +28,4 @@ from ) ---@SUCCESSFULLY_PARSED_AND_DEPARSED first on Aug 3, 2021, 7:20:08 AM ---@FAILURE: select value from(select 'a' v1,'e' v2,'i' v3,'o' v4,'u' v5 from dual unpivot(value for value_type in(v1,v2,v3,v4,v5))) recorded first on Sep 7, 2021 7:58:09 AM \ No newline at end of file +--@SUCCESSFULLY_PARSED_AND_DEPARSED first on Aug 3, 2021, 7:20:08 AM \ No newline at end of file diff --git a/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/pivot05.sql b/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/pivot05.sql index 0e647c18e..e46b11bec 100644 --- a/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/pivot05.sql +++ b/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/pivot05.sql @@ -13,5 +13,4 @@ from (select customer_id, product_code, quantity pivot xml (sum(quantity) as sum_quantity for product_code in (select distinct product_code from pivot_test)) ---@SUCCESSFULLY_PARSED_AND_DEPARSED first on Aug 3, 2021, 7:20:08 AM ---@FAILURE: select*from select customer_id,product_code,quantity from pivot_test pivot xml(sum(quantity)as sum_quantity for product_code in(select distinct product_code from pivot_test)) recorded first on Sep 7, 2021 7:58:09 AM \ No newline at end of file +--@SUCCESSFULLY_PARSED_AND_DEPARSED first on Aug 3, 2021, 7:20:08 AM \ No newline at end of file diff --git a/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/pivot06.sql b/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/pivot06.sql index c9522b109..52eaba3b7 100644 --- a/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/pivot06.sql +++ b/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/pivot06.sql @@ -14,5 +14,4 @@ pivot xml (sum(quantity) as sum_quantity for product_code in (select distinct pr from pivot_test where id < 10)) ---@SUCCESSFULLY_PARSED_AND_DEPARSED first on Aug 3, 2021, 7:20:08 AM ---@FAILURE: select*from select product_code,quantity from pivot_test pivot xml(sum(quantity)as sum_quantity for product_code in(select distinct product_code from pivot_test where id<10)) recorded first on Sep 7, 2021 7:58:10 AM \ No newline at end of file +--@SUCCESSFULLY_PARSED_AND_DEPARSED first on Aug 3, 2021, 7:20:08 AM \ No newline at end of file diff --git a/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/pivot07.sql b/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/pivot07.sql index cad1e0449..f32160836 100644 --- a/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/pivot07.sql +++ b/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/pivot07.sql @@ -13,5 +13,4 @@ from (select customer_id, product_code, quantity pivot (sum(quantity) as sum_quantity for product_code in ('a' as a, 'b' as b, 'c' as c)) order by customer_id ---@SUCCESSFULLY_PARSED_AND_DEPARSED first on Aug 3, 2021, 7:20:08 AM ---@FAILURE: select*from select customer_id,product_code,quantity from pivot_test pivot(sum(quantity)as sum_quantity for product_code in('a' as a,'b' as b,'c' as c))order by customer_id recorded first on Sep 7, 2021 7:58:10 AM \ No newline at end of file +--@SUCCESSFULLY_PARSED_AND_DEPARSED first on Aug 3, 2021, 7:20:08 AM \ No newline at end of file diff --git a/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/pivot07_Parenthesis.sql b/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/pivot07_Parenthesis.sql index 7d20a1525..e47df8ee7 100644 --- a/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/pivot07_Parenthesis.sql +++ b/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/pivot07_Parenthesis.sql @@ -14,5 +14,4 @@ from from pivot_test) pivot (sum(quantity) as sum_quantity for product_code in ('a' as a, 'b' as b, 'c' as c)) ) ---@SUCCESSFULLY_PARSED_AND_DEPARSED first on Jul 21, 2021 10:33:10 AM ---@FAILURE: select value from(select customer_id,product_code,quantity from pivot_test pivot(sum(quantity)as sum_quantity for product_code in('a' as a,'b' as b,'c' as c))) recorded first on Sep 7, 2021 7:58:09 AM \ No newline at end of file +--@SUCCESSFULLY_PARSED_AND_DEPARSED first on Jul 21, 2021 10:33:10 AM \ No newline at end of file diff --git a/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/pivot08.sql b/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/pivot08.sql index 5851deab4..b9ecebb4a 100644 --- a/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/pivot08.sql +++ b/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/pivot08.sql @@ -12,5 +12,4 @@ from (select product_code, quantity from pivot_test) pivot (sum(quantity) as sum_quantity for product_code in ('a' as a, 'b' as b, 'c' as c)) ---@SUCCESSFULLY_PARSED_AND_DEPARSED first on Aug 3, 2021, 7:20:07 AM ---@FAILURE: select*from select product_code,quantity from pivot_test pivot(sum(quantity)as sum_quantity for product_code in('a' as a,'b' as b,'c' as c)) recorded first on Sep 7, 2021 7:58:09 AM \ No newline at end of file +--@SUCCESSFULLY_PARSED_AND_DEPARSED first on Aug 3, 2021, 7:20:07 AM \ No newline at end of file diff --git a/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/pivot12.sql b/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/pivot12.sql index 3a9b02a07..b4ed92b1c 100644 --- a/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/pivot12.sql +++ b/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/pivot12.sql @@ -26,5 +26,4 @@ ) ) ---@SUCCESSFULLY_PARSED_AND_DEPARSED first on Aug 3, 2021, 7:20:08 AM ---@FAILURE: select value from(select 'a' v1,'e' v2,'i' v3,'o' v4,'u' v5 from dual unpivot include nulls(value for value_type in(v1,v2,v3,v4,v5))) recorded first on Sep 7, 2021 7:58:09 AM \ No newline at end of file +--@SUCCESSFULLY_PARSED_AND_DEPARSED first on Aug 3, 2021, 7:20:08 AM \ No newline at end of file diff --git a/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/query_factoring06.sql b/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/query_factoring06.sql index 2abb55793..b0be49ca1 100644 --- a/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/query_factoring06.sql +++ b/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/query_factoring06.sql @@ -23,5 +23,4 @@ select * from dept_costs ---@SUCCESSFULLY_PARSED_AND_DEPARSED first on Aug 3, 2021, 7:20:08 AM ---@FAILURE: with dept_costs as(select department_name,sum(salary)dept_total from employees e,departments d where e.department_id=d.department_id group by department_name),avg_cost as(select sum(dept_total)/count(*)avg from dept_costs)select*from dept_costs where dept_total>select avvg from avg_cost order by department_name recorded first on Sep 7, 2021 7:58:09 AM \ No newline at end of file +--@SUCCESSFULLY_PARSED_AND_DEPARSED first on Aug 3, 2021, 7:20:08 AM \ No newline at end of file diff --git a/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/query_factoring09.sql b/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/query_factoring09.sql index 57b55cf03..5f155486e 100644 --- a/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/query_factoring09.sql +++ b/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/query_factoring09.sql @@ -16,5 +16,4 @@ from t1, rn where rn <= cases order by pname ---@SUCCESSFULLY_PARSED_AND_DEPARSED first on Aug 3, 2021, 7:20:08 AM ---@FAILURE: with rn as(select rownum rn from dual connect by level<=select max(cases)from t1)select pname from t1,rn where rn<=cases order by pname recorded first on Sep 7, 2021 7:58:10 AM \ No newline at end of file +--@SUCCESSFULLY_PARSED_AND_DEPARSED first on Aug 3, 2021, 7:20:08 AM \ No newline at end of file diff --git a/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/query_factoring12.sql b/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/query_factoring12.sql index 11019f7cf..9b0a13ed9 100644 --- a/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/query_factoring12.sql +++ b/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/query_factoring12.sql @@ -10,5 +10,4 @@ with days as (select (select trunc(sysdate, 'MONTH') from dual) + rownum -1 as d from dual connect by rownum < 31) select d from days where (trunc(d) - trunc(d,'IW') +1 ) not in (6,7) and d <= last_day(sysdate) ---@SUCCESSFULLY_PARSED_AND_DEPARSED first on Aug 3, 2021, 7:20:07 AM ---@FAILURE: with days as(select select trunc(sysdate,'month')from dual+rownum-1 as d from dual connect by rownum<31)select d from days where(trunc(d)-trunc(d,'iw')+1)not in(6,7)and d<=last_day(sysdate) recorded first on Sep 7, 2021 7:58:10 AM \ No newline at end of file +--@SUCCESSFULLY_PARSED_AND_DEPARSED first on Aug 3, 2021, 7:20:07 AM \ No newline at end of file diff --git a/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/set01.sql b/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/set01.sql index 7fdab87ef..0280db742 100644 --- a/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/set01.sql +++ b/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/set01.sql @@ -14,5 +14,4 @@ select nt from dual ) ---@SUCCESSFULLY_PARSED_AND_DEPARSED first on Aug 3, 2021, 7:20:07 AM ---@FAILURE: select nt,set(nt)as nt_set from select varchar2_ntt('a','b','c','c')as nt from dual recorded first on Sep 7, 2021 7:58:10 AM \ No newline at end of file +--@SUCCESSFULLY_PARSED_AND_DEPARSED first on Aug 3, 2021, 7:20:07 AM \ No newline at end of file diff --git a/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/simple02.sql b/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/simple02.sql index ecbcae66c..190597280 100644 --- a/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/simple02.sql +++ b/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/simple02.sql @@ -11,5 +11,4 @@ select employee_id from (select employee_id+1 as employee_id from employees) for update ---@SUCCESSFULLY_PARSED_AND_DEPARSED first on Aug 3, 2021, 7:20:08 AM ---@FAILURE: select employee_id from select employee_id+1 as employee_id from employees for update recorded first on Sep 7, 2021 7:58:09 AM \ No newline at end of file +--@SUCCESSFULLY_PARSED_AND_DEPARSED first on Aug 3, 2021, 7:20:08 AM \ No newline at end of file diff --git a/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/simple03.sql b/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/simple03.sql index 1ccef9977..934524cd0 100644 --- a/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/simple03.sql +++ b/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/simple03.sql @@ -11,5 +11,4 @@ select employee_id from (select employee_id+1 as employee_id from employees) for update of employee_id ---@SUCCESSFULLY_PARSED_AND_DEPARSED first on Aug 3, 2021, 7:20:08 AM ---@FAILURE: select employee_id from select employee_id+1 as employee_id from employees for update of employee_id recorded first on Sep 7, 2021 7:58:09 AM \ No newline at end of file +--@SUCCESSFULLY_PARSED_AND_DEPARSED first on Aug 3, 2021, 7:20:08 AM \ No newline at end of file diff --git a/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/simple04.sql b/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/simple04.sql index f0c7c55af..4a68cb349 100644 --- a/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/simple04.sql +++ b/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/simple04.sql @@ -19,5 +19,4 @@ select * from ) ---@SUCCESSFULLY_PARSED_AND_DEPARSED first on Aug 3, 2021, 7:20:08 AM ---@FAILURE: select*from(select*from dual unpivot(value for value_type in(dummy))) recorded first on Sep 7, 2021 7:58:09 AM \ No newline at end of file +--@SUCCESSFULLY_PARSED_AND_DEPARSED first on Aug 3, 2021, 7:20:08 AM \ No newline at end of file diff --git a/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/simple05.sql b/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/simple05.sql index 1b6e86802..c210af03f 100644 --- a/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/simple05.sql +++ b/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/simple05.sql @@ -17,5 +17,4 @@ select * from a ) ---@SUCCESSFULLY_PARSED_AND_DEPARSED first on Aug 3, 2021, 7:20:08 AM ---@FAILURE: select*from select*from a unpivot(value for value_type in(dummy)) recorded first on Sep 7, 2021 7:58:09 AM \ No newline at end of file +--@SUCCESSFULLY_PARSED_AND_DEPARSED first on Aug 3, 2021, 7:20:08 AM \ No newline at end of file diff --git a/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/simple06.sql b/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/simple06.sql index a0d1e53a5..966a8b6f1 100644 --- a/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/simple06.sql +++ b/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/simple06.sql @@ -10,5 +10,4 @@ select * from (( select * from dual)) a ---@SUCCESSFULLY_PARSED_AND_DEPARSED first on Aug 3, 2021, 7:20:08 AM ---@FAILURE: select*from(select*from dual)a recorded first on Sep 7, 2021 7:58:09 AM \ No newline at end of file +--@SUCCESSFULLY_PARSED_AND_DEPARSED first on Aug 3, 2021, 7:20:08 AM \ No newline at end of file diff --git a/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/union07.sql b/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/union07.sql index 5ddc2c99a..47f09e09c 100644 --- a/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/union07.sql +++ b/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/union07.sql @@ -51,5 +51,4 @@ select * from ( ) where rownum_ >= ? ---@SUCCESSFULLY_PARSED_AND_DEPARSED first on Aug 3, 2021, 7:20:08 AM ---@FAILURE: select*from select row_.*,rownum rownum_ from select*from select results.*,row_number()over(partition by results.object_id order by results.gmt_modified desc)rn from(select sus.id id,sus.gmt_create gmt_create,sus.gmt_modified gmt_modified,sus.company_id company_id,sus.object_id object_id,sus.object_type object_type,sus.confirm_type confirm_type,sus.operator operator,sus.filter_type filter_type,sus.member_id member_id,sus.member_fuc_q member_fuc_q,sus.risk_type risk_type,'y' is_draft from f_u_c_ sus,a_b_c_draft p,member m where 1=1 and p.company_id=m.company_id and m.login_id=? and p.sale_type in(?)and p.id=sus.object_id)union(select sus.id id,sus.gmt_create gmt_create,sus.gmt_modified gmt_modified,sus.company_id company_id,sus.object_id object_id,sus.object_type object_type,sus.confirm_type confirm_type,sus.operator operator,sus.filter_type filter_type,sus.member_id member_id,sus.member_fuc_q member_fuc_q,sus.risk_type risk_type,'n' is_draft from f_u_c_ sus,a_b_c p,member m where 1=1 and p.company_id=m.company_id and m.login_id=? and p.sale_type in(?)and p.id=sus.object_id)results where rn=1 order by gmt_modified desc row_ where rownum<=? where rownum_>=? recorded first on Sep 7, 2021 7:58:10 AM \ No newline at end of file +--@SUCCESSFULLY_PARSED_AND_DEPARSED first on Aug 3, 2021, 7:20:08 AM \ No newline at end of file diff --git a/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/union08.sql b/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/union08.sql index a9bd1142c..5da67f266 100644 --- a/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/union08.sql +++ b/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/union08.sql @@ -13,5 +13,4 @@ select * from dual where exists ( (select * from dual) ) ---@SUCCESSFULLY_PARSED_AND_DEPARSED first on Aug 3, 2021, 7:20:08 AM ---@FAILURE: select*from dual where exists(select*from dual)union all(select*from dual) recorded first on Sep 7, 2021 7:58:09 AM \ No newline at end of file +--@SUCCESSFULLY_PARSED_AND_DEPARSED first on Aug 3, 2021, 7:20:08 AM \ No newline at end of file diff --git a/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/union09.sql b/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/union09.sql index 94d1e4d78..a19cc34a8 100644 --- a/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/union09.sql +++ b/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/union09.sql @@ -35,5 +35,4 @@ select * from ( ) where rownum >= 1 ---@SUCCESSFULLY_PARSED_AND_DEPARSED first on Aug 3, 2021, 7:20:08 AM ---@FAILURE: select*from select row_.*from select*from select results.*,1 rn from(select dummy from dual where 1=1)union(select dummy from dual where 1=1)results where rn=1 order by dummy desc row_ where rownum<=1 where rownum>=1 recorded first on Sep 7, 2021 7:58:09 AM \ No newline at end of file +--@SUCCESSFULLY_PARSED_AND_DEPARSED first on Aug 3, 2021, 7:20:08 AM \ No newline at end of file diff --git a/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/union10.sql b/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/union10.sql index eb8f20a48..0055acf05 100644 --- a/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/union10.sql +++ b/src/test/resources/net/sf/jsqlparser/statement/select/oracle-tests/union10.sql @@ -22,5 +22,4 @@ select as yes_no from dual ---@SUCCESSFULLY_PARSED_AND_DEPARSED first on Aug 3, 2021, 7:20:08 AM ---@FAILURE: select(select 'y' from dual where exists select 1 from dual where 1=0)union(select 'n' from dual where not exists select 1 from dual where 1=0)as yes_no from dual recorded first on Sep 7, 2021 7:58:09 AM \ No newline at end of file +--@SUCCESSFULLY_PARSED_AND_DEPARSED first on Aug 3, 2021, 7:20:08 AM \ No newline at end of file