From 70ad2079c483912772a73586b40761c57830eb79 Mon Sep 17 00:00:00 2001 From: Chloe Date: Tue, 24 Nov 2020 13:14:36 -0800 Subject: [PATCH] Fix issue: sort order keyword is case sensitive (#853) --- .../resources/correctness/bugfixes/852.txt | 6 +++++ .../resources/correctness/queries/orderby.txt | 2 ++ .../parser/context/QuerySpecification.java | 2 +- .../sql/sql/parser/AstBuilderTest.java | 23 +++++++++++++++++++ 4 files changed, 32 insertions(+), 1 deletion(-) create mode 100644 integ-test/src/test/resources/correctness/bugfixes/852.txt diff --git a/integ-test/src/test/resources/correctness/bugfixes/852.txt b/integ-test/src/test/resources/correctness/bugfixes/852.txt new file mode 100644 index 0000000000..9129f7b5e5 --- /dev/null +++ b/integ-test/src/test/resources/correctness/bugfixes/852.txt @@ -0,0 +1,6 @@ +SELECT AvgTicketPrice FROM kibana_sample_data_flights ORDER BY AvgTicketPrice DESC +SELECT AvgTicketPrice FROM kibana_sample_data_flights ORDER BY AvgTicketPrice desc +SELECT AvgTicketPrice FROM kibana_sample_data_flights ORDER BY AvgTicketPrice DeSc +SELECT AvgTicketPrice FROM kibana_sample_data_flights ORDER BY AvgTicketPrice ASC +SELECT AvgTicketPrice FROM kibana_sample_data_flights ORDER BY AvgTicketPrice asc +SELECT AvgTicketPrice FROM kibana_sample_data_flights ORDER BY AvgTicketPrice AsC \ No newline at end of file diff --git a/integ-test/src/test/resources/correctness/queries/orderby.txt b/integ-test/src/test/resources/correctness/queries/orderby.txt index c4e3262e91..78866910b9 100644 --- a/integ-test/src/test/resources/correctness/queries/orderby.txt +++ b/integ-test/src/test/resources/correctness/queries/orderby.txt @@ -1,6 +1,8 @@ SELECT FlightNum FROM kibana_sample_data_flights ORDER BY FlightNum SELECT FlightNum FROM kibana_sample_data_flights ORDER BY FlightNum ASC SELECT FlightNum FROM kibana_sample_data_flights ORDER BY FlightNum DESC +SELECT FlightNum FROM kibana_sample_data_flights ORDER BY FlightNum asc +SELECT FlightNum FROM kibana_sample_data_flights ORDER BY FlightNum desc SELECT FlightNum, AvgTicketPrice FROM kibana_sample_data_flights ORDER BY FlightNum, AvgTicketPrice SELECT FlightNum, AvgTicketPrice FROM kibana_sample_data_flights ORDER BY FlightNum DESC, AvgTicketPrice SELECT FlightNum, AvgTicketPrice FROM kibana_sample_data_flights ORDER BY FlightNum, AvgTicketPrice DESC diff --git a/sql/src/main/java/com/amazon/opendistroforelasticsearch/sql/sql/parser/context/QuerySpecification.java b/sql/src/main/java/com/amazon/opendistroforelasticsearch/sql/sql/parser/context/QuerySpecification.java index c715f061b1..68f34da90e 100644 --- a/sql/src/main/java/com/amazon/opendistroforelasticsearch/sql/sql/parser/context/QuerySpecification.java +++ b/sql/src/main/java/com/amazon/opendistroforelasticsearch/sql/sql/parser/context/QuerySpecification.java @@ -219,7 +219,7 @@ private SortOrder visitSortOrder(Token ctx) { if (ctx == null) { return null; } - return SortOrder.valueOf(ctx.getText()); + return SortOrder.valueOf(ctx.getText().toUpperCase()); } private NullOrder visitNullOrderClause(TerminalNode first, TerminalNode last) { diff --git a/sql/src/test/java/com/amazon/opendistroforelasticsearch/sql/sql/parser/AstBuilderTest.java b/sql/src/test/java/com/amazon/opendistroforelasticsearch/sql/sql/parser/AstBuilderTest.java index baa64a0038..8f373a613a 100644 --- a/sql/src/test/java/com/amazon/opendistroforelasticsearch/sql/sql/parser/AstBuilderTest.java +++ b/sql/src/test/java/com/amazon/opendistroforelasticsearch/sql/sql/parser/AstBuilderTest.java @@ -415,6 +415,29 @@ public void can_build_order_by_null_option() { buildAST("SELECT name FROM test ORDER BY name NULLS LAST")); } + @Test + public void can_build_order_by_sort_order_keyword_insensitive() { + assertEquals( + project( + sort( + relation("test"), + field("age", + argument("asc", booleanLiteral(true)))), + alias("age", qualifiedName("age"))), + buildAST("SELECT age FROM test ORDER BY age ASC") + ); + + assertEquals( + project( + sort( + relation("test"), + field("age", + argument("asc", booleanLiteral(true)))), + alias("age", qualifiedName("age"))), + buildAST("SELECT age FROM test ORDER BY age asc") + ); + } + @Test public void can_build_from_subquery() { assertEquals(