ryukobayashi commented on code in PR #6486:
URL: https://github.com/apache/hive/pull/6486#discussion_r3257671809
##########
ql/src/java/org/apache/hadoop/hive/ql/exec/vector/mapjoin/VectorMapJoinOuterGenerateResultOperator.java:
##########
@@ -749,13 +754,32 @@ protected void
generateOuterNullsRepeatedAll(VectorizedRowBatch batch) throws Hi
colVector.noNulls = false;
colVector.isNull[0] = true;
colVector.isRepeating = true;
+ clearVectorValue(colVector, 0);
}
for (int column : smallTableValueColumnMap) {
ColumnVector colVector = batch.cols[column];
colVector.noNulls = false;
colVector.isNull[0] = true;
colVector.isRepeating = true;
+ clearVectorValue(colVector, 0);
+ }
+ }
+
+ private static void clearVectorValue(ColumnVector colVector, int index) {
+ if (colVector instanceof LongColumnVector) {
+ ((LongColumnVector) colVector).vector[index] = 0L;
+ } else if (colVector instanceof DoubleColumnVector) {
+ ((DoubleColumnVector) colVector).vector[index] = 0.0;
+ } else if (colVector instanceof BytesColumnVector) {
+ BytesColumnVector bcv = (BytesColumnVector) colVector;
+ bcv.vector[index] = null;
+ bcv.start[index] = 0;
+ bcv.length[index] = 0;
+ } else if (colVector instanceof TimestampColumnVector) {
+ ((TimestampColumnVector) colVector).setNullValue(index);
+ } else if (colVector instanceof IntervalDayTimeColumnVector) {
+ ((IntervalDayTimeColumnVector) colVector).setNullValue(index);
Review Comment:
Thanks. I added qtest and unit test.
The investigation confirms that `DecimalColumnVector` can also appear (for
DECIMAL columns without DECIMAL_64 physical variation), so we've added handling
for it. Regarding moving the logic into individual classes: ColumnVector has 15
concrete subclasses including container types (`StructColumnVector`,
`ListColumnVector`, `MapColumnVector`, `UnionColumnVecto`r) and
`VoidColumnVector`, for which per-slot clearing has no well-defined semantics.
Only two classes currently define `setNullValue()`. Adding an abstract method
to the base class would be a breaking change to storage-api with
disproportionate scope. We prefer to keep the dispatch self-contained in
`clearVectorValue` where it directly addresses the bug.
--
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]