Skip to content

Commit cf0128a

Browse files
committed
added SQL_CACHE implementation and changed
1 parent 1387891 commit cf0128a

File tree

9 files changed

+45
-20
lines changed

9 files changed

+45
-20
lines changed

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -699,7 +699,7 @@ public enum Feature {
699699
// MYSQL
700700

701701
mySqlHintStraightJoin,
702-
mysqlSqlNoCache,
702+
mysqlSqlCacheFlag,
703703
mysqlCalcFoundRows,
704704

705705
// SQLSERVER
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
/*-
2+
* #%L
3+
* JSQLParser library
4+
* %%
5+
* Copyright (C) 2004 - 2022 JSQLParser
6+
* %%
7+
* Dual licensed under GNU LGPL 2.1 or Apache License 2.0
8+
* #L%
9+
*/
10+
package net.sf.jsqlparser.statement.select;
11+
12+
/**
13+
*
14+
* @author tw
15+
*/
16+
public enum MySqlSqlCacheFlags {
17+
SQL_CACHE, SQL_NO_CACHE
18+
}

src/main/java/net/sf/jsqlparser/statement/select/PlainSelect.java

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ public class PlainSelect extends ASTNodeAccessImpl implements SelectBody {
4949
private boolean useBrackets = false;
5050
private Wait wait;
5151
private boolean mySqlSqlCalcFoundRows = false;
52-
private boolean sqlNoCacheFlag = false;
52+
private MySqlSqlCacheFlags mySqlCacheFlag = null;
5353
private String forXmlPath;
5454
private KSQLWindow ksqlWindow = null;
5555
private boolean noWait = false;
@@ -361,8 +361,8 @@ public String toString() {
361361
if (top != null) {
362362
sql.append(top).append(" ");
363363
}
364-
if (sqlNoCacheFlag) {
365-
sql.append("SQL_NO_CACHE").append(" ");
364+
if (mySqlCacheFlag != null) {
365+
sql.append(mySqlCacheFlag.name()).append(" ");
366366
}
367367
if (mySqlSqlCalcFoundRows) {
368368
sql.append("SQL_CALC_FOUND_ROWS").append(" ");
@@ -544,25 +544,25 @@ public PlainSelect withMySqlSqlCalcFoundRows(boolean mySqlCalcFoundRows) {
544544
return this;
545545
}
546546

547-
public PlainSelect withMySqlSqlNoCache(boolean sqlNoCacheFlagSet) {
548-
this.setMySqlSqlNoCache(sqlNoCacheFlagSet);
547+
public PlainSelect withMySqlSqlNoCache(MySqlSqlCacheFlags mySqlCacheFlag) {
548+
this.setMySqlSqlCacheFlag(mySqlCacheFlag);
549549
return this;
550550
}
551551

552552
public void setMySqlSqlCalcFoundRows(boolean mySqlCalcFoundRows) {
553553
this.mySqlSqlCalcFoundRows = mySqlCalcFoundRows;
554554
}
555555

556-
public void setMySqlSqlNoCache(boolean sqlNoCacheFlagSet) {
557-
this.sqlNoCacheFlag = sqlNoCacheFlagSet;
556+
public void setMySqlSqlCacheFlag(MySqlSqlCacheFlags sqlCacheFlag) {
557+
this.mySqlCacheFlag = sqlCacheFlag;
558558
}
559559

560560
public boolean getMySqlSqlCalcFoundRows() {
561561
return this.mySqlSqlCalcFoundRows;
562562
}
563563

564-
public boolean getMySqlSqlNoCache() {
565-
return this.sqlNoCacheFlag;
564+
public MySqlSqlCacheFlags getMySqlSqlCacheFlag() {
565+
return this.mySqlCacheFlag;
566566
}
567567

568568
public void setNoWait(boolean noWait) {

src/main/java/net/sf/jsqlparser/util/deparser/SelectDeParser.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -122,8 +122,8 @@ public void visit(PlainSelect plainSelect) {
122122
buffer.append(top).append(" ");
123123
}
124124

125-
if (plainSelect.getMySqlSqlNoCache()) {
126-
buffer.append("SQL_NO_CACHE").append(" ");
125+
if (plainSelect.getMySqlSqlCacheFlag() != null) {
126+
buffer.append(plainSelect.getMySqlSqlCacheFlag().name()).append(" ");
127127
}
128128

129129
if (plainSelect.getMySqlSqlCalcFoundRows()) {

src/main/java/net/sf/jsqlparser/util/validation/feature/MariaDbVersion.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -138,7 +138,8 @@ public enum MariaDbVersion implements Version {
138138
Feature.commit,
139139
// https://mariadb.com/kb/en/optimizer-hints/
140140
Feature.mySqlHintStraightJoin,
141-
Feature.mysqlCalcFoundRows, Feature.mysqlSqlNoCache)),
141+
Feature.mysqlCalcFoundRows,
142+
Feature.mysqlSqlCacheFlag)),
142143

143144
ORACLE_MODE("oracle_mode", V10_5_4.copy().add(Feature.selectUnique).getFeatures());
144145

src/main/java/net/sf/jsqlparser/util/validation/feature/MySqlVersion.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,7 @@ public enum MySqlVersion implements Version {
121121
Feature.commit,
122122
//
123123
Feature.mySqlHintStraightJoin,
124-
Feature.mysqlSqlNoCache,
124+
Feature.mysqlSqlCacheFlag,
125125
Feature.mysqlCalcFoundRows));
126126

127127
private Set<Feature> features;

src/main/java/net/sf/jsqlparser/util/validation/validator/SelectValidator.java

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@
5252
* @author gitmotte
5353
*/
5454
public class SelectValidator extends AbstractValidator<SelectItem>
55-
implements SelectVisitor, SelectItemVisitor, FromItemVisitor, PivotVisitor {
55+
implements SelectVisitor, SelectItemVisitor, FromItemVisitor, PivotVisitor {
5656

5757
@Override
5858
public void visit(PlainSelect plainSelect) {
@@ -74,7 +74,7 @@ public void visit(PlainSelect plainSelect) {
7474
}
7575

7676
validateOptionalFeature(c, plainSelect.getTop(), Feature.top);
77-
validateFeature(c, plainSelect.getMySqlSqlNoCache(), Feature.mysqlSqlNoCache);
77+
validateFeature(c, plainSelect.getMySqlSqlCacheFlag() != null, Feature.mysqlSqlCacheFlag);
7878
validateFeature(c, plainSelect.getMySqlSqlCalcFoundRows(), Feature.mysqlCalcFoundRows);
7979
validateOptionalFeature(c, plainSelect.getIntoTables(), Feature.selectInto);
8080
validateOptionalFeature(c, plainSelect.getKsqlWindow(), Feature.kSqlWindow);
@@ -243,7 +243,7 @@ public void validateOptionalJoin(Join join) {
243243
}
244244

245245
validateOptionalFromItem(join.getRightItem());
246-
for (Expression onExpression: join.getOnExpressions()) {
246+
for (Expression onExpression : join.getOnExpressions()) {
247247
validateOptionalExpression(onExpression);
248248
}
249249
validateOptionalExpressions(join.getUsingColumns());
@@ -331,6 +331,4 @@ public void validate(SelectItem statement) {
331331
statement.accept(this);
332332
}
333333

334-
335-
336334
}

src/main/jjtree/net/sf/jsqlparser/parser/JSqlParserCC.jjt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -404,6 +404,7 @@ TOKEN: /* SQL Keywords. prefixed with K_ to avoid name clashes */
404404
| <K_USER:"USER">
405405
| <K_SQL_CALC_FOUND_ROWS: "SQL_CALC_FOUND_ROWS">
406406
| <K_SQL_NO_CACHE: "SQL_NO_CACHE">
407+
| <K_SQL_CACHE: "SQL_CACHE">
407408
| <K_USING:"USING">
408409
| <K_SIGNED:"SIGNED">
409410
| <K_STRING_FUNCTION_NAME: ("SUBSTR" | "SUBSTRING" | "TRIM" | "POSITION" | "OVERLAY")>
@@ -1849,7 +1850,8 @@ PlainSelect PlainSelect() #PlainSelect:
18491850
)
18501851
|
18511852
(
1852-
<K_SQL_NO_CACHE> { plainSelect.setMySqlSqlNoCache(true); }
1853+
<K_SQL_NO_CACHE> { plainSelect.setMySqlSqlCacheFlag(MySqlSqlCacheFlags.SQL_NO_CACHE); }
1854+
| <K_SQL_CACHE> { plainSelect.setMySqlSqlCacheFlag(MySqlSqlCacheFlags.SQL_CACHE); }
18531855
)
18541856
)
18551857
]

src/test/java/net/sf/jsqlparser/statement/select/SelectTest.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2809,6 +2809,12 @@ public void testSqlNoCache() throws JSQLParserException {
28092809
String stmt = "SELECT SQL_NO_CACHE sales.date FROM sales";
28102810
assertSqlCanBeParsedAndDeparsed(stmt);
28112811
}
2812+
2813+
@Test
2814+
public void testSqlCache() throws JSQLParserException {
2815+
String stmt = "SELECT SQL_CACHE sales.date FROM sales";
2816+
assertSqlCanBeParsedAndDeparsed(stmt);
2817+
}
28122818

28132819
public void testSelectInto1() throws JSQLParserException {
28142820
assertSqlCanBeParsedAndDeparsed("SELECT * INTO user_copy FROM user");

0 commit comments

Comments
 (0)