Skip to content

Commit

Permalink
Adding support for MySQL's SQL_NO_CACHE flag
Browse files Browse the repository at this point in the history
  • Loading branch information
tomershay committed Mar 25, 2018
1 parent de29e1e commit 403e722
Show file tree
Hide file tree
Showing 4 changed files with 26 additions and 0 deletions.
12 changes: 12 additions & 0 deletions src/main/java/net/sf/jsqlparser/statement/select/PlainSelect.java
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,7 @@ public class PlainSelect extends ASTNodeAccessImpl implements SelectBody {
private boolean useBrackets = false;
private Wait wait;
private boolean mySqlSqlCalcFoundRows = false;
private boolean sqlNoCacheFlag = false;

public boolean isUseBrackets() {
return useBrackets;
Expand Down Expand Up @@ -313,6 +314,9 @@ public String toString() {
if (top != null) {
sql.append(top).append(" ");
}
if (sqlNoCacheFlag) {
sql.append("SQL_NO_CACHE").append(" ");
}
if (mySqlSqlCalcFoundRows) {
sql.append("SQL_CALC_FOUND_ROWS").append(" ");
}
Expand Down Expand Up @@ -465,7 +469,15 @@ public void setMySqlSqlCalcFoundRows(boolean mySqlCalcFoundRows) {
this.mySqlSqlCalcFoundRows = mySqlCalcFoundRows;
}

public void setMySqlSqlNoCache(boolean sqlNoCacheFlagSet) {
this.sqlNoCacheFlag = sqlNoCacheFlagSet;
}

public boolean getMySqlSqlCalcFoundRows() {
return this.mySqlSqlCalcFoundRows;
}

public boolean getMySqlSqlNoCache() {
return this.sqlNoCacheFlag;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -97,6 +97,10 @@ public void visit(PlainSelect plainSelect) {
buffer.append(top).append(" ");
}

if (plainSelect.getMySqlSqlNoCache()) {
buffer.append("SQL_NO_CACHE").append(" ");
}

if (plainSelect.getMySqlSqlCalcFoundRows()) {
buffer.append("SQL_CALC_FOUND_ROWS").append(" ");
}
Expand Down
5 changes: 5 additions & 0 deletions src/main/jjtree/net/sf/jsqlparser/parser/JSqlParserCC.jjt
Original file line number Diff line number Diff line change
Expand Up @@ -274,6 +274,7 @@ TOKEN: /* SQL Keywords. prefixed with K_ to avoid name clashes */
| <K_UPSERT:"UPSERT">
| <K_USE : "USE">
| <K_SQL_CALC_FOUND_ROWS: "SQL_CALC_FOUND_ROWS">
| <K_SQL_NO_CACHE: "SQL_NO_CACHE">
| <K_USING:"USING">
| <K_VALIDATE : "VALIDATE">
| <K_VALUE:"VALUE">
Expand Down Expand Up @@ -1108,6 +1109,10 @@ PlainSelect PlainSelect() #PlainSelect:
(
<K_SQL_CALC_FOUND_ROWS> { plainSelect.setMySqlSqlCalcFoundRows(true); }
)
|
(
<K_SQL_NO_CACHE> { plainSelect.setMySqlSqlNoCache(true); }
)
]

[top = Top() { plainSelect.setTop(top); } ]
Expand Down
5 changes: 5 additions & 0 deletions src/test/java/net/sf/jsqlparser/test/select/SelectTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -2153,6 +2153,11 @@ public void testJsonExpression() throws JSQLParserException {
}
}

public void testSqlNoCache() throws JSQLParserException {
String stmt = "SELECT SQL_NO_CACHE sales.date FROM sales";
assertSqlCanBeParsedAndDeparsed(stmt);
}

public void testSelectInto1() throws JSQLParserException {
assertSqlCanBeParsedAndDeparsed("SELECT * INTO user_copy FROM user");
}
Expand Down

0 comments on commit 403e722

Please sign in to comment.