Skip to content

Commit 7c78030

Browse files
committed
Merge remote-tracking branch 'origin/master' into fix/optional-blank-line-statement-separator
# Conflicts: # src/main/java/net/sf/jsqlparser/parser/AbstractJSqlParser.java # src/main/java/net/sf/jsqlparser/parser/feature/Feature.java
2 parents e4c1e60 + ac8a4f0 commit 7c78030

9 files changed

Lines changed: 279 additions & 64 deletions

File tree

‎src/main/java/net/sf/jsqlparser/parser/AbstractJSqlParser.java‎

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,8 @@ public enum Dialect {
3939
Feature.allowDoubleQuotedStrings), SQLSERVER(AdjacentStringLiterals.OFF,
4040
Feature.allowSquareBracketQuotation), POSTGRESQL(
4141
AdjacentStringLiterals.NEWLINE,
42-
Feature.allowDollarQuotedStringTags), H2, EXASOL, BIGQUERY(
42+
Feature.allowDollarQuotedStringTags,
43+
Feature.allowDigitSeparators), H2, EXASOL, BIGQUERY(
4344
AdjacentStringLiterals.WHITESPACE,
4445
Feature.allowDoubleQuotedStrings,
4546
Feature.allowHashLineComments,
@@ -199,6 +200,14 @@ public P withBlankLinesAsSeparator(boolean allowBlankLinesAsStatementSeparator)
199200
allowBlankLinesAsStatementSeparator);
200201
}
201202

203+
public P withDigitSeparators() {
204+
return withFeature(Feature.allowDigitSeparators, true);
205+
}
206+
207+
public P withDigitSeparators(boolean allowDigitSeparators) {
208+
return withFeature(Feature.allowDigitSeparators, allowDigitSeparators);
209+
}
210+
202211
public P withUnparenthesizedSubSelects() {
203212
return withFeature(Feature.allowUnparenthesizedSubSelects, true);
204213
}

‎src/main/java/net/sf/jsqlparser/parser/feature/Feature.java‎

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -896,6 +896,12 @@ public enum Feature {
896896
*/
897897
allowBlankLinesAsStatementSeparator(true),
898898

899+
/**
900+
* allows digit separators in numeric literals, e.g. {@code 1_000_000} (DuckDB, PostgreSQL 16);
901+
* disabled by default, where MySQL reads {@code 2024_01} as an identifier
902+
*/
903+
allowDigitSeparators(false),
904+
899905
/**
900906
* allows sub selects without parentheses, e.g. `select * from dual where 1 = select 1`
901907
*/

‎src/main/java/net/sf/jsqlparser/statement/select/TableStatement.java‎

Lines changed: 0 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -34,23 +34,6 @@ public StringBuilder appendSelectBodyTo(StringBuilder builder) {
3434
return builder;
3535
}
3636

37-
@SuppressWarnings({"PMD.CyclomaticComplexity"})
38-
@Override
39-
public StringBuilder appendTo(StringBuilder builder) {
40-
41-
appendSelectBodyTo(builder);
42-
43-
builder.append(orderByToString(false, orderByElements));
44-
45-
if (limit != null) {
46-
builder.append(limit);
47-
}
48-
if (offset != null) {
49-
builder.append(offset);
50-
}
51-
return builder;
52-
}
53-
5437
@Override
5538
public <T, S> T accept(SelectVisitor<T> selectVisitor, S context) {
5639
return selectVisitor.visit(this, context);

‎src/main/java/net/sf/jsqlparser/util/deparser/TableStatementDeParser.java‎

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@
1313
import net.sf.jsqlparser.statement.piped.FromQuery;
1414
import net.sf.jsqlparser.statement.select.*;
1515

16+
import java.util.List;
17+
1618
/**
1719
* @author jxnu-liguobin
1820
*/
@@ -84,18 +86,39 @@ public <S> StringBuilder visit(LateralSubSelect lateralSubSelect, S context) {
8486

8587
@Override
8688
public <S> StringBuilder visit(TableStatement tableStatement, S context) {
89+
List<WithItem<?>> withItemsList = tableStatement.getWithItemsList();
90+
if (withItemsList != null && !withItemsList.isEmpty()) {
91+
SelectDeParser selectDeParser = new SelectDeParser(expressionVisitor, builder);
92+
builder.append("WITH ");
93+
for (int i = 0; i < withItemsList.size(); i++) {
94+
if (i > 0) {
95+
builder.append(", ");
96+
}
97+
withItemsList.get(i).accept((SelectVisitor<?>) selectDeParser, context);
98+
}
99+
builder.append(" ");
100+
}
87101
tableStatement.appendSelectBodyTo(builder);
88102
if (tableStatement.getOrderByElements() != null) {
89103
new OrderByDeParser(expressionVisitor, builder)
90104
.deParse(tableStatement.getOrderByElements());
91105
}
92106

107+
if (tableStatement.getOption() != null) {
108+
builder.append(tableStatement.getOption());
109+
}
93110
if (tableStatement.getLimit() != null) {
94111
new LimitDeparser(expressionVisitor, builder).deParse(tableStatement.getLimit());
95112
}
96113
if (tableStatement.getOffset() != null) {
97114
deparse(tableStatement.getOffset());
98115
}
116+
if (tableStatement.getFetch() != null) {
117+
builder.append(tableStatement.getFetch());
118+
}
119+
if (tableStatement.getIsolation() != null) {
120+
builder.append(tableStatement.getIsolation());
121+
}
99122

100123
// TODO UNION
101124

0 commit comments

Comments
 (0)