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():
52045204{
52055205 OrderByElement orderByElement = new OrderByElement();
52065206 Expression columnReference = null;
5207+ Token collateToken = null;
52075208}
52085209{
52095210 columnReference = Expression()
5211+ [ LOOKAHEAD(<K_COLLATE>) <K_COLLATE> (collateToken=<S_CHAR_LITERAL> | collateToken=<S_QUOTED_IDENTIFIER>) { columnReference = new CollateExpression(columnReference, collateToken.image); } ]
52105212 [ LOOKAHEAD(2) ( <K_ASC> | (<K_DESC> { orderByElement.setAsc(false); } )) { orderByElement.setAscDescPresent(true); } ]
52115213 [ LOOKAHEAD(2) <K_NULLS>
52125214 [ LOOKAHEAD(2) (
@@ -6503,7 +6505,7 @@ Expression PrimaryExpression() #PrimaryExpression:
65036505 )
65046506
65056507 [
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); }
65076509 ]
65086510
65096511 [
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