diff --git ql/src/java/org/apache/hadoop/hive/ql/parse/HiveParser.g ql/src/java/org/apache/hadoop/hive/ql/parse/HiveParser.g index bb23a4e076..3ebd48538c 100644 --- ql/src/java/org/apache/hadoop/hive/ql/parse/HiveParser.g +++ ql/src/java/org/apache/hadoop/hive/ql/parse/HiveParser.g @@ -2506,10 +2506,14 @@ columnRefOrder ^(TOK_TABSORTCOLNAMEASC ^(TOK_NULLS_FIRST expression)) -> {$orderSpec.tree == null}? ^(TOK_TABSORTCOLNAMEASC ^($nullSpec expression)) - -> {$nullSpec.tree == null && $orderSpec.tree.getType()==HiveParser.KW_ASC}? + -> {$nullSpec.tree == null && nullsLast() && $orderSpec.tree.getType()==HiveParser.KW_ASC}? + ^(TOK_TABSORTCOLNAMEASC ^(TOK_NULLS_LAST expression)) + -> {$nullSpec.tree == null && !nullsLast() && $orderSpec.tree.getType()==HiveParser.KW_ASC}? ^(TOK_TABSORTCOLNAMEASC ^(TOK_NULLS_FIRST expression)) - -> {$nullSpec.tree == null && $orderSpec.tree.getType()==HiveParser.KW_DESC}? + -> {$nullSpec.tree == null && nullsLast() && $orderSpec.tree.getType()==HiveParser.KW_DESC}? ^(TOK_TABSORTCOLNAMEDESC ^(TOK_NULLS_LAST expression)) + -> {$nullSpec.tree == null && !nullsLast() && $orderSpec.tree.getType()==HiveParser.KW_DESC}? + ^(TOK_TABSORTCOLNAMEDESC ^(TOK_NULLS_FIRST expression)) -> {$orderSpec.tree.getType()==HiveParser.KW_ASC}? ^(TOK_TABSORTCOLNAMEASC ^($nullSpec expression)) -> ^(TOK_TABSORTCOLNAMEDESC ^($nullSpec expression))