From 41c77ca5dd75ae1e11daeb39bf1a77b884345d3c Mon Sep 17 00:00:00 2001 From: Tobias Warneke Date: Sat, 9 Apr 2022 23:16:45 +0200 Subject: [PATCH] fixes #1505 --- .../jjtree/net/sf/jsqlparser/parser/JSqlParserCC.jjt | 10 ++++++++-- .../net/sf/jsqlparser/statement/insert/InsertTest.java | 5 +++++ .../net/sf/jsqlparser/statement/select/SelectTest.java | 8 ++++---- 3 files changed, 17 insertions(+), 6 deletions(-) diff --git a/src/main/jjtree/net/sf/jsqlparser/parser/JSqlParserCC.jjt b/src/main/jjtree/net/sf/jsqlparser/parser/JSqlParserCC.jjt index cf94bbb91..430e0c656 100644 --- a/src/main/jjtree/net/sf/jsqlparser/parser/JSqlParserCC.jjt +++ b/src/main/jjtree/net/sf/jsqlparser/parser/JSqlParserCC.jjt @@ -1935,8 +1935,14 @@ SelectBody SetOperationList() #SetOperationList: { { if (selects.size()==1 && selects.get(0) instanceof PlainSelect && orderByElements==null) { - if (brackets.get(0)) - ((PlainSelect)selects.get(0)).setUseBrackets(true); + if (brackets.get(0)) { + if (limit==null && offset==null && fetch==null && withIsolation==null) + ((PlainSelect)selects.get(0)).setUseBrackets(true); + else { + list.setBracketsOpsAndSelects(brackets,selects,operations); + return list; //brackets with outside limit, offset + } + } return selects.get(0); } else { if (selects.size()>1 && selects.get(selects.size()-1) instanceof PlainSelect && !brackets.get(brackets.size() - 1)) { diff --git a/src/test/java/net/sf/jsqlparser/statement/insert/InsertTest.java b/src/test/java/net/sf/jsqlparser/statement/insert/InsertTest.java index 917bfe2d6..c7f25e940 100644 --- a/src/test/java/net/sf/jsqlparser/statement/insert/InsertTest.java +++ b/src/test/java/net/sf/jsqlparser/statement/insert/InsertTest.java @@ -381,4 +381,9 @@ public void testInsertTableArrays4() throws JSQLParserException { + " ARRAY[['breakfast', 'consulting'], ['meeting', 'lunch']])", true); } + + @Test + public void testKeywordDefaultIssue1470() throws JSQLParserException { + assertSqlCanBeParsedAndDeparsed("INSERT INTO mytable (col1, col2, col3) VALUES (?, 'sadfsd', default)"); + } } diff --git a/src/test/java/net/sf/jsqlparser/statement/select/SelectTest.java b/src/test/java/net/sf/jsqlparser/statement/select/SelectTest.java index 3a63fbfed..301891f70 100644 --- a/src/test/java/net/sf/jsqlparser/statement/select/SelectTest.java +++ b/src/test/java/net/sf/jsqlparser/statement/select/SelectTest.java @@ -5059,12 +5059,12 @@ public void testWithIsolation() throws JSQLParserException { } @Test - public void testKeywordDefaultIssue1470() throws JSQLParserException { - assertSqlCanBeParsedAndDeparsed("INSERT INTO mytable (col1, col2, col3) VALUES (?, 'sadfsd', default)"); + public void testLoclTimezone1471() throws JSQLParserException { + assertSqlCanBeParsedAndDeparsed("SELECT TO_CHAR(CAST(SYSDATE AS TIMESTAMP WITH LOCAL TIME ZONE), 'HH:MI:SS AM TZD') FROM DUAL"); } @Test - public void testLoclTimezone1471() throws JSQLParserException { - assertSqlCanBeParsedAndDeparsed("SELECT TO_CHAR(CAST(SYSDATE AS TIMESTAMP WITH LOCAL TIME ZONE), 'HH:MI:SS AM TZD') FROM DUAL"); + public void testMissingLimitIssue1505() throws JSQLParserException { + assertSqlCanBeParsedAndDeparsed("(SELECT * FROM mytable) LIMIT 1"); } }