@@ -58,25 +58,24 @@ uint32_t ValueVector::countNonNull() const {
58
58
bool ValueVector::discardNull (ValueVector& vector) {
59
59
if (vector.hasNoNullsGuarantee ()) {
60
60
return true ;
61
+ }
62
+ auto selectedPos = 0u ;
63
+ if (vector.state ->getSelVector ().isUnfiltered ()) {
64
+ auto buffer = vector.state ->getSelVectorUnsafe ().getMutableBuffer ();
65
+ for (auto i = 0u ; i < vector.state ->getSelVector ().getSelSize (); i++) {
66
+ buffer[selectedPos] = i;
67
+ selectedPos += !vector.isNull (i);
68
+ }
69
+ vector.state ->getSelVectorUnsafe ().setToFiltered ();
61
70
} else {
62
- auto selectedPos = 0u ;
63
- if (vector.state ->getSelVector ().isUnfiltered ()) {
64
- auto buffer = vector.state ->getSelVectorUnsafe ().getMutableBuffer ();
65
- for (auto i = 0u ; i < vector.state ->getSelVector ().getSelSize (); i++) {
66
- buffer[selectedPos] = i;
67
- selectedPos += !vector.isNull (i);
68
- }
69
- vector.state ->getSelVectorUnsafe ().setToFiltered ();
70
- } else {
71
- for (auto i = 0u ; i < vector.state ->getSelVector ().getSelSize (); i++) {
72
- auto pos = vector.state ->getSelVector ()[i];
73
- vector.state ->getSelVectorUnsafe ()[i] = pos;
74
- selectedPos += !vector.isNull (pos);
75
- }
71
+ for (auto i = 0u ; i < vector.state ->getSelVector ().getSelSize (); i++) {
72
+ auto pos = vector.state ->getSelVector ()[i];
73
+ vector.state ->getSelVectorUnsafe ()[selectedPos] = pos;
74
+ selectedPos += !vector.isNull (pos);
76
75
}
77
- vector.state ->getSelVectorUnsafe ().setSelSize (selectedPos);
78
- return selectedPos > 0 ;
79
76
}
77
+ vector.state ->getSelVectorUnsafe ().setSelSize (selectedPos);
78
+ return selectedPos > 0 ;
80
79
}
81
80
82
81
bool ValueVector::setNullFromBits (const uint64_t * srcNullEntries, uint64_t srcOffset,
0 commit comments