Skip to content

Commit ed95e87

Browse files
committed
allow top keyword as column / table / alias name
implemented tests
1 parent 2c02cc6 commit ed95e87

File tree

2 files changed

+18
-3
lines changed

2 files changed

+18
-3
lines changed

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

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1078,7 +1078,7 @@ Normal names.
10781078
String RelObjectName() :
10791079
{ Token tk = null; String result = null; }
10801080
{
1081-
(result = RelObjectNameWithoutValue() | tk=<K_VALUE> | tk=<K_VALUES> | tk=<K_INTERVAL>)
1081+
(result = RelObjectNameWithoutValue() | tk=<K_TOP> | tk=<K_VALUE> | tk=<K_VALUES> | tk=<K_INTERVAL>)
10821082

10831083
{
10841084
if (tk!=null) result=tk.image;
@@ -1109,7 +1109,7 @@ String RelObjectNameExt2():
11091109
String result=null;
11101110
}
11111111
{
1112-
( result=RelObjectNameExt() | tk=<K_TOP> | tk=<K_FROM> )
1112+
( result=RelObjectNameExt() | tk=<K_FROM> )
11131113
{
11141114
if (tk!=null) result=tk.image;
11151115
return result;
@@ -1217,7 +1217,7 @@ PlainSelect PlainSelect() #PlainSelect:
12171217
)
12181218
]
12191219

1220-
[top = Top() { plainSelect.setTop(top); } ]
1220+
[ LOOKAHEAD(2) top = Top() { plainSelect.setTop(top); } ]
12211221

12221222
selectItems=SelectItemsList()
12231223

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

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3299,6 +3299,21 @@ public void testTrueFalseLiteral() throws JSQLParserException {
32993299
assertSqlCanBeParsedAndDeparsed("SELECT * FROM tbl WHERE true OR clm1 = 3");
33003300
}
33013301

3302+
@Test
3303+
public void testTopKeyWord() throws JSQLParserException {
3304+
assertSqlCanBeParsedAndDeparsed("SELECT top.date AS mycol1 FROM mytable top WHERE top.myid = :myid AND top.myid2 = 123");
3305+
}
3306+
3307+
@Test
3308+
public void testTopKeyWord2() throws JSQLParserException {
3309+
assertSqlCanBeParsedAndDeparsed("SELECT top.date");
3310+
}
3311+
3312+
@Test
3313+
public void testTopKeyWord3() throws JSQLParserException {
3314+
assertSqlCanBeParsedAndDeparsed("SELECT * FROM mytable top");
3315+
}
3316+
33023317
@Test
33033318
public void testRawStringExpressionIssue656() throws JSQLParserException {
33043319
for (String c : new String[]{"u", "e", "n", "r", "b", "rb"}) {

0 commit comments

Comments
 (0)