HAWQ-1774. fix potential issue in DecimalVector::append
diff --git a/depends/dbcommon/src/dbcommon/common/vector/decimal-vector.cc b/depends/dbcommon/src/dbcommon/common/vector/decimal-vector.cc
index 027097d..4788af8 100644
--- a/depends/dbcommon/src/dbcommon/common/vector/decimal-vector.cc
+++ b/depends/dbcommon/src/dbcommon/common/vector/decimal-vector.cc
@@ -93,13 +93,12 @@
}
void DecimalVector::append(const Datum &datum, bool null) {
- dbcommon::DecimalVar *val = DatumGetValue<DecimalVar *>(datum);
- if (val) {
+ if (!null) {
+ dbcommon::DecimalVar *val = DatumGetValue<DecimalVar *>(datum);
values.append(val->lowbits);
auxiliaryValues.append(val->highbits);
scaleValues.append(val->scale);
} else {
- assert(null == true);
values.append(uint64_t(0));
auxiliaryValues.append(int64_t(0));
scaleValues.append(int64_t(0));
@@ -108,11 +107,15 @@
}
void DecimalVector::append(const Scalar *scalar) {
- dbcommon::DecimalVar *val = DatumGetValue<DecimalVar *>(scalar->value);
- if (val) {
+ if (!scalar->isnull) {
+ dbcommon::DecimalVar *val = DatumGetValue<DecimalVar *>(scalar->value);
values.append(val->lowbits);
auxiliaryValues.append(val->highbits);
scaleValues.append(val->scale);
+ } else {
+ values.append(uint64_t(0));
+ auxiliaryValues.append(int64_t(0));
+ scaleValues.append(int64_t(0));
}
appendNull(scalar->isnull);
}