Skip to content

Commit 3293023

Browse files
committed
fixes #603
1 parent e80ea68 commit 3293023

File tree

2 files changed

+19
-3
lines changed

2 files changed

+19
-3
lines changed

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

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -276,6 +276,7 @@ TOKEN: /* SQL Keywords. prefixed with K_ to avoid name clashes */
276276
| <K_USE : "USE">
277277
| <K_SQL_CALC_FOUND_ROWS: "SQL_CALC_FOUND_ROWS">
278278
| <K_USING:"USING">
279+
| <K_UNSIGNED:"UNSIGNED">
279280
| <K_VALIDATE : "VALIDATE">
280281
| <K_VALUE:"VALUE">
281282
| <K_VALUES:"VALUES">
@@ -963,6 +964,7 @@ String RelObjectNameWithoutValue() :
963964
| tk=<K_SEPARATOR> | tk=<K_NO> | tk=<K_ACTION> | tk=<K_CASCADE> | tk=<K_END>
964965
| tk=<K_TABLE> | tk=<K_DATETIMELITERAL> | tk=<K_COMMIT> | tk=<K_PRECISION>
965966
| tk=<K_INSERT> | tk=<K_INDEX> | tk=<K_PRIMARY> | tk=<K_ENABLE>
967+
| tk=<K_UNSIGNED>
966968
)
967969

968970
{ return tk.image; }
@@ -3177,9 +3179,13 @@ ColDataType ColDataType():
31773179
List<Integer> array = new ArrayList<Integer>();
31783180
}
31793181
{
3180-
( (tk=<K_CHARACTER> | tk=<K_BIT>) [tk2=<K_VARYING>] { colDataType.setDataType(tk.image + (tk2!=null?" " + tk2.image:"")); }
3181-
| tk=<K_DOUBLE> [LOOKAHEAD(2) tk2=<K_PRECISION>] { colDataType.setDataType(tk.image + (tk2!=null?" " + tk2.image:"")); }
3182-
| ( tk=<S_IDENTIFIER> | tk=<K_DATETIMELITERAL> | tk=<K_XML> | tk=<K_INTERVAL> | tk=<DT_ZONE> ) { colDataType.setDataType(tk.image); })
3182+
(
3183+
(tk=<K_CHARACTER> | tk=<K_BIT>) [tk2=<K_VARYING>] { colDataType.setDataType(tk.image + (tk2!=null?" " + tk2.image:"")); }
3184+
| tk=<K_DOUBLE> [LOOKAHEAD(2) tk2=<K_PRECISION>] { colDataType.setDataType(tk.image + (tk2!=null?" " + tk2.image:"")); }
3185+
| ( tk=<S_IDENTIFIER> | tk=<K_DATETIMELITERAL> | tk=<K_XML> | tk=<K_INTERVAL> | tk=<DT_ZONE> )
3186+
{ colDataType.setDataType(tk.image); }
3187+
| tk=<K_UNSIGNED> tk2=<S_IDENTIFIER> {colDataType.setDataType(tk.image + " " + tk2.image);}
3188+
)
31833189

31843190
[LOOKAHEAD(2) "(" ( (tk=<S_LONG> | tk=<S_CHAR_LITERAL> | tk=<S_IDENTIFIER> ) { argumentsStringList.add(tk.image); } ["," {/*argumentsStringList.add(",");*/}] )* ")"]
31853191
[( "[" {tk=null;} [ tk=<S_LONG> ] { array.add(tk!=null?Integer.valueOf(tk.image):null); } "]" )+ { colDataType.setArrayData(array); } ]
@@ -3300,6 +3306,8 @@ List<String> CreateParameter():
33003306
tk=<K_EXCLUDE> { param.add(tk.image); }
33013307
|
33023308
tk=<K_WHERE> { param.add(tk.image); }
3309+
|
3310+
tk=<K_UNSIGNED> { param.add(tk.image); }
33033311

33043312
)
33053313
{return param;}

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

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2793,4 +2793,12 @@ public void testJoinerExpressionIssue596() throws JSQLParserException {
27932793
// public void testJoinerExpressionIssue596_2() throws JSQLParserException {
27942794
// assertSqlCanBeParsedAndDeparsed("SELECT * FROM a JOIN b JOIN c ON b.id = c.id ON a.id = c.id");
27952795
// }
2796+
2797+
public void testProblemSqlIssue603() throws JSQLParserException {
2798+
assertSqlCanBeParsedAndDeparsed("SELECT CASE WHEN MAX(CAST(a.jobNum AS INTEGER)) IS NULL THEN '1000' ELSE MAX(CAST(a.jobNum AS INTEGER)) + 1 END FROM user_employee a");
2799+
}
2800+
2801+
public void testProblemSqlIssue603_2() throws JSQLParserException {
2802+
assertSqlCanBeParsedAndDeparsed("SELECT CAST(col1 AS UNSIGNED INTEGER) FROM mytable");
2803+
}
27962804
}

0 commit comments

Comments
 (0)