okumin commented on code in PR #5627:
URL: https://github.com/apache/hive/pull/5627#discussion_r1954465171
##########
ql/src/java/org/apache/hadoop/hive/ql/optimizer/SortedDynPartitionOptimizer.java:
##########
@@ -635,34 +638,18 @@ public ReduceSinkOperator getReduceSinkOp(List<Integer>
partitionPositions, List
}
}
- // if partition and bucket columns are sorted in ascending order, by
default
- // nulls come first; otherwise nulls come last
- Integer nullOrder = order == 1 ? 0 : 1;
+ char nullOrder = NullOrdering.defaultNullOrder(order,
parseCtx.getConf()).getSign();
if (sortNullOrder != null && !sortNullOrder.isEmpty()) {
- if (sortNullOrder.get(0) == 0) {
- nullOrder = 0;
- } else {
- nullOrder = 1;
- }
- }
-
- for (Integer ignored : keyColsPosInVal) {
- newSortNullOrder.add(nullOrder);
+ nullOrder = NullOrdering.fromCode(sortNullOrder.get(0)).getSign();
}
+ StringBuilder nullOrderStr = new
StringBuilder(StringUtils.repeat(nullOrder, keyColsPosInVal.size()));
if (customSortExprPresent) {
for (int i = 0; i < customSortExprs.size() -
customSortNullOrder.size(); i++) {
- newSortNullOrder.add(nullOrder);
+ nullOrderStr.append(nullOrder);
}
- newSortNullOrder.addAll(customSortNullOrder);
- }
-
- String nullOrderStr = "";
- for (Integer i : newSortNullOrder) {
- if (i == 0) {
- nullOrderStr += "a";
- } else {
- nullOrderStr += "z";
Review Comment:
Just my note. `HiveIcebergStorageHandler` mapped NULLS_FIRST to 0 and
NULLS_LAST to 1. It should have been inverted for the consistency with
`NullOrdering#getCode`. But the inconsistency didn't introduce real issues
because this part didn't also follow `NullOrdering#getCode`.
##########
ql/src/java/org/apache/hadoop/hive/ql/optimizer/SortedDynPartitionOptimizer.java:
##########
@@ -635,34 +638,18 @@ public ReduceSinkOperator getReduceSinkOp(List<Integer>
partitionPositions, List
}
}
- // if partition and bucket columns are sorted in ascending order, by
default
- // nulls come first; otherwise nulls come last
- Integer nullOrder = order == 1 ? 0 : 1;
+ char nullOrder = NullOrdering.defaultNullOrder(order,
parseCtx.getConf()).getSign();
if (sortNullOrder != null && !sortNullOrder.isEmpty()) {
- if (sortNullOrder.get(0) == 0) {
- nullOrder = 0;
- } else {
- nullOrder = 1;
- }
- }
-
- for (Integer ignored : keyColsPosInVal) {
- newSortNullOrder.add(nullOrder);
+ nullOrder = NullOrdering.fromCode(sortNullOrder.get(0)).getSign();
Review Comment:
I wondered why we pick up only the first element of `sortOrder` and
`sortNullOrder`. This question doesn't directly relate to the problem of this
ticket
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]