File tree Expand file tree Collapse file tree 2 files changed +36
-1
lines changed
main/jjtree/net/sf/jsqlparser/parser
test/java/net/sf/jsqlparser/statement/select Expand file tree Collapse file tree 2 files changed +36
-1
lines changed Original file line number Diff line number Diff line change @@ -5204,9 +5204,11 @@ OrderByElement OrderByElement():
5204
5204
{
5205
5205
OrderByElement orderByElement = new OrderByElement();
5206
5206
Expression columnReference = null;
5207
+ Token collateToken = null;
5207
5208
}
5208
5209
{
5209
5210
columnReference = Expression()
5211
+ [ LOOKAHEAD(<K_COLLATE>) <K_COLLATE> (collateToken=<S_CHAR_LITERAL> | collateToken=<S_QUOTED_IDENTIFIER>) { columnReference = new CollateExpression(columnReference, collateToken.image); } ]
5210
5212
[ LOOKAHEAD(2) ( <K_ASC> | (<K_DESC> { orderByElement.setAsc(false); } )) { orderByElement.setAscDescPresent(true); } ]
5211
5213
[ LOOKAHEAD(2) <K_NULLS>
5212
5214
[ LOOKAHEAD(2) (
@@ -6503,7 +6505,7 @@ Expression PrimaryExpression() #PrimaryExpression:
6503
6505
)
6504
6506
6505
6507
[
6506
- LOOKAHEAD(2) <K_COLLATE> token=<S_IDENTIFIER> { retval = new CollateExpression(retval, token.image); }
6508
+ LOOKAHEAD(2) <K_COLLATE> ( token=<S_CHAR_LITERAL> | token=<S_QUOTED_IDENTIFIER> | token=< S_IDENTIFIER>) { retval = new CollateExpression(retval, token.image); }
6507
6509
]
6508
6510
6509
6511
[
Original file line number Diff line number Diff line change
1
+ package net .sf .jsqlparser .statement .select ;
2
+
3
+ import static net .sf .jsqlparser .test .TestUtils .assertSqlCanBeParsedAndDeparsed ;
4
+
5
+ import net .sf .jsqlparser .JSQLParserException ;
6
+ import org .junit .jupiter .api .Test ;
7
+
8
+ public class OrderByCollateTest {
9
+
10
+ @ Test
11
+ public void testOrderByWithCollate () throws JSQLParserException {
12
+ String sql = "SELECT * FROM a ORDER BY CAST(a.xyz AS TEXT) COLLATE \" und-x-icu\" ASC NULLS FIRST" ;
13
+ assertSqlCanBeParsedAndDeparsed (sql );
14
+ }
15
+
16
+ @ Test
17
+ public void testOrderByWithCollateSimple () throws JSQLParserException {
18
+ String sql = "SELECT * FROM a ORDER BY col COLLATE \" C\" ASC" ;
19
+ assertSqlCanBeParsedAndDeparsed (sql );
20
+ }
21
+
22
+ @ Test
23
+ public void testOrderByWithCollateMultiple () throws JSQLParserException {
24
+ String sql = "SELECT * FROM a ORDER BY col1 COLLATE \" C\" ASC, col2 COLLATE \" POSIX\" DESC" ;
25
+ assertSqlCanBeParsedAndDeparsed (sql );
26
+ }
27
+
28
+ @ Test
29
+ public void testOrderByWithCollateAndNulls () throws JSQLParserException {
30
+ String sql = "SELECT * FROM a ORDER BY col COLLATE \" C\" DESC NULLS LAST" ;
31
+ assertSqlCanBeParsedAndDeparsed (sql );
32
+ }
33
+ }
You can’t perform that action at this time.
0 commit comments