From 9a437fe141809accc5e06c2a631fe18f0f137b4f Mon Sep 17 00:00:00 2001 From: DrewKimball Date: Wed, 21 Sep 2022 17:36:03 -0700 Subject: [PATCH] colexec: use tree.DNull when projection is called on null input Most projections skip rows for which one or more arguments are null, and just output a null for those rows. However, some projections can actually accept null arguments. Previously, we were using the values from the vec even when the `Nulls` bitmap was set for that row, which invalidates the data in the vec for that row. This could cause a non-null value to be unexpectedly concatenated to an array when an argument was null (nothing should be added to the array in this case). This commit modifies the projection operators that operate on datum-backed vectors to explicitly set the argument to `tree.DNull` in the case when the `Nulls` bitmap is set. This ensures that the projection is not performed with the invalid (and arbitrary) value in the datum vec at that index. Fixes #87919 Release note (bug fix): Fixed a bug in `Concat` projection operators for arrays that could cause non-null values to be added to the array when one of the arguments was null. --- .../colexecproj/proj_non_const_ops.eg.go | 3631 +++++++---------- .../colexecproj/proj_non_const_ops_tmpl.go | 48 +- .../proj_const_left_ops.eg.go | 1934 ++++----- .../colexecprojconst/proj_const_ops_tmpl.go | 41 +- .../proj_const_right_ops.eg.go | 3554 +++++++--------- .../colexecprojconst/proj_like_ops.eg.go | 40 +- pkg/sql/logictest/testdata/logic_test/array | 22 + 7 files changed, 3887 insertions(+), 5383 deletions(-) diff --git a/pkg/sql/colexec/colexecproj/proj_non_const_ops.eg.go b/pkg/sql/colexec/colexecproj/proj_non_const_ops.eg.go index 2c2aa487d559..2803b608ac8f 100644 --- a/pkg/sql/colexec/colexecproj/proj_non_const_ops.eg.go +++ b/pkg/sql/colexec/colexecproj/proj_non_const_ops.eg.go @@ -76,15 +76,13 @@ func (p projBitandInt16Int16Op) Next() coldata.Batch { col1 := vec1.Int16() col2 := vec2.Int16() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -99,7 +97,7 @@ func (p projBitandInt16Int16Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -160,15 +158,13 @@ func (p projBitandInt16Int32Op) Next() coldata.Batch { col1 := vec1.Int16() col2 := vec2.Int32() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -183,7 +179,7 @@ func (p projBitandInt16Int32Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -244,15 +240,13 @@ func (p projBitandInt16Int64Op) Next() coldata.Batch { col1 := vec1.Int16() col2 := vec2.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -267,7 +261,7 @@ func (p projBitandInt16Int64Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -328,15 +322,13 @@ func (p projBitandInt32Int16Op) Next() coldata.Batch { col1 := vec1.Int32() col2 := vec2.Int16() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -351,7 +343,7 @@ func (p projBitandInt32Int16Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -412,15 +404,13 @@ func (p projBitandInt32Int32Op) Next() coldata.Batch { col1 := vec1.Int32() col2 := vec2.Int32() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -435,7 +425,7 @@ func (p projBitandInt32Int32Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -496,15 +486,13 @@ func (p projBitandInt32Int64Op) Next() coldata.Batch { col1 := vec1.Int32() col2 := vec2.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -519,7 +507,7 @@ func (p projBitandInt32Int64Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -580,15 +568,13 @@ func (p projBitandInt64Int16Op) Next() coldata.Batch { col1 := vec1.Int64() col2 := vec2.Int16() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -603,7 +589,7 @@ func (p projBitandInt64Int16Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -664,15 +650,13 @@ func (p projBitandInt64Int32Op) Next() coldata.Batch { col1 := vec1.Int64() col2 := vec2.Int32() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -687,7 +671,7 @@ func (p projBitandInt64Int32Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -748,15 +732,13 @@ func (p projBitandInt64Int64Op) Next() coldata.Batch { col1 := vec1.Int64() col2 := vec2.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -771,7 +753,7 @@ func (p projBitandInt64Int64Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -834,20 +816,29 @@ func (p projBitandDatumDatumOp) Next() coldata.Batch { col1 := vec1.Datum() col2 := vec2.Datum() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := - (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) && !p.calledOnNullInput - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) + if col1Nulls.NullAt(i) { + // If we entered this branch for a null value, calledOnNullInput must be + // true. This means the projection should be calculated on null arguments. + // When a value is null, the underlying data in the slice is invalid and + // can be anything, so we need to overwrite it here. calledOnNullInput is + // currently only true for ConcatDatumDatum, so only the datum case needs + // to be handled. + arg1 = tree.DNull + } arg2 := col2.Get(i) + if col2Nulls.NullAt(i) { + arg2 = tree.DNull + } _res, err := eval.BinaryOp(_overloadHelper.EvalCtx, _overloadHelper.BinOp, arg1.(tree.Datum), arg2.(tree.Datum)) if err != nil { @@ -865,11 +856,23 @@ func (p projBitandDatumDatumOp) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) + if col1Nulls.NullAt(i) { + // If we entered this branch for a null value, calledOnNullInput must be + // true. This means the projection should be calculated on null arguments. + // When a value is null, the underlying data in the slice is invalid and + // can be anything, so we need to overwrite it here. calledOnNullInput is + // currently only true for ConcatDatumDatum, so only the datum case needs + // to be handled. + arg1 = tree.DNull + } arg2 := col2.Get(i) + if col2Nulls.NullAt(i) { + arg2 = tree.DNull + } _res, err := eval.BinaryOp(_overloadHelper.EvalCtx, _overloadHelper.BinOp, arg1.(tree.Datum), arg2.(tree.Datum)) if err != nil { @@ -883,7 +886,9 @@ func (p projBitandDatumDatumOp) Next() coldata.Batch { } } } - projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) + if !p.calledOnNullInput { + projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) + } } else { if sel := batch.Selection(); sel != nil { sel = sel[:n] @@ -943,15 +948,13 @@ func (p projBitorInt16Int16Op) Next() coldata.Batch { col1 := vec1.Int16() col2 := vec2.Int16() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -966,7 +969,7 @@ func (p projBitorInt16Int16Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -1027,15 +1030,13 @@ func (p projBitorInt16Int32Op) Next() coldata.Batch { col1 := vec1.Int16() col2 := vec2.Int32() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -1050,7 +1051,7 @@ func (p projBitorInt16Int32Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -1111,15 +1112,13 @@ func (p projBitorInt16Int64Op) Next() coldata.Batch { col1 := vec1.Int16() col2 := vec2.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -1134,7 +1133,7 @@ func (p projBitorInt16Int64Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -1195,15 +1194,13 @@ func (p projBitorInt32Int16Op) Next() coldata.Batch { col1 := vec1.Int32() col2 := vec2.Int16() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -1218,7 +1215,7 @@ func (p projBitorInt32Int16Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -1279,15 +1276,13 @@ func (p projBitorInt32Int32Op) Next() coldata.Batch { col1 := vec1.Int32() col2 := vec2.Int32() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -1302,7 +1297,7 @@ func (p projBitorInt32Int32Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -1363,15 +1358,13 @@ func (p projBitorInt32Int64Op) Next() coldata.Batch { col1 := vec1.Int32() col2 := vec2.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -1386,7 +1379,7 @@ func (p projBitorInt32Int64Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -1447,15 +1440,13 @@ func (p projBitorInt64Int16Op) Next() coldata.Batch { col1 := vec1.Int64() col2 := vec2.Int16() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -1470,7 +1461,7 @@ func (p projBitorInt64Int16Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -1531,15 +1522,13 @@ func (p projBitorInt64Int32Op) Next() coldata.Batch { col1 := vec1.Int64() col2 := vec2.Int32() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -1554,7 +1543,7 @@ func (p projBitorInt64Int32Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -1615,15 +1604,13 @@ func (p projBitorInt64Int64Op) Next() coldata.Batch { col1 := vec1.Int64() col2 := vec2.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -1638,7 +1625,7 @@ func (p projBitorInt64Int64Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -1701,20 +1688,29 @@ func (p projBitorDatumDatumOp) Next() coldata.Batch { col1 := vec1.Datum() col2 := vec2.Datum() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := - (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) && !p.calledOnNullInput - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) + if col1Nulls.NullAt(i) { + // If we entered this branch for a null value, calledOnNullInput must be + // true. This means the projection should be calculated on null arguments. + // When a value is null, the underlying data in the slice is invalid and + // can be anything, so we need to overwrite it here. calledOnNullInput is + // currently only true for ConcatDatumDatum, so only the datum case needs + // to be handled. + arg1 = tree.DNull + } arg2 := col2.Get(i) + if col2Nulls.NullAt(i) { + arg2 = tree.DNull + } _res, err := eval.BinaryOp(_overloadHelper.EvalCtx, _overloadHelper.BinOp, arg1.(tree.Datum), arg2.(tree.Datum)) if err != nil { @@ -1732,11 +1728,23 @@ func (p projBitorDatumDatumOp) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) + if col1Nulls.NullAt(i) { + // If we entered this branch for a null value, calledOnNullInput must be + // true. This means the projection should be calculated on null arguments. + // When a value is null, the underlying data in the slice is invalid and + // can be anything, so we need to overwrite it here. calledOnNullInput is + // currently only true for ConcatDatumDatum, so only the datum case needs + // to be handled. + arg1 = tree.DNull + } arg2 := col2.Get(i) + if col2Nulls.NullAt(i) { + arg2 = tree.DNull + } _res, err := eval.BinaryOp(_overloadHelper.EvalCtx, _overloadHelper.BinOp, arg1.(tree.Datum), arg2.(tree.Datum)) if err != nil { @@ -1750,7 +1758,9 @@ func (p projBitorDatumDatumOp) Next() coldata.Batch { } } } - projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) + if !p.calledOnNullInput { + projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) + } } else { if sel := batch.Selection(); sel != nil { sel = sel[:n] @@ -1810,15 +1820,13 @@ func (p projBitxorInt16Int16Op) Next() coldata.Batch { col1 := vec1.Int16() col2 := vec2.Int16() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -1833,7 +1841,7 @@ func (p projBitxorInt16Int16Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -1894,15 +1902,13 @@ func (p projBitxorInt16Int32Op) Next() coldata.Batch { col1 := vec1.Int16() col2 := vec2.Int32() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -1917,7 +1923,7 @@ func (p projBitxorInt16Int32Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -1978,15 +1984,13 @@ func (p projBitxorInt16Int64Op) Next() coldata.Batch { col1 := vec1.Int16() col2 := vec2.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -2001,7 +2005,7 @@ func (p projBitxorInt16Int64Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -2062,15 +2066,13 @@ func (p projBitxorInt32Int16Op) Next() coldata.Batch { col1 := vec1.Int32() col2 := vec2.Int16() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -2085,7 +2087,7 @@ func (p projBitxorInt32Int16Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -2146,15 +2148,13 @@ func (p projBitxorInt32Int32Op) Next() coldata.Batch { col1 := vec1.Int32() col2 := vec2.Int32() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -2169,7 +2169,7 @@ func (p projBitxorInt32Int32Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -2230,15 +2230,13 @@ func (p projBitxorInt32Int64Op) Next() coldata.Batch { col1 := vec1.Int32() col2 := vec2.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -2253,7 +2251,7 @@ func (p projBitxorInt32Int64Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -2314,15 +2312,13 @@ func (p projBitxorInt64Int16Op) Next() coldata.Batch { col1 := vec1.Int64() col2 := vec2.Int16() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -2337,7 +2333,7 @@ func (p projBitxorInt64Int16Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -2398,15 +2394,13 @@ func (p projBitxorInt64Int32Op) Next() coldata.Batch { col1 := vec1.Int64() col2 := vec2.Int32() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -2421,7 +2415,7 @@ func (p projBitxorInt64Int32Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -2482,15 +2476,13 @@ func (p projBitxorInt64Int64Op) Next() coldata.Batch { col1 := vec1.Int64() col2 := vec2.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -2505,7 +2497,7 @@ func (p projBitxorInt64Int64Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -2568,20 +2560,29 @@ func (p projBitxorDatumDatumOp) Next() coldata.Batch { col1 := vec1.Datum() col2 := vec2.Datum() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := - (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) && !p.calledOnNullInput - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) + if col1Nulls.NullAt(i) { + // If we entered this branch for a null value, calledOnNullInput must be + // true. This means the projection should be calculated on null arguments. + // When a value is null, the underlying data in the slice is invalid and + // can be anything, so we need to overwrite it here. calledOnNullInput is + // currently only true for ConcatDatumDatum, so only the datum case needs + // to be handled. + arg1 = tree.DNull + } arg2 := col2.Get(i) + if col2Nulls.NullAt(i) { + arg2 = tree.DNull + } _res, err := eval.BinaryOp(_overloadHelper.EvalCtx, _overloadHelper.BinOp, arg1.(tree.Datum), arg2.(tree.Datum)) if err != nil { @@ -2599,11 +2600,23 @@ func (p projBitxorDatumDatumOp) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) + if col1Nulls.NullAt(i) { + // If we entered this branch for a null value, calledOnNullInput must be + // true. This means the projection should be calculated on null arguments. + // When a value is null, the underlying data in the slice is invalid and + // can be anything, so we need to overwrite it here. calledOnNullInput is + // currently only true for ConcatDatumDatum, so only the datum case needs + // to be handled. + arg1 = tree.DNull + } arg2 := col2.Get(i) + if col2Nulls.NullAt(i) { + arg2 = tree.DNull + } _res, err := eval.BinaryOp(_overloadHelper.EvalCtx, _overloadHelper.BinOp, arg1.(tree.Datum), arg2.(tree.Datum)) if err != nil { @@ -2617,7 +2630,9 @@ func (p projBitxorDatumDatumOp) Next() coldata.Batch { } } } - projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) + if !p.calledOnNullInput { + projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) + } } else { if sel := batch.Selection(); sel != nil { sel = sel[:n] @@ -2677,15 +2692,13 @@ func (p projPlusDecimalInt16Op) Next() coldata.Batch { col1 := vec1.Decimal() col2 := vec2.Int16() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -2707,7 +2720,7 @@ func (p projPlusDecimalInt16Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -2789,15 +2802,13 @@ func (p projPlusDecimalInt32Op) Next() coldata.Batch { col1 := vec1.Decimal() col2 := vec2.Int32() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -2819,7 +2830,7 @@ func (p projPlusDecimalInt32Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -2901,15 +2912,13 @@ func (p projPlusDecimalInt64Op) Next() coldata.Batch { col1 := vec1.Decimal() col2 := vec2.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -2931,7 +2940,7 @@ func (p projPlusDecimalInt64Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -3013,15 +3022,13 @@ func (p projPlusDecimalDecimalOp) Next() coldata.Batch { col1 := vec1.Decimal() col2 := vec2.Decimal() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -3042,7 +3049,7 @@ func (p projPlusDecimalDecimalOp) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -3121,15 +3128,13 @@ func (p projPlusInt16Int16Op) Next() coldata.Batch { col1 := vec1.Int16() col2 := vec2.Int16() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -3150,7 +3155,7 @@ func (p projPlusInt16Int16Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -3229,15 +3234,13 @@ func (p projPlusInt16Int32Op) Next() coldata.Batch { col1 := vec1.Int16() col2 := vec2.Int32() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -3258,7 +3261,7 @@ func (p projPlusInt16Int32Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -3337,15 +3340,13 @@ func (p projPlusInt16Int64Op) Next() coldata.Batch { col1 := vec1.Int16() col2 := vec2.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -3366,7 +3367,7 @@ func (p projPlusInt16Int64Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -3445,15 +3446,13 @@ func (p projPlusInt16DecimalOp) Next() coldata.Batch { col1 := vec1.Int16() col2 := vec2.Decimal() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -3476,7 +3475,7 @@ func (p projPlusInt16DecimalOp) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -3563,15 +3562,13 @@ func (p projPlusInt16DatumOp) Next() coldata.Batch { col1 := vec1.Int16() col2 := vec2.Datum() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -3597,7 +3594,7 @@ func (p projPlusInt16DatumOp) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -3689,15 +3686,13 @@ func (p projPlusInt32Int16Op) Next() coldata.Batch { col1 := vec1.Int32() col2 := vec2.Int16() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -3718,7 +3713,7 @@ func (p projPlusInt32Int16Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -3797,15 +3792,13 @@ func (p projPlusInt32Int32Op) Next() coldata.Batch { col1 := vec1.Int32() col2 := vec2.Int32() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -3826,7 +3819,7 @@ func (p projPlusInt32Int32Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -3905,15 +3898,13 @@ func (p projPlusInt32Int64Op) Next() coldata.Batch { col1 := vec1.Int32() col2 := vec2.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -3934,7 +3925,7 @@ func (p projPlusInt32Int64Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -4013,15 +4004,13 @@ func (p projPlusInt32DecimalOp) Next() coldata.Batch { col1 := vec1.Int32() col2 := vec2.Decimal() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -4044,7 +4033,7 @@ func (p projPlusInt32DecimalOp) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -4131,15 +4120,13 @@ func (p projPlusInt32DatumOp) Next() coldata.Batch { col1 := vec1.Int32() col2 := vec2.Datum() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -4165,7 +4152,7 @@ func (p projPlusInt32DatumOp) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -4257,15 +4244,13 @@ func (p projPlusInt64Int16Op) Next() coldata.Batch { col1 := vec1.Int64() col2 := vec2.Int16() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -4286,7 +4271,7 @@ func (p projPlusInt64Int16Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -4365,15 +4350,13 @@ func (p projPlusInt64Int32Op) Next() coldata.Batch { col1 := vec1.Int64() col2 := vec2.Int32() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -4394,7 +4377,7 @@ func (p projPlusInt64Int32Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -4473,15 +4456,13 @@ func (p projPlusInt64Int64Op) Next() coldata.Batch { col1 := vec1.Int64() col2 := vec2.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -4502,7 +4483,7 @@ func (p projPlusInt64Int64Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -4581,15 +4562,13 @@ func (p projPlusInt64DecimalOp) Next() coldata.Batch { col1 := vec1.Int64() col2 := vec2.Decimal() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -4612,7 +4591,7 @@ func (p projPlusInt64DecimalOp) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -4699,15 +4678,13 @@ func (p projPlusInt64DatumOp) Next() coldata.Batch { col1 := vec1.Int64() col2 := vec2.Datum() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -4733,7 +4710,7 @@ func (p projPlusInt64DatumOp) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -4825,15 +4802,13 @@ func (p projPlusFloat64Float64Op) Next() coldata.Batch { col1 := vec1.Float64() col2 := vec2.Float64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -4851,7 +4826,7 @@ func (p projPlusFloat64Float64Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -4921,15 +4896,13 @@ func (p projPlusTimestampIntervalOp) Next() coldata.Batch { col1 := vec1.Timestamp() col2 := vec2.Interval() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -4947,7 +4920,7 @@ func (p projPlusTimestampIntervalOp) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -5017,15 +4990,13 @@ func (p projPlusIntervalTimestampOp) Next() coldata.Batch { col1 := vec1.Interval() col2 := vec2.Timestamp() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -5043,7 +5014,7 @@ func (p projPlusIntervalTimestampOp) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -5113,15 +5084,13 @@ func (p projPlusIntervalIntervalOp) Next() coldata.Batch { col1 := vec1.Interval() col2 := vec2.Interval() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -5134,7 +5103,7 @@ func (p projPlusIntervalIntervalOp) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -5191,15 +5160,13 @@ func (p projPlusIntervalDatumOp) Next() coldata.Batch { col1 := vec1.Interval() col2 := vec2.Datum() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -5225,7 +5192,7 @@ func (p projPlusIntervalDatumOp) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -5319,15 +5286,13 @@ func (p projPlusDatumIntervalOp) Next() coldata.Batch { col1 := vec1.Datum() col2 := vec2.Interval() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -5353,7 +5318,7 @@ func (p projPlusDatumIntervalOp) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -5447,15 +5412,13 @@ func (p projPlusDatumInt16Op) Next() coldata.Batch { col1 := vec1.Datum() col2 := vec2.Int16() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -5481,7 +5444,7 @@ func (p projPlusDatumInt16Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -5575,15 +5538,13 @@ func (p projPlusDatumInt32Op) Next() coldata.Batch { col1 := vec1.Datum() col2 := vec2.Int32() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -5609,7 +5570,7 @@ func (p projPlusDatumInt32Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -5703,15 +5664,13 @@ func (p projPlusDatumInt64Op) Next() coldata.Batch { col1 := vec1.Datum() col2 := vec2.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -5737,7 +5696,7 @@ func (p projPlusDatumInt64Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -5829,15 +5788,13 @@ func (p projMinusDecimalInt16Op) Next() coldata.Batch { col1 := vec1.Decimal() col2 := vec2.Int16() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -5859,7 +5816,7 @@ func (p projMinusDecimalInt16Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -5941,15 +5898,13 @@ func (p projMinusDecimalInt32Op) Next() coldata.Batch { col1 := vec1.Decimal() col2 := vec2.Int32() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -5971,7 +5926,7 @@ func (p projMinusDecimalInt32Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -6053,15 +6008,13 @@ func (p projMinusDecimalInt64Op) Next() coldata.Batch { col1 := vec1.Decimal() col2 := vec2.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -6083,7 +6036,7 @@ func (p projMinusDecimalInt64Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -6165,15 +6118,13 @@ func (p projMinusDecimalDecimalOp) Next() coldata.Batch { col1 := vec1.Decimal() col2 := vec2.Decimal() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -6194,7 +6145,7 @@ func (p projMinusDecimalDecimalOp) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -6273,15 +6224,13 @@ func (p projMinusInt16Int16Op) Next() coldata.Batch { col1 := vec1.Int16() col2 := vec2.Int16() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -6302,7 +6251,7 @@ func (p projMinusInt16Int16Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -6381,15 +6330,13 @@ func (p projMinusInt16Int32Op) Next() coldata.Batch { col1 := vec1.Int16() col2 := vec2.Int32() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -6410,7 +6357,7 @@ func (p projMinusInt16Int32Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -6489,15 +6436,13 @@ func (p projMinusInt16Int64Op) Next() coldata.Batch { col1 := vec1.Int16() col2 := vec2.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -6518,7 +6463,7 @@ func (p projMinusInt16Int64Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -6597,15 +6542,13 @@ func (p projMinusInt16DecimalOp) Next() coldata.Batch { col1 := vec1.Int16() col2 := vec2.Decimal() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -6628,7 +6571,7 @@ func (p projMinusInt16DecimalOp) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -6715,15 +6658,13 @@ func (p projMinusInt16DatumOp) Next() coldata.Batch { col1 := vec1.Int16() col2 := vec2.Datum() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -6749,7 +6690,7 @@ func (p projMinusInt16DatumOp) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -6841,15 +6782,13 @@ func (p projMinusInt32Int16Op) Next() coldata.Batch { col1 := vec1.Int32() col2 := vec2.Int16() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -6870,7 +6809,7 @@ func (p projMinusInt32Int16Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -6949,15 +6888,13 @@ func (p projMinusInt32Int32Op) Next() coldata.Batch { col1 := vec1.Int32() col2 := vec2.Int32() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -6978,7 +6915,7 @@ func (p projMinusInt32Int32Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -7057,15 +6994,13 @@ func (p projMinusInt32Int64Op) Next() coldata.Batch { col1 := vec1.Int32() col2 := vec2.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -7086,7 +7021,7 @@ func (p projMinusInt32Int64Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -7165,15 +7100,13 @@ func (p projMinusInt32DecimalOp) Next() coldata.Batch { col1 := vec1.Int32() col2 := vec2.Decimal() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -7196,7 +7129,7 @@ func (p projMinusInt32DecimalOp) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -7283,15 +7216,13 @@ func (p projMinusInt32DatumOp) Next() coldata.Batch { col1 := vec1.Int32() col2 := vec2.Datum() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -7317,7 +7248,7 @@ func (p projMinusInt32DatumOp) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -7409,15 +7340,13 @@ func (p projMinusInt64Int16Op) Next() coldata.Batch { col1 := vec1.Int64() col2 := vec2.Int16() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -7438,7 +7367,7 @@ func (p projMinusInt64Int16Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -7517,15 +7446,13 @@ func (p projMinusInt64Int32Op) Next() coldata.Batch { col1 := vec1.Int64() col2 := vec2.Int32() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -7546,7 +7473,7 @@ func (p projMinusInt64Int32Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -7625,15 +7552,13 @@ func (p projMinusInt64Int64Op) Next() coldata.Batch { col1 := vec1.Int64() col2 := vec2.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -7654,7 +7579,7 @@ func (p projMinusInt64Int64Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -7733,15 +7658,13 @@ func (p projMinusInt64DecimalOp) Next() coldata.Batch { col1 := vec1.Int64() col2 := vec2.Decimal() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -7764,7 +7687,7 @@ func (p projMinusInt64DecimalOp) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -7851,15 +7774,13 @@ func (p projMinusInt64DatumOp) Next() coldata.Batch { col1 := vec1.Int64() col2 := vec2.Datum() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -7885,7 +7806,7 @@ func (p projMinusInt64DatumOp) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -7977,15 +7898,13 @@ func (p projMinusFloat64Float64Op) Next() coldata.Batch { col1 := vec1.Float64() col2 := vec2.Float64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -8003,7 +7922,7 @@ func (p projMinusFloat64Float64Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -8073,15 +7992,13 @@ func (p projMinusTimestampTimestampOp) Next() coldata.Batch { col1 := vec1.Timestamp() col2 := vec2.Timestamp() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -8097,7 +8014,7 @@ func (p projMinusTimestampTimestampOp) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -8161,15 +8078,13 @@ func (p projMinusTimestampIntervalOp) Next() coldata.Batch { col1 := vec1.Timestamp() col2 := vec2.Interval() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -8187,7 +8102,7 @@ func (p projMinusTimestampIntervalOp) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -8257,15 +8172,13 @@ func (p projMinusIntervalIntervalOp) Next() coldata.Batch { col1 := vec1.Interval() col2 := vec2.Interval() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -8278,7 +8191,7 @@ func (p projMinusIntervalIntervalOp) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -8335,15 +8248,13 @@ func (p projMinusIntervalDatumOp) Next() coldata.Batch { col1 := vec1.Interval() col2 := vec2.Datum() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -8369,7 +8280,7 @@ func (p projMinusIntervalDatumOp) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -8461,15 +8372,13 @@ func (p projMinusJSONBytesOp) Next() coldata.Batch { col1 := vec1.JSON() col2 := vec2.Bytes() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -8491,7 +8400,7 @@ func (p projMinusJSONBytesOp) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -8569,15 +8478,13 @@ func (p projMinusJSONInt16Op) Next() coldata.Batch { col1 := vec1.JSON() col2 := vec2.Int16() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -8595,7 +8502,7 @@ func (p projMinusJSONInt16Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -8663,15 +8570,13 @@ func (p projMinusJSONInt32Op) Next() coldata.Batch { col1 := vec1.JSON() col2 := vec2.Int32() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -8689,7 +8594,7 @@ func (p projMinusJSONInt32Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -8757,15 +8662,13 @@ func (p projMinusJSONInt64Op) Next() coldata.Batch { col1 := vec1.JSON() col2 := vec2.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -8783,7 +8686,7 @@ func (p projMinusJSONInt64Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -8853,20 +8756,29 @@ func (p projMinusDatumDatumOp) Next() coldata.Batch { col1 := vec1.Datum() col2 := vec2.Datum() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := - (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) && !p.calledOnNullInput - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) + if col1Nulls.NullAt(i) { + // If we entered this branch for a null value, calledOnNullInput must be + // true. This means the projection should be calculated on null arguments. + // When a value is null, the underlying data in the slice is invalid and + // can be anything, so we need to overwrite it here. calledOnNullInput is + // currently only true for ConcatDatumDatum, so only the datum case needs + // to be handled. + arg1 = tree.DNull + } arg2 := col2.Get(i) + if col2Nulls.NullAt(i) { + arg2 = tree.DNull + } _res, err := eval.BinaryOp(_overloadHelper.EvalCtx, _overloadHelper.BinOp, arg1.(tree.Datum), arg2.(tree.Datum)) if err != nil { @@ -8884,11 +8796,23 @@ func (p projMinusDatumDatumOp) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) + if col1Nulls.NullAt(i) { + // If we entered this branch for a null value, calledOnNullInput must be + // true. This means the projection should be calculated on null arguments. + // When a value is null, the underlying data in the slice is invalid and + // can be anything, so we need to overwrite it here. calledOnNullInput is + // currently only true for ConcatDatumDatum, so only the datum case needs + // to be handled. + arg1 = tree.DNull + } arg2 := col2.Get(i) + if col2Nulls.NullAt(i) { + arg2 = tree.DNull + } _res, err := eval.BinaryOp(_overloadHelper.EvalCtx, _overloadHelper.BinOp, arg1.(tree.Datum), arg2.(tree.Datum)) if err != nil { @@ -8902,7 +8826,9 @@ func (p projMinusDatumDatumOp) Next() coldata.Batch { } } } - projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) + if !p.calledOnNullInput { + projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) + } } else { if sel := batch.Selection(); sel != nil { sel = sel[:n] @@ -8964,15 +8890,13 @@ func (p projMinusDatumIntervalOp) Next() coldata.Batch { col1 := vec1.Datum() col2 := vec2.Interval() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -8998,7 +8922,7 @@ func (p projMinusDatumIntervalOp) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -9092,15 +9016,13 @@ func (p projMinusDatumBytesOp) Next() coldata.Batch { col1 := vec1.Datum() col2 := vec2.Bytes() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -9126,7 +9048,7 @@ func (p projMinusDatumBytesOp) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -9218,15 +9140,13 @@ func (p projMinusDatumInt16Op) Next() coldata.Batch { col1 := vec1.Datum() col2 := vec2.Int16() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -9252,7 +9172,7 @@ func (p projMinusDatumInt16Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -9346,15 +9266,13 @@ func (p projMinusDatumInt32Op) Next() coldata.Batch { col1 := vec1.Datum() col2 := vec2.Int32() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -9380,7 +9298,7 @@ func (p projMinusDatumInt32Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -9474,15 +9392,13 @@ func (p projMinusDatumInt64Op) Next() coldata.Batch { col1 := vec1.Datum() col2 := vec2.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -9508,7 +9424,7 @@ func (p projMinusDatumInt64Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -9600,15 +9516,13 @@ func (p projMultDecimalInt16Op) Next() coldata.Batch { col1 := vec1.Decimal() col2 := vec2.Int16() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -9630,7 +9544,7 @@ func (p projMultDecimalInt16Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -9712,15 +9626,13 @@ func (p projMultDecimalInt32Op) Next() coldata.Batch { col1 := vec1.Decimal() col2 := vec2.Int32() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -9742,7 +9654,7 @@ func (p projMultDecimalInt32Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -9824,15 +9736,13 @@ func (p projMultDecimalInt64Op) Next() coldata.Batch { col1 := vec1.Decimal() col2 := vec2.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -9854,7 +9764,7 @@ func (p projMultDecimalInt64Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -9936,15 +9846,13 @@ func (p projMultDecimalDecimalOp) Next() coldata.Batch { col1 := vec1.Decimal() col2 := vec2.Decimal() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -9965,7 +9873,7 @@ func (p projMultDecimalDecimalOp) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -10044,15 +9952,13 @@ func (p projMultDecimalIntervalOp) Next() coldata.Batch { col1 := vec1.Decimal() col2 := vec2.Interval() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -10070,7 +9976,7 @@ func (p projMultDecimalIntervalOp) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -10140,15 +10046,13 @@ func (p projMultInt16Int16Op) Next() coldata.Batch { col1 := vec1.Int16() col2 := vec2.Int16() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -10177,7 +10081,7 @@ func (p projMultInt16Int16Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -10280,15 +10184,13 @@ func (p projMultInt16Int32Op) Next() coldata.Batch { col1 := vec1.Int16() col2 := vec2.Int32() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -10317,7 +10219,7 @@ func (p projMultInt16Int32Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -10420,15 +10322,13 @@ func (p projMultInt16Int64Op) Next() coldata.Batch { col1 := vec1.Int16() col2 := vec2.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -10457,7 +10357,7 @@ func (p projMultInt16Int64Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -10560,15 +10460,13 @@ func (p projMultInt16DecimalOp) Next() coldata.Batch { col1 := vec1.Int16() col2 := vec2.Decimal() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -10591,7 +10489,7 @@ func (p projMultInt16DecimalOp) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -10676,15 +10574,13 @@ func (p projMultInt16IntervalOp) Next() coldata.Batch { col1 := vec1.Int16() col2 := vec2.Interval() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -10697,7 +10593,7 @@ func (p projMultInt16IntervalOp) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -10752,15 +10648,13 @@ func (p projMultInt32Int16Op) Next() coldata.Batch { col1 := vec1.Int32() col2 := vec2.Int16() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -10789,7 +10683,7 @@ func (p projMultInt32Int16Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -10892,15 +10786,13 @@ func (p projMultInt32Int32Op) Next() coldata.Batch { col1 := vec1.Int32() col2 := vec2.Int32() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -10929,7 +10821,7 @@ func (p projMultInt32Int32Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -11032,15 +10924,13 @@ func (p projMultInt32Int64Op) Next() coldata.Batch { col1 := vec1.Int32() col2 := vec2.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -11069,7 +10959,7 @@ func (p projMultInt32Int64Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -11172,15 +11062,13 @@ func (p projMultInt32DecimalOp) Next() coldata.Batch { col1 := vec1.Int32() col2 := vec2.Decimal() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -11203,7 +11091,7 @@ func (p projMultInt32DecimalOp) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -11288,15 +11176,13 @@ func (p projMultInt32IntervalOp) Next() coldata.Batch { col1 := vec1.Int32() col2 := vec2.Interval() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -11309,7 +11195,7 @@ func (p projMultInt32IntervalOp) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -11364,15 +11250,13 @@ func (p projMultInt64Int16Op) Next() coldata.Batch { col1 := vec1.Int64() col2 := vec2.Int16() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -11401,7 +11285,7 @@ func (p projMultInt64Int16Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -11504,15 +11388,13 @@ func (p projMultInt64Int32Op) Next() coldata.Batch { col1 := vec1.Int64() col2 := vec2.Int32() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -11541,7 +11423,7 @@ func (p projMultInt64Int32Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -11644,15 +11526,13 @@ func (p projMultInt64Int64Op) Next() coldata.Batch { col1 := vec1.Int64() col2 := vec2.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -11681,7 +11561,7 @@ func (p projMultInt64Int64Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -11784,15 +11664,13 @@ func (p projMultInt64DecimalOp) Next() coldata.Batch { col1 := vec1.Int64() col2 := vec2.Decimal() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -11815,7 +11693,7 @@ func (p projMultInt64DecimalOp) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -11900,15 +11778,13 @@ func (p projMultInt64IntervalOp) Next() coldata.Batch { col1 := vec1.Int64() col2 := vec2.Interval() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -11921,7 +11797,7 @@ func (p projMultInt64IntervalOp) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -11976,15 +11852,13 @@ func (p projMultFloat64Float64Op) Next() coldata.Batch { col1 := vec1.Float64() col2 := vec2.Float64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -12002,7 +11876,7 @@ func (p projMultFloat64Float64Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -12072,15 +11946,13 @@ func (p projMultFloat64IntervalOp) Next() coldata.Batch { col1 := vec1.Float64() col2 := vec2.Interval() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -12093,7 +11965,7 @@ func (p projMultFloat64IntervalOp) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -12148,15 +12020,13 @@ func (p projMultIntervalInt16Op) Next() coldata.Batch { col1 := vec1.Interval() col2 := vec2.Int16() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -12169,7 +12039,7 @@ func (p projMultIntervalInt16Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -12224,15 +12094,13 @@ func (p projMultIntervalInt32Op) Next() coldata.Batch { col1 := vec1.Interval() col2 := vec2.Int32() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -12245,7 +12113,7 @@ func (p projMultIntervalInt32Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -12300,15 +12168,13 @@ func (p projMultIntervalInt64Op) Next() coldata.Batch { col1 := vec1.Interval() col2 := vec2.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -12321,7 +12187,7 @@ func (p projMultIntervalInt64Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -12376,15 +12242,13 @@ func (p projMultIntervalFloat64Op) Next() coldata.Batch { col1 := vec1.Interval() col2 := vec2.Float64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -12397,7 +12261,7 @@ func (p projMultIntervalFloat64Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -12452,15 +12316,13 @@ func (p projMultIntervalDecimalOp) Next() coldata.Batch { col1 := vec1.Interval() col2 := vec2.Decimal() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -12478,7 +12340,7 @@ func (p projMultIntervalDecimalOp) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -12548,15 +12410,13 @@ func (p projDivDecimalInt16Op) Next() coldata.Batch { col1 := vec1.Decimal() col2 := vec2.Int16() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -12582,7 +12442,7 @@ func (p projDivDecimalInt16Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -12676,15 +12536,13 @@ func (p projDivDecimalInt32Op) Next() coldata.Batch { col1 := vec1.Decimal() col2 := vec2.Int32() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -12710,7 +12568,7 @@ func (p projDivDecimalInt32Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -12804,15 +12662,13 @@ func (p projDivDecimalInt64Op) Next() coldata.Batch { col1 := vec1.Decimal() col2 := vec2.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -12838,7 +12694,7 @@ func (p projDivDecimalInt64Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -12932,15 +12788,13 @@ func (p projDivDecimalDecimalOp) Next() coldata.Batch { col1 := vec1.Decimal() col2 := vec2.Decimal() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -12965,7 +12819,7 @@ func (p projDivDecimalDecimalOp) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -13056,15 +12910,13 @@ func (p projDivInt16Int16Op) Next() coldata.Batch { col1 := vec1.Int16() col2 := vec2.Int16() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -13089,7 +12941,7 @@ func (p projDivInt16Int16Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -13180,15 +13032,13 @@ func (p projDivInt16Int32Op) Next() coldata.Batch { col1 := vec1.Int16() col2 := vec2.Int32() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -13213,7 +13063,7 @@ func (p projDivInt16Int32Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -13304,15 +13154,13 @@ func (p projDivInt16Int64Op) Next() coldata.Batch { col1 := vec1.Int16() col2 := vec2.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -13337,7 +13185,7 @@ func (p projDivInt16Int64Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -13428,15 +13276,13 @@ func (p projDivInt16DecimalOp) Next() coldata.Batch { col1 := vec1.Int16() col2 := vec2.Decimal() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -13463,7 +13309,7 @@ func (p projDivInt16DecimalOp) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -13560,15 +13406,13 @@ func (p projDivInt32Int16Op) Next() coldata.Batch { col1 := vec1.Int32() col2 := vec2.Int16() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -13593,7 +13437,7 @@ func (p projDivInt32Int16Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -13684,15 +13528,13 @@ func (p projDivInt32Int32Op) Next() coldata.Batch { col1 := vec1.Int32() col2 := vec2.Int32() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -13717,7 +13559,7 @@ func (p projDivInt32Int32Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -13808,15 +13650,13 @@ func (p projDivInt32Int64Op) Next() coldata.Batch { col1 := vec1.Int32() col2 := vec2.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -13841,7 +13681,7 @@ func (p projDivInt32Int64Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -13932,15 +13772,13 @@ func (p projDivInt32DecimalOp) Next() coldata.Batch { col1 := vec1.Int32() col2 := vec2.Decimal() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -13967,7 +13805,7 @@ func (p projDivInt32DecimalOp) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -14064,15 +13902,13 @@ func (p projDivInt64Int16Op) Next() coldata.Batch { col1 := vec1.Int64() col2 := vec2.Int16() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -14097,7 +13933,7 @@ func (p projDivInt64Int16Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -14188,15 +14024,13 @@ func (p projDivInt64Int32Op) Next() coldata.Batch { col1 := vec1.Int64() col2 := vec2.Int32() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -14221,7 +14055,7 @@ func (p projDivInt64Int32Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -14312,15 +14146,13 @@ func (p projDivInt64Int64Op) Next() coldata.Batch { col1 := vec1.Int64() col2 := vec2.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -14345,7 +14177,7 @@ func (p projDivInt64Int64Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -14436,15 +14268,13 @@ func (p projDivInt64DecimalOp) Next() coldata.Batch { col1 := vec1.Int64() col2 := vec2.Decimal() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -14471,7 +14301,7 @@ func (p projDivInt64DecimalOp) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -14568,15 +14398,13 @@ func (p projDivFloat64Float64Op) Next() coldata.Batch { col1 := vec1.Float64() col2 := vec2.Float64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -14598,7 +14426,7 @@ func (p projDivFloat64Float64Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -14680,15 +14508,13 @@ func (p projDivIntervalInt16Op) Next() coldata.Batch { col1 := vec1.Interval() col2 := vec2.Int16() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -14705,7 +14531,7 @@ func (p projDivIntervalInt16Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -14772,15 +14598,13 @@ func (p projDivIntervalInt32Op) Next() coldata.Batch { col1 := vec1.Interval() col2 := vec2.Int32() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -14797,7 +14621,7 @@ func (p projDivIntervalInt32Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -14864,15 +14688,13 @@ func (p projDivIntervalInt64Op) Next() coldata.Batch { col1 := vec1.Interval() col2 := vec2.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -14889,7 +14711,7 @@ func (p projDivIntervalInt64Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -14956,15 +14778,13 @@ func (p projDivIntervalFloat64Op) Next() coldata.Batch { col1 := vec1.Interval() col2 := vec2.Float64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -14981,7 +14801,7 @@ func (p projDivIntervalFloat64Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -15048,15 +14868,13 @@ func (p projFloorDivDecimalInt16Op) Next() coldata.Batch { col1 := vec1.Decimal() col2 := vec2.Int16() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -15082,7 +14900,7 @@ func (p projFloorDivDecimalInt16Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -15176,15 +14994,13 @@ func (p projFloorDivDecimalInt32Op) Next() coldata.Batch { col1 := vec1.Decimal() col2 := vec2.Int32() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -15210,7 +15026,7 @@ func (p projFloorDivDecimalInt32Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -15304,15 +15120,13 @@ func (p projFloorDivDecimalInt64Op) Next() coldata.Batch { col1 := vec1.Decimal() col2 := vec2.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -15338,7 +15152,7 @@ func (p projFloorDivDecimalInt64Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -15432,15 +15246,13 @@ func (p projFloorDivDecimalDecimalOp) Next() coldata.Batch { col1 := vec1.Decimal() col2 := vec2.Decimal() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -15465,7 +15277,7 @@ func (p projFloorDivDecimalDecimalOp) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -15556,15 +15368,13 @@ func (p projFloorDivInt16Int16Op) Next() coldata.Batch { col1 := vec1.Int16() col2 := vec2.Int16() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -15584,7 +15394,7 @@ func (p projFloorDivInt16Int16Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -15660,15 +15470,13 @@ func (p projFloorDivInt16Int32Op) Next() coldata.Batch { col1 := vec1.Int16() col2 := vec2.Int32() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -15688,7 +15496,7 @@ func (p projFloorDivInt16Int32Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -15764,15 +15572,13 @@ func (p projFloorDivInt16Int64Op) Next() coldata.Batch { col1 := vec1.Int16() col2 := vec2.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -15792,7 +15598,7 @@ func (p projFloorDivInt16Int64Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -15868,15 +15674,13 @@ func (p projFloorDivInt16DecimalOp) Next() coldata.Batch { col1 := vec1.Int16() col2 := vec2.Decimal() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -15903,7 +15707,7 @@ func (p projFloorDivInt16DecimalOp) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -16000,15 +15804,13 @@ func (p projFloorDivInt32Int16Op) Next() coldata.Batch { col1 := vec1.Int32() col2 := vec2.Int16() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -16028,7 +15830,7 @@ func (p projFloorDivInt32Int16Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -16104,15 +15906,13 @@ func (p projFloorDivInt32Int32Op) Next() coldata.Batch { col1 := vec1.Int32() col2 := vec2.Int32() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -16132,7 +15932,7 @@ func (p projFloorDivInt32Int32Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -16208,15 +16008,13 @@ func (p projFloorDivInt32Int64Op) Next() coldata.Batch { col1 := vec1.Int32() col2 := vec2.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -16236,7 +16034,7 @@ func (p projFloorDivInt32Int64Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -16312,15 +16110,13 @@ func (p projFloorDivInt32DecimalOp) Next() coldata.Batch { col1 := vec1.Int32() col2 := vec2.Decimal() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -16347,7 +16143,7 @@ func (p projFloorDivInt32DecimalOp) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -16444,15 +16240,13 @@ func (p projFloorDivInt64Int16Op) Next() coldata.Batch { col1 := vec1.Int64() col2 := vec2.Int16() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -16472,7 +16266,7 @@ func (p projFloorDivInt64Int16Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -16548,15 +16342,13 @@ func (p projFloorDivInt64Int32Op) Next() coldata.Batch { col1 := vec1.Int64() col2 := vec2.Int32() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -16576,7 +16368,7 @@ func (p projFloorDivInt64Int32Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -16652,15 +16444,13 @@ func (p projFloorDivInt64Int64Op) Next() coldata.Batch { col1 := vec1.Int64() col2 := vec2.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -16680,7 +16470,7 @@ func (p projFloorDivInt64Int64Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -16756,15 +16546,13 @@ func (p projFloorDivInt64DecimalOp) Next() coldata.Batch { col1 := vec1.Int64() col2 := vec2.Decimal() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -16791,7 +16579,7 @@ func (p projFloorDivInt64DecimalOp) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -16888,15 +16676,13 @@ func (p projFloorDivFloat64Float64Op) Next() coldata.Batch { col1 := vec1.Float64() col2 := vec2.Float64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -16918,7 +16704,7 @@ func (p projFloorDivFloat64Float64Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -17000,15 +16786,13 @@ func (p projModDecimalInt16Op) Next() coldata.Batch { col1 := vec1.Decimal() col2 := vec2.Int16() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -17034,7 +16818,7 @@ func (p projModDecimalInt16Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -17128,15 +16912,13 @@ func (p projModDecimalInt32Op) Next() coldata.Batch { col1 := vec1.Decimal() col2 := vec2.Int32() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -17162,7 +16944,7 @@ func (p projModDecimalInt32Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -17256,15 +17038,13 @@ func (p projModDecimalInt64Op) Next() coldata.Batch { col1 := vec1.Decimal() col2 := vec2.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -17290,7 +17070,7 @@ func (p projModDecimalInt64Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -17384,15 +17164,13 @@ func (p projModDecimalDecimalOp) Next() coldata.Batch { col1 := vec1.Decimal() col2 := vec2.Decimal() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -17417,7 +17195,7 @@ func (p projModDecimalDecimalOp) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -17508,15 +17286,13 @@ func (p projModInt16Int16Op) Next() coldata.Batch { col1 := vec1.Int16() col2 := vec2.Int16() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -17536,7 +17312,7 @@ func (p projModInt16Int16Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -17612,15 +17388,13 @@ func (p projModInt16Int32Op) Next() coldata.Batch { col1 := vec1.Int16() col2 := vec2.Int32() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -17640,7 +17414,7 @@ func (p projModInt16Int32Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -17716,15 +17490,13 @@ func (p projModInt16Int64Op) Next() coldata.Batch { col1 := vec1.Int16() col2 := vec2.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -17744,7 +17516,7 @@ func (p projModInt16Int64Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -17820,15 +17592,13 @@ func (p projModInt16DecimalOp) Next() coldata.Batch { col1 := vec1.Int16() col2 := vec2.Decimal() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -17855,7 +17625,7 @@ func (p projModInt16DecimalOp) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -17952,15 +17722,13 @@ func (p projModInt32Int16Op) Next() coldata.Batch { col1 := vec1.Int32() col2 := vec2.Int16() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -17980,7 +17748,7 @@ func (p projModInt32Int16Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -18056,15 +17824,13 @@ func (p projModInt32Int32Op) Next() coldata.Batch { col1 := vec1.Int32() col2 := vec2.Int32() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -18084,7 +17850,7 @@ func (p projModInt32Int32Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -18160,15 +17926,13 @@ func (p projModInt32Int64Op) Next() coldata.Batch { col1 := vec1.Int32() col2 := vec2.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -18188,7 +17952,7 @@ func (p projModInt32Int64Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -18264,15 +18028,13 @@ func (p projModInt32DecimalOp) Next() coldata.Batch { col1 := vec1.Int32() col2 := vec2.Decimal() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -18299,7 +18061,7 @@ func (p projModInt32DecimalOp) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -18396,15 +18158,13 @@ func (p projModInt64Int16Op) Next() coldata.Batch { col1 := vec1.Int64() col2 := vec2.Int16() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -18424,7 +18184,7 @@ func (p projModInt64Int16Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -18500,15 +18260,13 @@ func (p projModInt64Int32Op) Next() coldata.Batch { col1 := vec1.Int64() col2 := vec2.Int32() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -18528,7 +18286,7 @@ func (p projModInt64Int32Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -18604,15 +18362,13 @@ func (p projModInt64Int64Op) Next() coldata.Batch { col1 := vec1.Int64() col2 := vec2.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -18632,7 +18388,7 @@ func (p projModInt64Int64Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -18708,15 +18464,13 @@ func (p projModInt64DecimalOp) Next() coldata.Batch { col1 := vec1.Int64() col2 := vec2.Decimal() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -18743,7 +18497,7 @@ func (p projModInt64DecimalOp) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -18840,15 +18594,13 @@ func (p projModFloat64Float64Op) Next() coldata.Batch { col1 := vec1.Float64() col2 := vec2.Float64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -18870,7 +18622,7 @@ func (p projModFloat64Float64Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -18952,15 +18704,13 @@ func (p projPowDecimalInt16Op) Next() coldata.Batch { col1 := vec1.Decimal() col2 := vec2.Int16() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -18982,7 +18732,7 @@ func (p projPowDecimalInt16Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -19064,15 +18814,13 @@ func (p projPowDecimalInt32Op) Next() coldata.Batch { col1 := vec1.Decimal() col2 := vec2.Int32() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -19094,7 +18842,7 @@ func (p projPowDecimalInt32Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -19176,15 +18924,13 @@ func (p projPowDecimalInt64Op) Next() coldata.Batch { col1 := vec1.Decimal() col2 := vec2.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -19206,7 +18952,7 @@ func (p projPowDecimalInt64Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -19288,15 +19034,13 @@ func (p projPowDecimalDecimalOp) Next() coldata.Batch { col1 := vec1.Decimal() col2 := vec2.Decimal() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -19317,7 +19061,7 @@ func (p projPowDecimalDecimalOp) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -19396,15 +19140,13 @@ func (p projPowInt16Int16Op) Next() coldata.Batch { col1 := vec1.Int16() col2 := vec2.Int16() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -19431,7 +19173,7 @@ func (p projPowInt16Int16Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -19528,15 +19270,13 @@ func (p projPowInt16Int32Op) Next() coldata.Batch { col1 := vec1.Int16() col2 := vec2.Int32() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -19563,7 +19303,7 @@ func (p projPowInt16Int32Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -19660,15 +19400,13 @@ func (p projPowInt16Int64Op) Next() coldata.Batch { col1 := vec1.Int16() col2 := vec2.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -19695,7 +19433,7 @@ func (p projPowInt16Int64Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -19792,15 +19530,13 @@ func (p projPowInt16DecimalOp) Next() coldata.Batch { col1 := vec1.Int16() col2 := vec2.Decimal() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -19823,7 +19559,7 @@ func (p projPowInt16DecimalOp) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -19908,15 +19644,13 @@ func (p projPowInt32Int16Op) Next() coldata.Batch { col1 := vec1.Int32() col2 := vec2.Int16() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -19943,7 +19677,7 @@ func (p projPowInt32Int16Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -20040,15 +19774,13 @@ func (p projPowInt32Int32Op) Next() coldata.Batch { col1 := vec1.Int32() col2 := vec2.Int32() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -20075,7 +19807,7 @@ func (p projPowInt32Int32Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -20172,15 +19904,13 @@ func (p projPowInt32Int64Op) Next() coldata.Batch { col1 := vec1.Int32() col2 := vec2.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -20207,7 +19937,7 @@ func (p projPowInt32Int64Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -20304,15 +20034,13 @@ func (p projPowInt32DecimalOp) Next() coldata.Batch { col1 := vec1.Int32() col2 := vec2.Decimal() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -20335,7 +20063,7 @@ func (p projPowInt32DecimalOp) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -20420,15 +20148,13 @@ func (p projPowInt64Int16Op) Next() coldata.Batch { col1 := vec1.Int64() col2 := vec2.Int16() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -20455,7 +20181,7 @@ func (p projPowInt64Int16Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -20552,15 +20278,13 @@ func (p projPowInt64Int32Op) Next() coldata.Batch { col1 := vec1.Int64() col2 := vec2.Int32() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -20587,7 +20311,7 @@ func (p projPowInt64Int32Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -20684,15 +20408,13 @@ func (p projPowInt64Int64Op) Next() coldata.Batch { col1 := vec1.Int64() col2 := vec2.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -20719,7 +20441,7 @@ func (p projPowInt64Int64Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -20816,15 +20538,13 @@ func (p projPowInt64DecimalOp) Next() coldata.Batch { col1 := vec1.Int64() col2 := vec2.Decimal() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -20847,7 +20567,7 @@ func (p projPowInt64DecimalOp) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -20932,15 +20652,13 @@ func (p projPowFloat64Float64Op) Next() coldata.Batch { col1 := vec1.Float64() col2 := vec2.Float64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -20958,7 +20676,7 @@ func (p projPowFloat64Float64Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -21028,15 +20746,13 @@ func (p projConcatBytesBytesOp) Next() coldata.Batch { col1 := vec1.Bytes() col2 := vec2.Bytes() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -21056,7 +20772,7 @@ func (p projConcatBytesBytesOp) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -21128,15 +20844,13 @@ func (p projConcatJSONJSONOp) Next() coldata.Batch { col1 := vec1.JSON() col2 := vec2.JSON() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -21155,7 +20869,7 @@ func (p projConcatJSONJSONOp) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -21226,20 +20940,29 @@ func (p projConcatDatumDatumOp) Next() coldata.Batch { col1 := vec1.Datum() col2 := vec2.Datum() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := - (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) && !p.calledOnNullInput - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) + if col1Nulls.NullAt(i) { + // If we entered this branch for a null value, calledOnNullInput must be + // true. This means the projection should be calculated on null arguments. + // When a value is null, the underlying data in the slice is invalid and + // can be anything, so we need to overwrite it here. calledOnNullInput is + // currently only true for ConcatDatumDatum, so only the datum case needs + // to be handled. + arg1 = tree.DNull + } arg2 := col2.Get(i) + if col2Nulls.NullAt(i) { + arg2 = tree.DNull + } _res, err := eval.BinaryOp(_overloadHelper.EvalCtx, _overloadHelper.BinOp, arg1.(tree.Datum), arg2.(tree.Datum)) if err != nil { @@ -21257,11 +20980,23 @@ func (p projConcatDatumDatumOp) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) + if col1Nulls.NullAt(i) { + // If we entered this branch for a null value, calledOnNullInput must be + // true. This means the projection should be calculated on null arguments. + // When a value is null, the underlying data in the slice is invalid and + // can be anything, so we need to overwrite it here. calledOnNullInput is + // currently only true for ConcatDatumDatum, so only the datum case needs + // to be handled. + arg1 = tree.DNull + } arg2 := col2.Get(i) + if col2Nulls.NullAt(i) { + arg2 = tree.DNull + } _res, err := eval.BinaryOp(_overloadHelper.EvalCtx, _overloadHelper.BinOp, arg1.(tree.Datum), arg2.(tree.Datum)) if err != nil { @@ -21275,7 +21010,9 @@ func (p projConcatDatumDatumOp) Next() coldata.Batch { } } } - projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) + if !p.calledOnNullInput { + projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) + } } else { if sel := batch.Selection(); sel != nil { sel = sel[:n] @@ -21335,15 +21072,13 @@ func (p projLShiftInt16Int16Op) Next() coldata.Batch { col1 := vec1.Int16() col2 := vec2.Int16() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -21364,7 +21099,7 @@ func (p projLShiftInt16Int16Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -21443,15 +21178,13 @@ func (p projLShiftInt16Int32Op) Next() coldata.Batch { col1 := vec1.Int16() col2 := vec2.Int32() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -21472,7 +21205,7 @@ func (p projLShiftInt16Int32Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -21551,15 +21284,13 @@ func (p projLShiftInt16Int64Op) Next() coldata.Batch { col1 := vec1.Int16() col2 := vec2.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -21580,7 +21311,7 @@ func (p projLShiftInt16Int64Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -21659,15 +21390,13 @@ func (p projLShiftInt32Int16Op) Next() coldata.Batch { col1 := vec1.Int32() col2 := vec2.Int16() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -21688,7 +21417,7 @@ func (p projLShiftInt32Int16Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -21767,15 +21496,13 @@ func (p projLShiftInt32Int32Op) Next() coldata.Batch { col1 := vec1.Int32() col2 := vec2.Int32() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -21796,7 +21523,7 @@ func (p projLShiftInt32Int32Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -21875,15 +21602,13 @@ func (p projLShiftInt32Int64Op) Next() coldata.Batch { col1 := vec1.Int32() col2 := vec2.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -21904,7 +21629,7 @@ func (p projLShiftInt32Int64Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -21983,15 +21708,13 @@ func (p projLShiftInt64Int16Op) Next() coldata.Batch { col1 := vec1.Int64() col2 := vec2.Int16() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -22012,7 +21735,7 @@ func (p projLShiftInt64Int16Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -22091,15 +21814,13 @@ func (p projLShiftInt64Int32Op) Next() coldata.Batch { col1 := vec1.Int64() col2 := vec2.Int32() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -22120,7 +21841,7 @@ func (p projLShiftInt64Int32Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -22199,15 +21920,13 @@ func (p projLShiftInt64Int64Op) Next() coldata.Batch { col1 := vec1.Int64() col2 := vec2.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -22228,7 +21947,7 @@ func (p projLShiftInt64Int64Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -22309,15 +22028,13 @@ func (p projLShiftDatumInt16Op) Next() coldata.Batch { col1 := vec1.Datum() col2 := vec2.Int16() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -22343,7 +22060,7 @@ func (p projLShiftDatumInt16Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -22437,15 +22154,13 @@ func (p projLShiftDatumInt32Op) Next() coldata.Batch { col1 := vec1.Datum() col2 := vec2.Int32() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -22471,7 +22186,7 @@ func (p projLShiftDatumInt32Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -22565,15 +22280,13 @@ func (p projLShiftDatumInt64Op) Next() coldata.Batch { col1 := vec1.Datum() col2 := vec2.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -22599,7 +22312,7 @@ func (p projLShiftDatumInt64Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -22691,15 +22404,13 @@ func (p projRShiftInt16Int16Op) Next() coldata.Batch { col1 := vec1.Int16() col2 := vec2.Int16() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -22720,7 +22431,7 @@ func (p projRShiftInt16Int16Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -22799,15 +22510,13 @@ func (p projRShiftInt16Int32Op) Next() coldata.Batch { col1 := vec1.Int16() col2 := vec2.Int32() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -22828,7 +22537,7 @@ func (p projRShiftInt16Int32Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -22907,15 +22616,13 @@ func (p projRShiftInt16Int64Op) Next() coldata.Batch { col1 := vec1.Int16() col2 := vec2.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -22936,7 +22643,7 @@ func (p projRShiftInt16Int64Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -23015,15 +22722,13 @@ func (p projRShiftInt32Int16Op) Next() coldata.Batch { col1 := vec1.Int32() col2 := vec2.Int16() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -23044,7 +22749,7 @@ func (p projRShiftInt32Int16Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -23123,15 +22828,13 @@ func (p projRShiftInt32Int32Op) Next() coldata.Batch { col1 := vec1.Int32() col2 := vec2.Int32() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -23152,7 +22855,7 @@ func (p projRShiftInt32Int32Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -23231,15 +22934,13 @@ func (p projRShiftInt32Int64Op) Next() coldata.Batch { col1 := vec1.Int32() col2 := vec2.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -23260,7 +22961,7 @@ func (p projRShiftInt32Int64Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -23339,15 +23040,13 @@ func (p projRShiftInt64Int16Op) Next() coldata.Batch { col1 := vec1.Int64() col2 := vec2.Int16() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -23368,7 +23067,7 @@ func (p projRShiftInt64Int16Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -23447,15 +23146,13 @@ func (p projRShiftInt64Int32Op) Next() coldata.Batch { col1 := vec1.Int64() col2 := vec2.Int32() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -23476,7 +23173,7 @@ func (p projRShiftInt64Int32Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -23555,15 +23252,13 @@ func (p projRShiftInt64Int64Op) Next() coldata.Batch { col1 := vec1.Int64() col2 := vec2.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -23584,7 +23279,7 @@ func (p projRShiftInt64Int64Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -23665,15 +23360,13 @@ func (p projRShiftDatumInt16Op) Next() coldata.Batch { col1 := vec1.Datum() col2 := vec2.Int16() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -23699,7 +23392,7 @@ func (p projRShiftDatumInt16Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -23793,15 +23486,13 @@ func (p projRShiftDatumInt32Op) Next() coldata.Batch { col1 := vec1.Datum() col2 := vec2.Int32() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -23827,7 +23518,7 @@ func (p projRShiftDatumInt32Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -23921,15 +23612,13 @@ func (p projRShiftDatumInt64Op) Next() coldata.Batch { col1 := vec1.Datum() col2 := vec2.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -23955,7 +23644,7 @@ func (p projRShiftDatumInt64Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -24047,15 +23736,13 @@ func (p projJSONFetchValJSONBytesOp) Next() coldata.Batch { col1 := vec1.JSON() col2 := vec2.Bytes() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -24080,7 +23767,7 @@ func (p projJSONFetchValJSONBytesOp) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -24167,15 +23854,13 @@ func (p projJSONFetchValJSONInt16Op) Next() coldata.Batch { col1 := vec1.JSON() col2 := vec2.Int16() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -24197,7 +23882,7 @@ func (p projJSONFetchValJSONInt16Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -24277,15 +23962,13 @@ func (p projJSONFetchValJSONInt32Op) Next() coldata.Batch { col1 := vec1.JSON() col2 := vec2.Int32() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -24307,7 +23990,7 @@ func (p projJSONFetchValJSONInt32Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -24387,15 +24070,13 @@ func (p projJSONFetchValJSONInt64Op) Next() coldata.Batch { col1 := vec1.JSON() col2 := vec2.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -24417,7 +24098,7 @@ func (p projJSONFetchValJSONInt64Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -24497,15 +24178,13 @@ func (p projJSONFetchTextJSONBytesOp) Next() coldata.Batch { col1 := vec1.JSON() col2 := vec2.Bytes() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -24539,7 +24218,7 @@ func (p projJSONFetchTextJSONBytesOp) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -24653,15 +24332,13 @@ func (p projJSONFetchTextJSONInt16Op) Next() coldata.Batch { col1 := vec1.JSON() col2 := vec2.Int16() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -24692,7 +24369,7 @@ func (p projJSONFetchTextJSONInt16Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -24799,15 +24476,13 @@ func (p projJSONFetchTextJSONInt32Op) Next() coldata.Batch { col1 := vec1.JSON() col2 := vec2.Int32() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -24838,7 +24513,7 @@ func (p projJSONFetchTextJSONInt32Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -24945,15 +24620,13 @@ func (p projJSONFetchTextJSONInt64Op) Next() coldata.Batch { col1 := vec1.JSON() col2 := vec2.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -24984,7 +24657,7 @@ func (p projJSONFetchTextJSONInt64Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -25091,15 +24764,13 @@ func (p projJSONFetchValPathJSONDatumOp) Next() coldata.Batch { col1 := vec1.JSON() col2 := vec2.Datum() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -25121,7 +24792,7 @@ func (p projJSONFetchValPathJSONDatumOp) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -25199,15 +24870,13 @@ func (p projJSONFetchTextPathJSONDatumOp) Next() coldata.Batch { col1 := vec1.JSON() col2 := vec2.Datum() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -25239,7 +24908,7 @@ func (p projJSONFetchTextPathJSONDatumOp) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -25347,15 +25016,13 @@ func (p projEQBoolBoolOp) Next() coldata.Batch { col1 := vec1.Bool() col2 := vec2.Bool() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -25382,7 +25049,7 @@ func (p projEQBoolBoolOp) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -25479,15 +25146,13 @@ func (p projEQBytesBytesOp) Next() coldata.Batch { col1 := vec1.Bytes() col2 := vec2.Bytes() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -25506,7 +25171,7 @@ func (p projEQBytesBytesOp) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -25575,15 +25240,13 @@ func (p projEQDecimalInt16Op) Next() coldata.Batch { col1 := vec1.Decimal() col2 := vec2.Int16() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -25608,7 +25271,7 @@ func (p projEQDecimalInt16Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -25699,15 +25362,13 @@ func (p projEQDecimalInt32Op) Next() coldata.Batch { col1 := vec1.Decimal() col2 := vec2.Int32() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -25732,7 +25393,7 @@ func (p projEQDecimalInt32Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -25823,15 +25484,13 @@ func (p projEQDecimalInt64Op) Next() coldata.Batch { col1 := vec1.Decimal() col2 := vec2.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -25856,7 +25515,7 @@ func (p projEQDecimalInt64Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -25947,15 +25606,13 @@ func (p projEQDecimalFloat64Op) Next() coldata.Batch { col1 := vec1.Decimal() col2 := vec2.Float64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -25982,7 +25639,7 @@ func (p projEQDecimalFloat64Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -26079,15 +25736,13 @@ func (p projEQDecimalDecimalOp) Next() coldata.Batch { col1 := vec1.Decimal() col2 := vec2.Decimal() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -26106,7 +25761,7 @@ func (p projEQDecimalDecimalOp) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -26179,15 +25834,13 @@ func (p projEQInt16Int16Op) Next() coldata.Batch { col1 := vec1.Int16() col2 := vec2.Int16() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -26217,7 +25870,7 @@ func (p projEQInt16Int16Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -26323,15 +25976,13 @@ func (p projEQInt16Int32Op) Next() coldata.Batch { col1 := vec1.Int16() col2 := vec2.Int32() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -26361,7 +26012,7 @@ func (p projEQInt16Int32Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -26467,15 +26118,13 @@ func (p projEQInt16Int64Op) Next() coldata.Batch { col1 := vec1.Int16() col2 := vec2.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -26505,7 +26154,7 @@ func (p projEQInt16Int64Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -26611,15 +26260,13 @@ func (p projEQInt16Float64Op) Next() coldata.Batch { col1 := vec1.Int16() col2 := vec2.Float64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -26657,7 +26304,7 @@ func (p projEQInt16Float64Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -26787,15 +26434,13 @@ func (p projEQInt16DecimalOp) Next() coldata.Batch { col1 := vec1.Int16() col2 := vec2.Decimal() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -26820,7 +26465,7 @@ func (p projEQInt16DecimalOp) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -26911,15 +26556,13 @@ func (p projEQInt32Int16Op) Next() coldata.Batch { col1 := vec1.Int32() col2 := vec2.Int16() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -26949,7 +26592,7 @@ func (p projEQInt32Int16Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -27055,15 +26698,13 @@ func (p projEQInt32Int32Op) Next() coldata.Batch { col1 := vec1.Int32() col2 := vec2.Int32() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -27093,7 +26734,7 @@ func (p projEQInt32Int32Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -27199,15 +26840,13 @@ func (p projEQInt32Int64Op) Next() coldata.Batch { col1 := vec1.Int32() col2 := vec2.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -27237,7 +26876,7 @@ func (p projEQInt32Int64Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -27343,15 +26982,13 @@ func (p projEQInt32Float64Op) Next() coldata.Batch { col1 := vec1.Int32() col2 := vec2.Float64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -27389,7 +27026,7 @@ func (p projEQInt32Float64Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -27519,15 +27156,13 @@ func (p projEQInt32DecimalOp) Next() coldata.Batch { col1 := vec1.Int32() col2 := vec2.Decimal() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -27552,7 +27187,7 @@ func (p projEQInt32DecimalOp) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -27643,15 +27278,13 @@ func (p projEQInt64Int16Op) Next() coldata.Batch { col1 := vec1.Int64() col2 := vec2.Int16() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -27681,7 +27314,7 @@ func (p projEQInt64Int16Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -27787,15 +27420,13 @@ func (p projEQInt64Int32Op) Next() coldata.Batch { col1 := vec1.Int64() col2 := vec2.Int32() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -27825,7 +27456,7 @@ func (p projEQInt64Int32Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -27931,15 +27562,13 @@ func (p projEQInt64Int64Op) Next() coldata.Batch { col1 := vec1.Int64() col2 := vec2.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -27969,7 +27598,7 @@ func (p projEQInt64Int64Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -28075,15 +27704,13 @@ func (p projEQInt64Float64Op) Next() coldata.Batch { col1 := vec1.Int64() col2 := vec2.Float64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -28121,7 +27748,7 @@ func (p projEQInt64Float64Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -28251,15 +27878,13 @@ func (p projEQInt64DecimalOp) Next() coldata.Batch { col1 := vec1.Int64() col2 := vec2.Decimal() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -28284,7 +27909,7 @@ func (p projEQInt64DecimalOp) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -28375,15 +28000,13 @@ func (p projEQFloat64Int16Op) Next() coldata.Batch { col1 := vec1.Float64() col2 := vec2.Int16() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -28421,7 +28044,7 @@ func (p projEQFloat64Int16Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -28551,15 +28174,13 @@ func (p projEQFloat64Int32Op) Next() coldata.Batch { col1 := vec1.Float64() col2 := vec2.Int32() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -28597,7 +28218,7 @@ func (p projEQFloat64Int32Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -28727,15 +28348,13 @@ func (p projEQFloat64Int64Op) Next() coldata.Batch { col1 := vec1.Float64() col2 := vec2.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -28773,7 +28392,7 @@ func (p projEQFloat64Int64Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -28903,15 +28522,13 @@ func (p projEQFloat64Float64Op) Next() coldata.Batch { col1 := vec1.Float64() col2 := vec2.Float64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -28949,7 +28566,7 @@ func (p projEQFloat64Float64Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -29079,15 +28696,13 @@ func (p projEQFloat64DecimalOp) Next() coldata.Batch { col1 := vec1.Float64() col2 := vec2.Decimal() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -29114,7 +28729,7 @@ func (p projEQFloat64DecimalOp) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -29211,15 +28826,13 @@ func (p projEQTimestampTimestampOp) Next() coldata.Batch { col1 := vec1.Timestamp() col2 := vec2.Timestamp() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -29245,7 +28858,7 @@ func (p projEQTimestampTimestampOp) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -29339,15 +28952,13 @@ func (p projEQIntervalIntervalOp) Next() coldata.Batch { col1 := vec1.Interval() col2 := vec2.Interval() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -29366,7 +28977,7 @@ func (p projEQIntervalIntervalOp) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -29439,15 +29050,13 @@ func (p projEQJSONJSONOp) Next() coldata.Batch { col1 := vec1.JSON() col2 := vec2.JSON() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -29472,7 +29081,7 @@ func (p projEQJSONJSONOp) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -29559,20 +29168,29 @@ func (p projEQDatumDatumOp) Next() coldata.Batch { col1 := vec1.Datum() col2 := vec2.Datum() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := - (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) && !p.calledOnNullInput - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) + if col1Nulls.NullAt(i) { + // If we entered this branch for a null value, calledOnNullInput must be + // true. This means the projection should be calculated on null arguments. + // When a value is null, the underlying data in the slice is invalid and + // can be anything, so we need to overwrite it here. calledOnNullInput is + // currently only true for ConcatDatumDatum, so only the datum case needs + // to be handled. + arg1 = tree.DNull + } arg2 := col2.Get(i) + if col2Nulls.NullAt(i) { + arg2 = tree.DNull + } { var cmpResult int @@ -29589,11 +29207,23 @@ func (p projEQDatumDatumOp) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) + if col1Nulls.NullAt(i) { + // If we entered this branch for a null value, calledOnNullInput must be + // true. This means the projection should be calculated on null arguments. + // When a value is null, the underlying data in the slice is invalid and + // can be anything, so we need to overwrite it here. calledOnNullInput is + // currently only true for ConcatDatumDatum, so only the datum case needs + // to be handled. + arg1 = tree.DNull + } arg2 := col2.Get(i) + if col2Nulls.NullAt(i) { + arg2 = tree.DNull + } { var cmpResult int @@ -29606,7 +29236,9 @@ func (p projEQDatumDatumOp) Next() coldata.Batch { } } } - projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) + if !p.calledOnNullInput { + projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) + } } else { if sel := batch.Selection(); sel != nil { sel = sel[:n] @@ -29664,15 +29296,13 @@ func (p projNEBoolBoolOp) Next() coldata.Batch { col1 := vec1.Bool() col2 := vec2.Bool() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -29699,7 +29329,7 @@ func (p projNEBoolBoolOp) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -29796,15 +29426,13 @@ func (p projNEBytesBytesOp) Next() coldata.Batch { col1 := vec1.Bytes() col2 := vec2.Bytes() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -29823,7 +29451,7 @@ func (p projNEBytesBytesOp) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -29892,15 +29520,13 @@ func (p projNEDecimalInt16Op) Next() coldata.Batch { col1 := vec1.Decimal() col2 := vec2.Int16() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -29925,7 +29551,7 @@ func (p projNEDecimalInt16Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -30016,15 +29642,13 @@ func (p projNEDecimalInt32Op) Next() coldata.Batch { col1 := vec1.Decimal() col2 := vec2.Int32() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -30049,7 +29673,7 @@ func (p projNEDecimalInt32Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -30140,15 +29764,13 @@ func (p projNEDecimalInt64Op) Next() coldata.Batch { col1 := vec1.Decimal() col2 := vec2.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -30173,7 +29795,7 @@ func (p projNEDecimalInt64Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -30264,15 +29886,13 @@ func (p projNEDecimalFloat64Op) Next() coldata.Batch { col1 := vec1.Decimal() col2 := vec2.Float64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -30299,7 +29919,7 @@ func (p projNEDecimalFloat64Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -30396,15 +30016,13 @@ func (p projNEDecimalDecimalOp) Next() coldata.Batch { col1 := vec1.Decimal() col2 := vec2.Decimal() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -30423,7 +30041,7 @@ func (p projNEDecimalDecimalOp) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -30496,15 +30114,13 @@ func (p projNEInt16Int16Op) Next() coldata.Batch { col1 := vec1.Int16() col2 := vec2.Int16() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -30534,7 +30150,7 @@ func (p projNEInt16Int16Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -30640,15 +30256,13 @@ func (p projNEInt16Int32Op) Next() coldata.Batch { col1 := vec1.Int16() col2 := vec2.Int32() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -30678,7 +30292,7 @@ func (p projNEInt16Int32Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -30784,15 +30398,13 @@ func (p projNEInt16Int64Op) Next() coldata.Batch { col1 := vec1.Int16() col2 := vec2.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -30822,7 +30434,7 @@ func (p projNEInt16Int64Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -30928,15 +30540,13 @@ func (p projNEInt16Float64Op) Next() coldata.Batch { col1 := vec1.Int16() col2 := vec2.Float64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -30974,7 +30584,7 @@ func (p projNEInt16Float64Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -31104,15 +30714,13 @@ func (p projNEInt16DecimalOp) Next() coldata.Batch { col1 := vec1.Int16() col2 := vec2.Decimal() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -31137,7 +30745,7 @@ func (p projNEInt16DecimalOp) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -31228,15 +30836,13 @@ func (p projNEInt32Int16Op) Next() coldata.Batch { col1 := vec1.Int32() col2 := vec2.Int16() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -31266,7 +30872,7 @@ func (p projNEInt32Int16Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -31372,15 +30978,13 @@ func (p projNEInt32Int32Op) Next() coldata.Batch { col1 := vec1.Int32() col2 := vec2.Int32() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -31410,7 +31014,7 @@ func (p projNEInt32Int32Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -31516,15 +31120,13 @@ func (p projNEInt32Int64Op) Next() coldata.Batch { col1 := vec1.Int32() col2 := vec2.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -31554,7 +31156,7 @@ func (p projNEInt32Int64Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -31660,15 +31262,13 @@ func (p projNEInt32Float64Op) Next() coldata.Batch { col1 := vec1.Int32() col2 := vec2.Float64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -31706,7 +31306,7 @@ func (p projNEInt32Float64Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -31836,15 +31436,13 @@ func (p projNEInt32DecimalOp) Next() coldata.Batch { col1 := vec1.Int32() col2 := vec2.Decimal() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -31869,7 +31467,7 @@ func (p projNEInt32DecimalOp) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -31960,15 +31558,13 @@ func (p projNEInt64Int16Op) Next() coldata.Batch { col1 := vec1.Int64() col2 := vec2.Int16() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -31998,7 +31594,7 @@ func (p projNEInt64Int16Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -32104,15 +31700,13 @@ func (p projNEInt64Int32Op) Next() coldata.Batch { col1 := vec1.Int64() col2 := vec2.Int32() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -32142,7 +31736,7 @@ func (p projNEInt64Int32Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -32248,15 +31842,13 @@ func (p projNEInt64Int64Op) Next() coldata.Batch { col1 := vec1.Int64() col2 := vec2.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -32286,7 +31878,7 @@ func (p projNEInt64Int64Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -32392,15 +31984,13 @@ func (p projNEInt64Float64Op) Next() coldata.Batch { col1 := vec1.Int64() col2 := vec2.Float64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -32438,7 +32028,7 @@ func (p projNEInt64Float64Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -32568,15 +32158,13 @@ func (p projNEInt64DecimalOp) Next() coldata.Batch { col1 := vec1.Int64() col2 := vec2.Decimal() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -32601,7 +32189,7 @@ func (p projNEInt64DecimalOp) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -32692,15 +32280,13 @@ func (p projNEFloat64Int16Op) Next() coldata.Batch { col1 := vec1.Float64() col2 := vec2.Int16() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -32738,7 +32324,7 @@ func (p projNEFloat64Int16Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -32868,15 +32454,13 @@ func (p projNEFloat64Int32Op) Next() coldata.Batch { col1 := vec1.Float64() col2 := vec2.Int32() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -32914,7 +32498,7 @@ func (p projNEFloat64Int32Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -33044,15 +32628,13 @@ func (p projNEFloat64Int64Op) Next() coldata.Batch { col1 := vec1.Float64() col2 := vec2.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -33090,7 +32672,7 @@ func (p projNEFloat64Int64Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -33220,15 +32802,13 @@ func (p projNEFloat64Float64Op) Next() coldata.Batch { col1 := vec1.Float64() col2 := vec2.Float64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -33266,7 +32846,7 @@ func (p projNEFloat64Float64Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -33396,15 +32976,13 @@ func (p projNEFloat64DecimalOp) Next() coldata.Batch { col1 := vec1.Float64() col2 := vec2.Decimal() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -33431,7 +33009,7 @@ func (p projNEFloat64DecimalOp) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -33528,15 +33106,13 @@ func (p projNETimestampTimestampOp) Next() coldata.Batch { col1 := vec1.Timestamp() col2 := vec2.Timestamp() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -33562,7 +33138,7 @@ func (p projNETimestampTimestampOp) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -33656,15 +33232,13 @@ func (p projNEIntervalIntervalOp) Next() coldata.Batch { col1 := vec1.Interval() col2 := vec2.Interval() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -33683,7 +33257,7 @@ func (p projNEIntervalIntervalOp) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -33756,15 +33330,13 @@ func (p projNEJSONJSONOp) Next() coldata.Batch { col1 := vec1.JSON() col2 := vec2.JSON() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -33789,7 +33361,7 @@ func (p projNEJSONJSONOp) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -33876,20 +33448,29 @@ func (p projNEDatumDatumOp) Next() coldata.Batch { col1 := vec1.Datum() col2 := vec2.Datum() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := - (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) && !p.calledOnNullInput - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) + if col1Nulls.NullAt(i) { + // If we entered this branch for a null value, calledOnNullInput must be + // true. This means the projection should be calculated on null arguments. + // When a value is null, the underlying data in the slice is invalid and + // can be anything, so we need to overwrite it here. calledOnNullInput is + // currently only true for ConcatDatumDatum, so only the datum case needs + // to be handled. + arg1 = tree.DNull + } arg2 := col2.Get(i) + if col2Nulls.NullAt(i) { + arg2 = tree.DNull + } { var cmpResult int @@ -33906,11 +33487,23 @@ func (p projNEDatumDatumOp) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) + if col1Nulls.NullAt(i) { + // If we entered this branch for a null value, calledOnNullInput must be + // true. This means the projection should be calculated on null arguments. + // When a value is null, the underlying data in the slice is invalid and + // can be anything, so we need to overwrite it here. calledOnNullInput is + // currently only true for ConcatDatumDatum, so only the datum case needs + // to be handled. + arg1 = tree.DNull + } arg2 := col2.Get(i) + if col2Nulls.NullAt(i) { + arg2 = tree.DNull + } { var cmpResult int @@ -33923,7 +33516,9 @@ func (p projNEDatumDatumOp) Next() coldata.Batch { } } } - projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) + if !p.calledOnNullInput { + projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) + } } else { if sel := batch.Selection(); sel != nil { sel = sel[:n] @@ -33981,15 +33576,13 @@ func (p projLTBoolBoolOp) Next() coldata.Batch { col1 := vec1.Bool() col2 := vec2.Bool() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -34016,7 +33609,7 @@ func (p projLTBoolBoolOp) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -34113,15 +33706,13 @@ func (p projLTBytesBytesOp) Next() coldata.Batch { col1 := vec1.Bytes() col2 := vec2.Bytes() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -34140,7 +33731,7 @@ func (p projLTBytesBytesOp) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -34209,15 +33800,13 @@ func (p projLTDecimalInt16Op) Next() coldata.Batch { col1 := vec1.Decimal() col2 := vec2.Int16() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -34242,7 +33831,7 @@ func (p projLTDecimalInt16Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -34333,15 +33922,13 @@ func (p projLTDecimalInt32Op) Next() coldata.Batch { col1 := vec1.Decimal() col2 := vec2.Int32() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -34366,7 +33953,7 @@ func (p projLTDecimalInt32Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -34457,15 +34044,13 @@ func (p projLTDecimalInt64Op) Next() coldata.Batch { col1 := vec1.Decimal() col2 := vec2.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -34490,7 +34075,7 @@ func (p projLTDecimalInt64Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -34581,15 +34166,13 @@ func (p projLTDecimalFloat64Op) Next() coldata.Batch { col1 := vec1.Decimal() col2 := vec2.Float64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -34616,7 +34199,7 @@ func (p projLTDecimalFloat64Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -34713,15 +34296,13 @@ func (p projLTDecimalDecimalOp) Next() coldata.Batch { col1 := vec1.Decimal() col2 := vec2.Decimal() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -34740,7 +34321,7 @@ func (p projLTDecimalDecimalOp) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -34813,15 +34394,13 @@ func (p projLTInt16Int16Op) Next() coldata.Batch { col1 := vec1.Int16() col2 := vec2.Int16() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -34851,7 +34430,7 @@ func (p projLTInt16Int16Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -34957,15 +34536,13 @@ func (p projLTInt16Int32Op) Next() coldata.Batch { col1 := vec1.Int16() col2 := vec2.Int32() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -34995,7 +34572,7 @@ func (p projLTInt16Int32Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -35101,15 +34678,13 @@ func (p projLTInt16Int64Op) Next() coldata.Batch { col1 := vec1.Int16() col2 := vec2.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -35139,7 +34714,7 @@ func (p projLTInt16Int64Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -35245,15 +34820,13 @@ func (p projLTInt16Float64Op) Next() coldata.Batch { col1 := vec1.Int16() col2 := vec2.Float64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -35291,7 +34864,7 @@ func (p projLTInt16Float64Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -35421,15 +34994,13 @@ func (p projLTInt16DecimalOp) Next() coldata.Batch { col1 := vec1.Int16() col2 := vec2.Decimal() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -35454,7 +35025,7 @@ func (p projLTInt16DecimalOp) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -35545,15 +35116,13 @@ func (p projLTInt32Int16Op) Next() coldata.Batch { col1 := vec1.Int32() col2 := vec2.Int16() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -35583,7 +35152,7 @@ func (p projLTInt32Int16Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -35689,15 +35258,13 @@ func (p projLTInt32Int32Op) Next() coldata.Batch { col1 := vec1.Int32() col2 := vec2.Int32() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -35727,7 +35294,7 @@ func (p projLTInt32Int32Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -35833,15 +35400,13 @@ func (p projLTInt32Int64Op) Next() coldata.Batch { col1 := vec1.Int32() col2 := vec2.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -35871,7 +35436,7 @@ func (p projLTInt32Int64Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -35977,15 +35542,13 @@ func (p projLTInt32Float64Op) Next() coldata.Batch { col1 := vec1.Int32() col2 := vec2.Float64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -36023,7 +35586,7 @@ func (p projLTInt32Float64Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -36153,15 +35716,13 @@ func (p projLTInt32DecimalOp) Next() coldata.Batch { col1 := vec1.Int32() col2 := vec2.Decimal() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -36186,7 +35747,7 @@ func (p projLTInt32DecimalOp) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -36277,15 +35838,13 @@ func (p projLTInt64Int16Op) Next() coldata.Batch { col1 := vec1.Int64() col2 := vec2.Int16() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -36315,7 +35874,7 @@ func (p projLTInt64Int16Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -36421,15 +35980,13 @@ func (p projLTInt64Int32Op) Next() coldata.Batch { col1 := vec1.Int64() col2 := vec2.Int32() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -36459,7 +36016,7 @@ func (p projLTInt64Int32Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -36565,15 +36122,13 @@ func (p projLTInt64Int64Op) Next() coldata.Batch { col1 := vec1.Int64() col2 := vec2.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -36603,7 +36158,7 @@ func (p projLTInt64Int64Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -36709,15 +36264,13 @@ func (p projLTInt64Float64Op) Next() coldata.Batch { col1 := vec1.Int64() col2 := vec2.Float64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -36755,7 +36308,7 @@ func (p projLTInt64Float64Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -36885,15 +36438,13 @@ func (p projLTInt64DecimalOp) Next() coldata.Batch { col1 := vec1.Int64() col2 := vec2.Decimal() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -36918,7 +36469,7 @@ func (p projLTInt64DecimalOp) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -37009,15 +36560,13 @@ func (p projLTFloat64Int16Op) Next() coldata.Batch { col1 := vec1.Float64() col2 := vec2.Int16() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -37055,7 +36604,7 @@ func (p projLTFloat64Int16Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -37185,15 +36734,13 @@ func (p projLTFloat64Int32Op) Next() coldata.Batch { col1 := vec1.Float64() col2 := vec2.Int32() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -37231,7 +36778,7 @@ func (p projLTFloat64Int32Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -37361,15 +36908,13 @@ func (p projLTFloat64Int64Op) Next() coldata.Batch { col1 := vec1.Float64() col2 := vec2.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -37407,7 +36952,7 @@ func (p projLTFloat64Int64Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -37537,15 +37082,13 @@ func (p projLTFloat64Float64Op) Next() coldata.Batch { col1 := vec1.Float64() col2 := vec2.Float64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -37583,7 +37126,7 @@ func (p projLTFloat64Float64Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -37713,15 +37256,13 @@ func (p projLTFloat64DecimalOp) Next() coldata.Batch { col1 := vec1.Float64() col2 := vec2.Decimal() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -37748,7 +37289,7 @@ func (p projLTFloat64DecimalOp) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -37845,15 +37386,13 @@ func (p projLTTimestampTimestampOp) Next() coldata.Batch { col1 := vec1.Timestamp() col2 := vec2.Timestamp() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -37879,7 +37418,7 @@ func (p projLTTimestampTimestampOp) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -37973,15 +37512,13 @@ func (p projLTIntervalIntervalOp) Next() coldata.Batch { col1 := vec1.Interval() col2 := vec2.Interval() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -38000,7 +37537,7 @@ func (p projLTIntervalIntervalOp) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -38073,15 +37610,13 @@ func (p projLTJSONJSONOp) Next() coldata.Batch { col1 := vec1.JSON() col2 := vec2.JSON() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -38106,7 +37641,7 @@ func (p projLTJSONJSONOp) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -38193,20 +37728,29 @@ func (p projLTDatumDatumOp) Next() coldata.Batch { col1 := vec1.Datum() col2 := vec2.Datum() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := - (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) && !p.calledOnNullInput - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) + if col1Nulls.NullAt(i) { + // If we entered this branch for a null value, calledOnNullInput must be + // true. This means the projection should be calculated on null arguments. + // When a value is null, the underlying data in the slice is invalid and + // can be anything, so we need to overwrite it here. calledOnNullInput is + // currently only true for ConcatDatumDatum, so only the datum case needs + // to be handled. + arg1 = tree.DNull + } arg2 := col2.Get(i) + if col2Nulls.NullAt(i) { + arg2 = tree.DNull + } { var cmpResult int @@ -38223,11 +37767,23 @@ func (p projLTDatumDatumOp) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) + if col1Nulls.NullAt(i) { + // If we entered this branch for a null value, calledOnNullInput must be + // true. This means the projection should be calculated on null arguments. + // When a value is null, the underlying data in the slice is invalid and + // can be anything, so we need to overwrite it here. calledOnNullInput is + // currently only true for ConcatDatumDatum, so only the datum case needs + // to be handled. + arg1 = tree.DNull + } arg2 := col2.Get(i) + if col2Nulls.NullAt(i) { + arg2 = tree.DNull + } { var cmpResult int @@ -38240,7 +37796,9 @@ func (p projLTDatumDatumOp) Next() coldata.Batch { } } } - projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) + if !p.calledOnNullInput { + projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) + } } else { if sel := batch.Selection(); sel != nil { sel = sel[:n] @@ -38298,15 +37856,13 @@ func (p projLEBoolBoolOp) Next() coldata.Batch { col1 := vec1.Bool() col2 := vec2.Bool() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -38333,7 +37889,7 @@ func (p projLEBoolBoolOp) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -38430,15 +37986,13 @@ func (p projLEBytesBytesOp) Next() coldata.Batch { col1 := vec1.Bytes() col2 := vec2.Bytes() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -38457,7 +38011,7 @@ func (p projLEBytesBytesOp) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -38526,15 +38080,13 @@ func (p projLEDecimalInt16Op) Next() coldata.Batch { col1 := vec1.Decimal() col2 := vec2.Int16() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -38559,7 +38111,7 @@ func (p projLEDecimalInt16Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -38650,15 +38202,13 @@ func (p projLEDecimalInt32Op) Next() coldata.Batch { col1 := vec1.Decimal() col2 := vec2.Int32() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -38683,7 +38233,7 @@ func (p projLEDecimalInt32Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -38774,15 +38324,13 @@ func (p projLEDecimalInt64Op) Next() coldata.Batch { col1 := vec1.Decimal() col2 := vec2.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -38807,7 +38355,7 @@ func (p projLEDecimalInt64Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -38898,15 +38446,13 @@ func (p projLEDecimalFloat64Op) Next() coldata.Batch { col1 := vec1.Decimal() col2 := vec2.Float64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -38933,7 +38479,7 @@ func (p projLEDecimalFloat64Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -39030,15 +38576,13 @@ func (p projLEDecimalDecimalOp) Next() coldata.Batch { col1 := vec1.Decimal() col2 := vec2.Decimal() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -39057,7 +38601,7 @@ func (p projLEDecimalDecimalOp) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -39130,15 +38674,13 @@ func (p projLEInt16Int16Op) Next() coldata.Batch { col1 := vec1.Int16() col2 := vec2.Int16() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -39168,7 +38710,7 @@ func (p projLEInt16Int16Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -39274,15 +38816,13 @@ func (p projLEInt16Int32Op) Next() coldata.Batch { col1 := vec1.Int16() col2 := vec2.Int32() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -39312,7 +38852,7 @@ func (p projLEInt16Int32Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -39418,15 +38958,13 @@ func (p projLEInt16Int64Op) Next() coldata.Batch { col1 := vec1.Int16() col2 := vec2.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -39456,7 +38994,7 @@ func (p projLEInt16Int64Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -39562,15 +39100,13 @@ func (p projLEInt16Float64Op) Next() coldata.Batch { col1 := vec1.Int16() col2 := vec2.Float64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -39608,7 +39144,7 @@ func (p projLEInt16Float64Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -39738,15 +39274,13 @@ func (p projLEInt16DecimalOp) Next() coldata.Batch { col1 := vec1.Int16() col2 := vec2.Decimal() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -39771,7 +39305,7 @@ func (p projLEInt16DecimalOp) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -39862,15 +39396,13 @@ func (p projLEInt32Int16Op) Next() coldata.Batch { col1 := vec1.Int32() col2 := vec2.Int16() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -39900,7 +39432,7 @@ func (p projLEInt32Int16Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -40006,15 +39538,13 @@ func (p projLEInt32Int32Op) Next() coldata.Batch { col1 := vec1.Int32() col2 := vec2.Int32() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -40044,7 +39574,7 @@ func (p projLEInt32Int32Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -40150,15 +39680,13 @@ func (p projLEInt32Int64Op) Next() coldata.Batch { col1 := vec1.Int32() col2 := vec2.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -40188,7 +39716,7 @@ func (p projLEInt32Int64Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -40294,15 +39822,13 @@ func (p projLEInt32Float64Op) Next() coldata.Batch { col1 := vec1.Int32() col2 := vec2.Float64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -40340,7 +39866,7 @@ func (p projLEInt32Float64Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -40470,15 +39996,13 @@ func (p projLEInt32DecimalOp) Next() coldata.Batch { col1 := vec1.Int32() col2 := vec2.Decimal() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -40503,7 +40027,7 @@ func (p projLEInt32DecimalOp) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -40594,15 +40118,13 @@ func (p projLEInt64Int16Op) Next() coldata.Batch { col1 := vec1.Int64() col2 := vec2.Int16() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -40632,7 +40154,7 @@ func (p projLEInt64Int16Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -40738,15 +40260,13 @@ func (p projLEInt64Int32Op) Next() coldata.Batch { col1 := vec1.Int64() col2 := vec2.Int32() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -40776,7 +40296,7 @@ func (p projLEInt64Int32Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -40882,15 +40402,13 @@ func (p projLEInt64Int64Op) Next() coldata.Batch { col1 := vec1.Int64() col2 := vec2.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -40920,7 +40438,7 @@ func (p projLEInt64Int64Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -41026,15 +40544,13 @@ func (p projLEInt64Float64Op) Next() coldata.Batch { col1 := vec1.Int64() col2 := vec2.Float64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -41072,7 +40588,7 @@ func (p projLEInt64Float64Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -41202,15 +40718,13 @@ func (p projLEInt64DecimalOp) Next() coldata.Batch { col1 := vec1.Int64() col2 := vec2.Decimal() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -41235,7 +40749,7 @@ func (p projLEInt64DecimalOp) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -41326,15 +40840,13 @@ func (p projLEFloat64Int16Op) Next() coldata.Batch { col1 := vec1.Float64() col2 := vec2.Int16() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -41372,7 +40884,7 @@ func (p projLEFloat64Int16Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -41502,15 +41014,13 @@ func (p projLEFloat64Int32Op) Next() coldata.Batch { col1 := vec1.Float64() col2 := vec2.Int32() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -41548,7 +41058,7 @@ func (p projLEFloat64Int32Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -41678,15 +41188,13 @@ func (p projLEFloat64Int64Op) Next() coldata.Batch { col1 := vec1.Float64() col2 := vec2.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -41724,7 +41232,7 @@ func (p projLEFloat64Int64Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -41854,15 +41362,13 @@ func (p projLEFloat64Float64Op) Next() coldata.Batch { col1 := vec1.Float64() col2 := vec2.Float64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -41900,7 +41406,7 @@ func (p projLEFloat64Float64Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -42030,15 +41536,13 @@ func (p projLEFloat64DecimalOp) Next() coldata.Batch { col1 := vec1.Float64() col2 := vec2.Decimal() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -42065,7 +41569,7 @@ func (p projLEFloat64DecimalOp) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -42162,15 +41666,13 @@ func (p projLETimestampTimestampOp) Next() coldata.Batch { col1 := vec1.Timestamp() col2 := vec2.Timestamp() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -42196,7 +41698,7 @@ func (p projLETimestampTimestampOp) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -42290,15 +41792,13 @@ func (p projLEIntervalIntervalOp) Next() coldata.Batch { col1 := vec1.Interval() col2 := vec2.Interval() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -42317,7 +41817,7 @@ func (p projLEIntervalIntervalOp) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -42390,15 +41890,13 @@ func (p projLEJSONJSONOp) Next() coldata.Batch { col1 := vec1.JSON() col2 := vec2.JSON() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -42423,7 +41921,7 @@ func (p projLEJSONJSONOp) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -42510,20 +42008,29 @@ func (p projLEDatumDatumOp) Next() coldata.Batch { col1 := vec1.Datum() col2 := vec2.Datum() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := - (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) && !p.calledOnNullInput - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) + if col1Nulls.NullAt(i) { + // If we entered this branch for a null value, calledOnNullInput must be + // true. This means the projection should be calculated on null arguments. + // When a value is null, the underlying data in the slice is invalid and + // can be anything, so we need to overwrite it here. calledOnNullInput is + // currently only true for ConcatDatumDatum, so only the datum case needs + // to be handled. + arg1 = tree.DNull + } arg2 := col2.Get(i) + if col2Nulls.NullAt(i) { + arg2 = tree.DNull + } { var cmpResult int @@ -42540,11 +42047,23 @@ func (p projLEDatumDatumOp) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) + if col1Nulls.NullAt(i) { + // If we entered this branch for a null value, calledOnNullInput must be + // true. This means the projection should be calculated on null arguments. + // When a value is null, the underlying data in the slice is invalid and + // can be anything, so we need to overwrite it here. calledOnNullInput is + // currently only true for ConcatDatumDatum, so only the datum case needs + // to be handled. + arg1 = tree.DNull + } arg2 := col2.Get(i) + if col2Nulls.NullAt(i) { + arg2 = tree.DNull + } { var cmpResult int @@ -42557,7 +42076,9 @@ func (p projLEDatumDatumOp) Next() coldata.Batch { } } } - projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) + if !p.calledOnNullInput { + projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) + } } else { if sel := batch.Selection(); sel != nil { sel = sel[:n] @@ -42615,15 +42136,13 @@ func (p projGTBoolBoolOp) Next() coldata.Batch { col1 := vec1.Bool() col2 := vec2.Bool() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -42650,7 +42169,7 @@ func (p projGTBoolBoolOp) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -42747,15 +42266,13 @@ func (p projGTBytesBytesOp) Next() coldata.Batch { col1 := vec1.Bytes() col2 := vec2.Bytes() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -42774,7 +42291,7 @@ func (p projGTBytesBytesOp) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -42843,15 +42360,13 @@ func (p projGTDecimalInt16Op) Next() coldata.Batch { col1 := vec1.Decimal() col2 := vec2.Int16() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -42876,7 +42391,7 @@ func (p projGTDecimalInt16Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -42967,15 +42482,13 @@ func (p projGTDecimalInt32Op) Next() coldata.Batch { col1 := vec1.Decimal() col2 := vec2.Int32() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -43000,7 +42513,7 @@ func (p projGTDecimalInt32Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -43091,15 +42604,13 @@ func (p projGTDecimalInt64Op) Next() coldata.Batch { col1 := vec1.Decimal() col2 := vec2.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -43124,7 +42635,7 @@ func (p projGTDecimalInt64Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -43215,15 +42726,13 @@ func (p projGTDecimalFloat64Op) Next() coldata.Batch { col1 := vec1.Decimal() col2 := vec2.Float64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -43250,7 +42759,7 @@ func (p projGTDecimalFloat64Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -43347,15 +42856,13 @@ func (p projGTDecimalDecimalOp) Next() coldata.Batch { col1 := vec1.Decimal() col2 := vec2.Decimal() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -43374,7 +42881,7 @@ func (p projGTDecimalDecimalOp) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -43447,15 +42954,13 @@ func (p projGTInt16Int16Op) Next() coldata.Batch { col1 := vec1.Int16() col2 := vec2.Int16() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -43485,7 +42990,7 @@ func (p projGTInt16Int16Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -43591,15 +43096,13 @@ func (p projGTInt16Int32Op) Next() coldata.Batch { col1 := vec1.Int16() col2 := vec2.Int32() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -43629,7 +43132,7 @@ func (p projGTInt16Int32Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -43735,15 +43238,13 @@ func (p projGTInt16Int64Op) Next() coldata.Batch { col1 := vec1.Int16() col2 := vec2.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -43773,7 +43274,7 @@ func (p projGTInt16Int64Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -43879,15 +43380,13 @@ func (p projGTInt16Float64Op) Next() coldata.Batch { col1 := vec1.Int16() col2 := vec2.Float64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -43925,7 +43424,7 @@ func (p projGTInt16Float64Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -44055,15 +43554,13 @@ func (p projGTInt16DecimalOp) Next() coldata.Batch { col1 := vec1.Int16() col2 := vec2.Decimal() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -44088,7 +43585,7 @@ func (p projGTInt16DecimalOp) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -44179,15 +43676,13 @@ func (p projGTInt32Int16Op) Next() coldata.Batch { col1 := vec1.Int32() col2 := vec2.Int16() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -44217,7 +43712,7 @@ func (p projGTInt32Int16Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -44323,15 +43818,13 @@ func (p projGTInt32Int32Op) Next() coldata.Batch { col1 := vec1.Int32() col2 := vec2.Int32() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -44361,7 +43854,7 @@ func (p projGTInt32Int32Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -44467,15 +43960,13 @@ func (p projGTInt32Int64Op) Next() coldata.Batch { col1 := vec1.Int32() col2 := vec2.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -44505,7 +43996,7 @@ func (p projGTInt32Int64Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -44611,15 +44102,13 @@ func (p projGTInt32Float64Op) Next() coldata.Batch { col1 := vec1.Int32() col2 := vec2.Float64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -44657,7 +44146,7 @@ func (p projGTInt32Float64Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -44787,15 +44276,13 @@ func (p projGTInt32DecimalOp) Next() coldata.Batch { col1 := vec1.Int32() col2 := vec2.Decimal() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -44820,7 +44307,7 @@ func (p projGTInt32DecimalOp) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -44911,15 +44398,13 @@ func (p projGTInt64Int16Op) Next() coldata.Batch { col1 := vec1.Int64() col2 := vec2.Int16() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -44949,7 +44434,7 @@ func (p projGTInt64Int16Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -45055,15 +44540,13 @@ func (p projGTInt64Int32Op) Next() coldata.Batch { col1 := vec1.Int64() col2 := vec2.Int32() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -45093,7 +44576,7 @@ func (p projGTInt64Int32Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -45199,15 +44682,13 @@ func (p projGTInt64Int64Op) Next() coldata.Batch { col1 := vec1.Int64() col2 := vec2.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -45237,7 +44718,7 @@ func (p projGTInt64Int64Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -45343,15 +44824,13 @@ func (p projGTInt64Float64Op) Next() coldata.Batch { col1 := vec1.Int64() col2 := vec2.Float64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -45389,7 +44868,7 @@ func (p projGTInt64Float64Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -45519,15 +44998,13 @@ func (p projGTInt64DecimalOp) Next() coldata.Batch { col1 := vec1.Int64() col2 := vec2.Decimal() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -45552,7 +45029,7 @@ func (p projGTInt64DecimalOp) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -45643,15 +45120,13 @@ func (p projGTFloat64Int16Op) Next() coldata.Batch { col1 := vec1.Float64() col2 := vec2.Int16() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -45689,7 +45164,7 @@ func (p projGTFloat64Int16Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -45819,15 +45294,13 @@ func (p projGTFloat64Int32Op) Next() coldata.Batch { col1 := vec1.Float64() col2 := vec2.Int32() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -45865,7 +45338,7 @@ func (p projGTFloat64Int32Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -45995,15 +45468,13 @@ func (p projGTFloat64Int64Op) Next() coldata.Batch { col1 := vec1.Float64() col2 := vec2.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -46041,7 +45512,7 @@ func (p projGTFloat64Int64Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -46171,15 +45642,13 @@ func (p projGTFloat64Float64Op) Next() coldata.Batch { col1 := vec1.Float64() col2 := vec2.Float64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -46217,7 +45686,7 @@ func (p projGTFloat64Float64Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -46347,15 +45816,13 @@ func (p projGTFloat64DecimalOp) Next() coldata.Batch { col1 := vec1.Float64() col2 := vec2.Decimal() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -46382,7 +45849,7 @@ func (p projGTFloat64DecimalOp) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -46479,15 +45946,13 @@ func (p projGTTimestampTimestampOp) Next() coldata.Batch { col1 := vec1.Timestamp() col2 := vec2.Timestamp() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -46513,7 +45978,7 @@ func (p projGTTimestampTimestampOp) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -46607,15 +46072,13 @@ func (p projGTIntervalIntervalOp) Next() coldata.Batch { col1 := vec1.Interval() col2 := vec2.Interval() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -46634,7 +46097,7 @@ func (p projGTIntervalIntervalOp) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -46707,15 +46170,13 @@ func (p projGTJSONJSONOp) Next() coldata.Batch { col1 := vec1.JSON() col2 := vec2.JSON() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -46740,7 +46201,7 @@ func (p projGTJSONJSONOp) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -46827,20 +46288,29 @@ func (p projGTDatumDatumOp) Next() coldata.Batch { col1 := vec1.Datum() col2 := vec2.Datum() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := - (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) && !p.calledOnNullInput - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) + if col1Nulls.NullAt(i) { + // If we entered this branch for a null value, calledOnNullInput must be + // true. This means the projection should be calculated on null arguments. + // When a value is null, the underlying data in the slice is invalid and + // can be anything, so we need to overwrite it here. calledOnNullInput is + // currently only true for ConcatDatumDatum, so only the datum case needs + // to be handled. + arg1 = tree.DNull + } arg2 := col2.Get(i) + if col2Nulls.NullAt(i) { + arg2 = tree.DNull + } { var cmpResult int @@ -46857,11 +46327,23 @@ func (p projGTDatumDatumOp) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) + if col1Nulls.NullAt(i) { + // If we entered this branch for a null value, calledOnNullInput must be + // true. This means the projection should be calculated on null arguments. + // When a value is null, the underlying data in the slice is invalid and + // can be anything, so we need to overwrite it here. calledOnNullInput is + // currently only true for ConcatDatumDatum, so only the datum case needs + // to be handled. + arg1 = tree.DNull + } arg2 := col2.Get(i) + if col2Nulls.NullAt(i) { + arg2 = tree.DNull + } { var cmpResult int @@ -46874,7 +46356,9 @@ func (p projGTDatumDatumOp) Next() coldata.Batch { } } } - projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) + if !p.calledOnNullInput { + projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) + } } else { if sel := batch.Selection(); sel != nil { sel = sel[:n] @@ -46932,15 +46416,13 @@ func (p projGEBoolBoolOp) Next() coldata.Batch { col1 := vec1.Bool() col2 := vec2.Bool() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -46967,7 +46449,7 @@ func (p projGEBoolBoolOp) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -47064,15 +46546,13 @@ func (p projGEBytesBytesOp) Next() coldata.Batch { col1 := vec1.Bytes() col2 := vec2.Bytes() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -47091,7 +46571,7 @@ func (p projGEBytesBytesOp) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -47160,15 +46640,13 @@ func (p projGEDecimalInt16Op) Next() coldata.Batch { col1 := vec1.Decimal() col2 := vec2.Int16() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -47193,7 +46671,7 @@ func (p projGEDecimalInt16Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -47284,15 +46762,13 @@ func (p projGEDecimalInt32Op) Next() coldata.Batch { col1 := vec1.Decimal() col2 := vec2.Int32() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -47317,7 +46793,7 @@ func (p projGEDecimalInt32Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -47408,15 +46884,13 @@ func (p projGEDecimalInt64Op) Next() coldata.Batch { col1 := vec1.Decimal() col2 := vec2.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -47441,7 +46915,7 @@ func (p projGEDecimalInt64Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -47532,15 +47006,13 @@ func (p projGEDecimalFloat64Op) Next() coldata.Batch { col1 := vec1.Decimal() col2 := vec2.Float64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -47567,7 +47039,7 @@ func (p projGEDecimalFloat64Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -47664,15 +47136,13 @@ func (p projGEDecimalDecimalOp) Next() coldata.Batch { col1 := vec1.Decimal() col2 := vec2.Decimal() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -47691,7 +47161,7 @@ func (p projGEDecimalDecimalOp) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -47764,15 +47234,13 @@ func (p projGEInt16Int16Op) Next() coldata.Batch { col1 := vec1.Int16() col2 := vec2.Int16() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -47802,7 +47270,7 @@ func (p projGEInt16Int16Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -47908,15 +47376,13 @@ func (p projGEInt16Int32Op) Next() coldata.Batch { col1 := vec1.Int16() col2 := vec2.Int32() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -47946,7 +47412,7 @@ func (p projGEInt16Int32Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -48052,15 +47518,13 @@ func (p projGEInt16Int64Op) Next() coldata.Batch { col1 := vec1.Int16() col2 := vec2.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -48090,7 +47554,7 @@ func (p projGEInt16Int64Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -48196,15 +47660,13 @@ func (p projGEInt16Float64Op) Next() coldata.Batch { col1 := vec1.Int16() col2 := vec2.Float64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -48242,7 +47704,7 @@ func (p projGEInt16Float64Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -48372,15 +47834,13 @@ func (p projGEInt16DecimalOp) Next() coldata.Batch { col1 := vec1.Int16() col2 := vec2.Decimal() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -48405,7 +47865,7 @@ func (p projGEInt16DecimalOp) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -48496,15 +47956,13 @@ func (p projGEInt32Int16Op) Next() coldata.Batch { col1 := vec1.Int32() col2 := vec2.Int16() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -48534,7 +47992,7 @@ func (p projGEInt32Int16Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -48640,15 +48098,13 @@ func (p projGEInt32Int32Op) Next() coldata.Batch { col1 := vec1.Int32() col2 := vec2.Int32() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -48678,7 +48134,7 @@ func (p projGEInt32Int32Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -48784,15 +48240,13 @@ func (p projGEInt32Int64Op) Next() coldata.Batch { col1 := vec1.Int32() col2 := vec2.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -48822,7 +48276,7 @@ func (p projGEInt32Int64Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -48928,15 +48382,13 @@ func (p projGEInt32Float64Op) Next() coldata.Batch { col1 := vec1.Int32() col2 := vec2.Float64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -48974,7 +48426,7 @@ func (p projGEInt32Float64Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -49104,15 +48556,13 @@ func (p projGEInt32DecimalOp) Next() coldata.Batch { col1 := vec1.Int32() col2 := vec2.Decimal() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -49137,7 +48587,7 @@ func (p projGEInt32DecimalOp) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -49228,15 +48678,13 @@ func (p projGEInt64Int16Op) Next() coldata.Batch { col1 := vec1.Int64() col2 := vec2.Int16() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -49266,7 +48714,7 @@ func (p projGEInt64Int16Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -49372,15 +48820,13 @@ func (p projGEInt64Int32Op) Next() coldata.Batch { col1 := vec1.Int64() col2 := vec2.Int32() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -49410,7 +48856,7 @@ func (p projGEInt64Int32Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -49516,15 +48962,13 @@ func (p projGEInt64Int64Op) Next() coldata.Batch { col1 := vec1.Int64() col2 := vec2.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -49554,7 +48998,7 @@ func (p projGEInt64Int64Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -49660,15 +49104,13 @@ func (p projGEInt64Float64Op) Next() coldata.Batch { col1 := vec1.Int64() col2 := vec2.Float64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -49706,7 +49148,7 @@ func (p projGEInt64Float64Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -49836,15 +49278,13 @@ func (p projGEInt64DecimalOp) Next() coldata.Batch { col1 := vec1.Int64() col2 := vec2.Decimal() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -49869,7 +49309,7 @@ func (p projGEInt64DecimalOp) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -49960,15 +49400,13 @@ func (p projGEFloat64Int16Op) Next() coldata.Batch { col1 := vec1.Float64() col2 := vec2.Int16() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -50006,7 +49444,7 @@ func (p projGEFloat64Int16Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -50136,15 +49574,13 @@ func (p projGEFloat64Int32Op) Next() coldata.Batch { col1 := vec1.Float64() col2 := vec2.Int32() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -50182,7 +49618,7 @@ func (p projGEFloat64Int32Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -50312,15 +49748,13 @@ func (p projGEFloat64Int64Op) Next() coldata.Batch { col1 := vec1.Float64() col2 := vec2.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -50358,7 +49792,7 @@ func (p projGEFloat64Int64Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -50488,15 +49922,13 @@ func (p projGEFloat64Float64Op) Next() coldata.Batch { col1 := vec1.Float64() col2 := vec2.Float64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -50534,7 +49966,7 @@ func (p projGEFloat64Float64Op) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -50664,15 +50096,13 @@ func (p projGEFloat64DecimalOp) Next() coldata.Batch { col1 := vec1.Float64() col2 := vec2.Decimal() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -50699,7 +50129,7 @@ func (p projGEFloat64DecimalOp) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -50796,15 +50226,13 @@ func (p projGETimestampTimestampOp) Next() coldata.Batch { col1 := vec1.Timestamp() col2 := vec2.Timestamp() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -50830,7 +50258,7 @@ func (p projGETimestampTimestampOp) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -50924,15 +50352,13 @@ func (p projGEIntervalIntervalOp) Next() coldata.Batch { col1 := vec1.Interval() col2 := vec2.Interval() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -50951,7 +50377,7 @@ func (p projGEIntervalIntervalOp) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. //gcassert:bce @@ -51024,15 +50450,13 @@ func (p projGEJSONJSONOp) Next() coldata.Batch { col1 := vec1.JSON() col2 := vec2.JSON() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -51057,7 +50481,7 @@ func (p projGEJSONJSONOp) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) @@ -51144,20 +50568,29 @@ func (p projGEDatumDatumOp) Next() coldata.Batch { col1 := vec1.Datum() col2 := vec2.Datum() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := - (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) && !p.calledOnNullInput - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) + if col1Nulls.NullAt(i) { + // If we entered this branch for a null value, calledOnNullInput must be + // true. This means the projection should be calculated on null arguments. + // When a value is null, the underlying data in the slice is invalid and + // can be anything, so we need to overwrite it here. calledOnNullInput is + // currently only true for ConcatDatumDatum, so only the datum case needs + // to be handled. + arg1 = tree.DNull + } arg2 := col2.Get(i) + if col2Nulls.NullAt(i) { + arg2 = tree.DNull + } { var cmpResult int @@ -51174,11 +50607,23 @@ func (p projGEDatumDatumOp) Next() coldata.Batch { _ = col1.Get(n - 1) _ = col2.Get(n - 1) for i := 0; i < n; i++ { - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. arg1 := col1.Get(i) + if col1Nulls.NullAt(i) { + // If we entered this branch for a null value, calledOnNullInput must be + // true. This means the projection should be calculated on null arguments. + // When a value is null, the underlying data in the slice is invalid and + // can be anything, so we need to overwrite it here. calledOnNullInput is + // currently only true for ConcatDatumDatum, so only the datum case needs + // to be handled. + arg1 = tree.DNull + } arg2 := col2.Get(i) + if col2Nulls.NullAt(i) { + arg2 = tree.DNull + } { var cmpResult int @@ -51191,7 +50636,9 @@ func (p projGEDatumDatumOp) Next() coldata.Batch { } } } - projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) + if !p.calledOnNullInput { + projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) + } } else { if sel := batch.Selection(); sel != nil { sel = sel[:n] diff --git a/pkg/sql/colexec/colexecproj/proj_non_const_ops_tmpl.go b/pkg/sql/colexec/colexecproj/proj_non_const_ops_tmpl.go index 2f73b50914ab..ed19d1081a20 100644 --- a/pkg/sql/colexec/colexecproj/proj_non_const_ops_tmpl.go +++ b/pkg/sql/colexec/colexecproj/proj_non_const_ops_tmpl.go @@ -123,25 +123,7 @@ func (p _OP_NAME) Next() coldata.Batch { // of a projection is Null. // */}} _outNulls := projVec.Nulls() - - // {{/* - // If calledOnNullInput is true, the function’s definition can handle - // null arguments. We would still want to perform the projection, and - // there is no need to call projVec.SetNulls(). The behaviour will just - // be the same as _HAS_NULLS is false. Since currently only - // ConcatDatumDatum needs this calledOnNullInput == true behaviour, - // logic for calledOnNullInput is only added to the if statement for - // function with Datum, Datum. If we later introduce another projection - // operation that has calledOnNullInput == true, we should update this - // code accordingly. - // */}} - // {{if and (eq .Left.VecMethod "Datum") (eq .Right.VecMethod "Datum")}} - hasNullsAndNotCalledOnNullInput := - (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) && !p.calledOnNullInput - // {{else}} - hasNullsAndNotCalledOnNullInput := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) - // {{end}} - if hasNullsAndNotCalledOnNullInput { + if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { _SET_PROJECTION(true) } else { _SET_PROJECTION(false) @@ -158,6 +140,7 @@ func _SET_PROJECTION(_HAS_NULLS bool) { // {{define "setProjection" -}} // {{$hasNulls := $.HasNulls}} // {{with $.Overload}} + // {{$isDatum := (and (eq .Left.VecMethod "Datum") (eq .Right.VecMethod "Datum"))}} // {{if _HAS_NULLS}} col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() @@ -183,7 +166,13 @@ func _SET_PROJECTION(_HAS_NULLS bool) { // projVec.Nulls() so there is no need to call projVec.SetNulls(). // */}} // {{if _HAS_NULLS}} - projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) + // {{if $isDatum}} + if !p.calledOnNullInput { + // {{end}} + projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) + // {{if $isDatum}} + } + // {{end}} // {{end}} // {{end}} // {{end}} @@ -198,8 +187,9 @@ func _SET_SINGLE_TUPLE_PROJECTION(_HAS_NULLS bool, _HAS_SEL bool) { // */}} // {{$hasNulls := $.HasNulls}} // {{$hasSel := $.HasSel}} // {{with $.Overload}} + // {{$isDatum := (and (eq .Left.VecMethod "Datum") (eq .Right.VecMethod "Datum"))}} // {{if _HAS_NULLS}} - if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { + if p.calledOnNullInput || (!col1Nulls.NullAt(i) && !col2Nulls.NullAt(i)) { // We only want to perform the projection operation if both values are not // null. // {{end}} @@ -207,10 +197,26 @@ func _SET_SINGLE_TUPLE_PROJECTION(_HAS_NULLS bool, _HAS_SEL bool) { // */}} //gcassert:bce // {{end}} arg1 := col1.Get(i) + // {{if (and _HAS_NULLS $isDatum)}} + if col1Nulls.NullAt(i) { + // If we entered this branch for a null value, calledOnNullInput must be + // true. This means the projection should be calculated on null arguments. + // When a value is null, the underlying data in the slice is invalid and + // can be anything, so we need to overwrite it here. calledOnNullInput is + // currently only true for ConcatDatumDatum, so only the datum case needs + // to be handled. + arg1 = tree.DNull + } + // {{end}} // {{if and (.Right.Sliceable) (not _HAS_SEL)}} //gcassert:bce // {{end}} arg2 := col2.Get(i) + // {{if (and _HAS_NULLS $isDatum)}} + if col2Nulls.NullAt(i) { + arg2 = tree.DNull + } + // {{end}} _ASSIGN(projCol[i], arg1, arg2, projCol, col1, col2) // {{if _HAS_NULLS}} } diff --git a/pkg/sql/colexec/colexecprojconst/proj_const_left_ops.eg.go b/pkg/sql/colexec/colexecprojconst/proj_const_left_ops.eg.go index fea76080cd16..d984a9a0e4ff 100644 --- a/pkg/sql/colexec/colexecprojconst/proj_const_left_ops.eg.go +++ b/pkg/sql/colexec/colexecprojconst/proj_const_left_ops.eg.go @@ -68,14 +68,12 @@ func (p projBitandInt16ConstInt16Op) Next() coldata.Batch { col := col projCol := projVec.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -87,7 +85,7 @@ func (p projBitandInt16ConstInt16Op) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -144,14 +142,12 @@ func (p projBitandInt16ConstInt32Op) Next() coldata.Batch { col := col projCol := projVec.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -163,7 +159,7 @@ func (p projBitandInt16ConstInt32Op) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -220,14 +216,12 @@ func (p projBitandInt16ConstInt64Op) Next() coldata.Batch { col := col projCol := projVec.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -239,7 +233,7 @@ func (p projBitandInt16ConstInt64Op) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -296,14 +290,12 @@ func (p projBitandInt32ConstInt16Op) Next() coldata.Batch { col := col projCol := projVec.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -315,7 +307,7 @@ func (p projBitandInt32ConstInt16Op) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -372,14 +364,12 @@ func (p projBitandInt32ConstInt32Op) Next() coldata.Batch { col := col projCol := projVec.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -391,7 +381,7 @@ func (p projBitandInt32ConstInt32Op) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -448,14 +438,12 @@ func (p projBitandInt32ConstInt64Op) Next() coldata.Batch { col := col projCol := projVec.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -467,7 +455,7 @@ func (p projBitandInt32ConstInt64Op) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -524,14 +512,12 @@ func (p projBitandInt64ConstInt16Op) Next() coldata.Batch { col := col projCol := projVec.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -543,7 +529,7 @@ func (p projBitandInt64ConstInt16Op) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -600,14 +586,12 @@ func (p projBitandInt64ConstInt32Op) Next() coldata.Batch { col := col projCol := projVec.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -619,7 +603,7 @@ func (p projBitandInt64ConstInt32Op) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -676,14 +660,12 @@ func (p projBitandInt64ConstInt64Op) Next() coldata.Batch { col := col projCol := projVec.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -695,7 +677,7 @@ func (p projBitandInt64ConstInt64Op) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -754,16 +736,23 @@ func (p projBitandDatumConstDatumOp) Next() coldata.Batch { col := col projCol := projVec.Datum() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() && !p.calledOnNullInput - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) + if colNulls.NullAt(i) { + // If we entered this branch for a null value, calledOnNullInput must be + // true. This means the projection should be calculated on null arguments. + // When a value is null, the underlying data in the slice is invalid and + // can be anything, so we need to overwrite it here. calledOnNullInput is + // currently only true for ConcatDatumDatum, so only the datum case needs + // to be handled. + arg = tree.DNull + } _res, err := eval.BinaryOp(_overloadHelper.EvalCtx, _overloadHelper.BinOp, p.constArg.(tree.Datum), arg.(tree.Datum)) if err != nil { @@ -780,9 +769,18 @@ func (p projBitandDatumConstDatumOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) + if colNulls.NullAt(i) { + // If we entered this branch for a null value, calledOnNullInput must be + // true. This means the projection should be calculated on null arguments. + // When a value is null, the underlying data in the slice is invalid and + // can be anything, so we need to overwrite it here. calledOnNullInput is + // currently only true for ConcatDatumDatum, so only the datum case needs + // to be handled. + arg = tree.DNull + } _res, err := eval.BinaryOp(_overloadHelper.EvalCtx, _overloadHelper.BinOp, p.constArg.(tree.Datum), arg.(tree.Datum)) if err != nil { @@ -796,7 +794,9 @@ func (p projBitandDatumConstDatumOp) Next() coldata.Batch { } } } - projVec.SetNulls(_outNulls.Or(*colNulls)) + if !p.calledOnNullInput { + projVec.SetNulls(_outNulls.Or(*colNulls)) + } } else { if sel := batch.Selection(); sel != nil { sel = sel[:n] @@ -856,14 +856,12 @@ func (p projBitorInt16ConstInt16Op) Next() coldata.Batch { col := col projCol := projVec.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -875,7 +873,7 @@ func (p projBitorInt16ConstInt16Op) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -932,14 +930,12 @@ func (p projBitorInt16ConstInt32Op) Next() coldata.Batch { col := col projCol := projVec.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -951,7 +947,7 @@ func (p projBitorInt16ConstInt32Op) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -1008,14 +1004,12 @@ func (p projBitorInt16ConstInt64Op) Next() coldata.Batch { col := col projCol := projVec.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -1027,7 +1021,7 @@ func (p projBitorInt16ConstInt64Op) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -1084,14 +1078,12 @@ func (p projBitorInt32ConstInt16Op) Next() coldata.Batch { col := col projCol := projVec.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -1103,7 +1095,7 @@ func (p projBitorInt32ConstInt16Op) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -1160,14 +1152,12 @@ func (p projBitorInt32ConstInt32Op) Next() coldata.Batch { col := col projCol := projVec.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -1179,7 +1169,7 @@ func (p projBitorInt32ConstInt32Op) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -1236,14 +1226,12 @@ func (p projBitorInt32ConstInt64Op) Next() coldata.Batch { col := col projCol := projVec.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -1255,7 +1243,7 @@ func (p projBitorInt32ConstInt64Op) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -1312,14 +1300,12 @@ func (p projBitorInt64ConstInt16Op) Next() coldata.Batch { col := col projCol := projVec.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -1331,7 +1317,7 @@ func (p projBitorInt64ConstInt16Op) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -1388,14 +1374,12 @@ func (p projBitorInt64ConstInt32Op) Next() coldata.Batch { col := col projCol := projVec.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -1407,7 +1391,7 @@ func (p projBitorInt64ConstInt32Op) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -1464,14 +1448,12 @@ func (p projBitorInt64ConstInt64Op) Next() coldata.Batch { col := col projCol := projVec.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -1483,7 +1465,7 @@ func (p projBitorInt64ConstInt64Op) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -1542,16 +1524,23 @@ func (p projBitorDatumConstDatumOp) Next() coldata.Batch { col := col projCol := projVec.Datum() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() && !p.calledOnNullInput - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) + if colNulls.NullAt(i) { + // If we entered this branch for a null value, calledOnNullInput must be + // true. This means the projection should be calculated on null arguments. + // When a value is null, the underlying data in the slice is invalid and + // can be anything, so we need to overwrite it here. calledOnNullInput is + // currently only true for ConcatDatumDatum, so only the datum case needs + // to be handled. + arg = tree.DNull + } _res, err := eval.BinaryOp(_overloadHelper.EvalCtx, _overloadHelper.BinOp, p.constArg.(tree.Datum), arg.(tree.Datum)) if err != nil { @@ -1568,9 +1557,18 @@ func (p projBitorDatumConstDatumOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) + if colNulls.NullAt(i) { + // If we entered this branch for a null value, calledOnNullInput must be + // true. This means the projection should be calculated on null arguments. + // When a value is null, the underlying data in the slice is invalid and + // can be anything, so we need to overwrite it here. calledOnNullInput is + // currently only true for ConcatDatumDatum, so only the datum case needs + // to be handled. + arg = tree.DNull + } _res, err := eval.BinaryOp(_overloadHelper.EvalCtx, _overloadHelper.BinOp, p.constArg.(tree.Datum), arg.(tree.Datum)) if err != nil { @@ -1584,7 +1582,9 @@ func (p projBitorDatumConstDatumOp) Next() coldata.Batch { } } } - projVec.SetNulls(_outNulls.Or(*colNulls)) + if !p.calledOnNullInput { + projVec.SetNulls(_outNulls.Or(*colNulls)) + } } else { if sel := batch.Selection(); sel != nil { sel = sel[:n] @@ -1644,14 +1644,12 @@ func (p projBitxorInt16ConstInt16Op) Next() coldata.Batch { col := col projCol := projVec.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -1663,7 +1661,7 @@ func (p projBitxorInt16ConstInt16Op) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -1720,14 +1718,12 @@ func (p projBitxorInt16ConstInt32Op) Next() coldata.Batch { col := col projCol := projVec.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -1739,7 +1735,7 @@ func (p projBitxorInt16ConstInt32Op) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -1796,14 +1792,12 @@ func (p projBitxorInt16ConstInt64Op) Next() coldata.Batch { col := col projCol := projVec.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -1815,7 +1809,7 @@ func (p projBitxorInt16ConstInt64Op) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -1872,14 +1866,12 @@ func (p projBitxorInt32ConstInt16Op) Next() coldata.Batch { col := col projCol := projVec.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -1891,7 +1883,7 @@ func (p projBitxorInt32ConstInt16Op) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -1948,14 +1940,12 @@ func (p projBitxorInt32ConstInt32Op) Next() coldata.Batch { col := col projCol := projVec.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -1967,7 +1957,7 @@ func (p projBitxorInt32ConstInt32Op) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -2024,14 +2014,12 @@ func (p projBitxorInt32ConstInt64Op) Next() coldata.Batch { col := col projCol := projVec.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -2043,7 +2031,7 @@ func (p projBitxorInt32ConstInt64Op) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -2100,14 +2088,12 @@ func (p projBitxorInt64ConstInt16Op) Next() coldata.Batch { col := col projCol := projVec.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -2119,7 +2105,7 @@ func (p projBitxorInt64ConstInt16Op) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -2176,14 +2162,12 @@ func (p projBitxorInt64ConstInt32Op) Next() coldata.Batch { col := col projCol := projVec.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -2195,7 +2179,7 @@ func (p projBitxorInt64ConstInt32Op) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -2252,14 +2236,12 @@ func (p projBitxorInt64ConstInt64Op) Next() coldata.Batch { col := col projCol := projVec.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -2271,7 +2253,7 @@ func (p projBitxorInt64ConstInt64Op) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -2330,16 +2312,23 @@ func (p projBitxorDatumConstDatumOp) Next() coldata.Batch { col := col projCol := projVec.Datum() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() && !p.calledOnNullInput - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) + if colNulls.NullAt(i) { + // If we entered this branch for a null value, calledOnNullInput must be + // true. This means the projection should be calculated on null arguments. + // When a value is null, the underlying data in the slice is invalid and + // can be anything, so we need to overwrite it here. calledOnNullInput is + // currently only true for ConcatDatumDatum, so only the datum case needs + // to be handled. + arg = tree.DNull + } _res, err := eval.BinaryOp(_overloadHelper.EvalCtx, _overloadHelper.BinOp, p.constArg.(tree.Datum), arg.(tree.Datum)) if err != nil { @@ -2356,9 +2345,18 @@ func (p projBitxorDatumConstDatumOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) + if colNulls.NullAt(i) { + // If we entered this branch for a null value, calledOnNullInput must be + // true. This means the projection should be calculated on null arguments. + // When a value is null, the underlying data in the slice is invalid and + // can be anything, so we need to overwrite it here. calledOnNullInput is + // currently only true for ConcatDatumDatum, so only the datum case needs + // to be handled. + arg = tree.DNull + } _res, err := eval.BinaryOp(_overloadHelper.EvalCtx, _overloadHelper.BinOp, p.constArg.(tree.Datum), arg.(tree.Datum)) if err != nil { @@ -2372,7 +2370,9 @@ func (p projBitxorDatumConstDatumOp) Next() coldata.Batch { } } } - projVec.SetNulls(_outNulls.Or(*colNulls)) + if !p.calledOnNullInput { + projVec.SetNulls(_outNulls.Or(*colNulls)) + } } else { if sel := batch.Selection(); sel != nil { sel = sel[:n] @@ -2432,14 +2432,12 @@ func (p projPlusDecimalConstInt16Op) Next() coldata.Batch { col := col projCol := projVec.Decimal() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -2458,7 +2456,7 @@ func (p projPlusDecimalConstInt16Op) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -2536,14 +2534,12 @@ func (p projPlusDecimalConstInt32Op) Next() coldata.Batch { col := col projCol := projVec.Decimal() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -2562,7 +2558,7 @@ func (p projPlusDecimalConstInt32Op) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -2640,14 +2636,12 @@ func (p projPlusDecimalConstInt64Op) Next() coldata.Batch { col := col projCol := projVec.Decimal() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -2666,7 +2660,7 @@ func (p projPlusDecimalConstInt64Op) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -2744,14 +2738,12 @@ func (p projPlusDecimalConstDecimalOp) Next() coldata.Batch { col := col projCol := projVec.Decimal() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -2769,7 +2761,7 @@ func (p projPlusDecimalConstDecimalOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -2844,14 +2836,12 @@ func (p projPlusInt16ConstInt16Op) Next() coldata.Batch { col := col projCol := projVec.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -2869,7 +2859,7 @@ func (p projPlusInt16ConstInt16Op) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -2944,14 +2934,12 @@ func (p projPlusInt16ConstInt32Op) Next() coldata.Batch { col := col projCol := projVec.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -2969,7 +2957,7 @@ func (p projPlusInt16ConstInt32Op) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -3044,14 +3032,12 @@ func (p projPlusInt16ConstInt64Op) Next() coldata.Batch { col := col projCol := projVec.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -3069,7 +3055,7 @@ func (p projPlusInt16ConstInt64Op) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -3144,14 +3130,12 @@ func (p projPlusInt16ConstDecimalOp) Next() coldata.Batch { col := col projCol := projVec.Decimal() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -3171,7 +3155,7 @@ func (p projPlusInt16ConstDecimalOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -3254,14 +3238,12 @@ func (p projPlusInt16ConstDatumOp) Next() coldata.Batch { col := col projCol := projVec.Datum() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -3284,7 +3266,7 @@ func (p projPlusInt16ConstDatumOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -3374,14 +3356,12 @@ func (p projPlusInt32ConstInt16Op) Next() coldata.Batch { col := col projCol := projVec.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -3399,7 +3379,7 @@ func (p projPlusInt32ConstInt16Op) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -3474,14 +3454,12 @@ func (p projPlusInt32ConstInt32Op) Next() coldata.Batch { col := col projCol := projVec.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -3499,7 +3477,7 @@ func (p projPlusInt32ConstInt32Op) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -3574,14 +3552,12 @@ func (p projPlusInt32ConstInt64Op) Next() coldata.Batch { col := col projCol := projVec.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -3599,7 +3575,7 @@ func (p projPlusInt32ConstInt64Op) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -3674,14 +3650,12 @@ func (p projPlusInt32ConstDecimalOp) Next() coldata.Batch { col := col projCol := projVec.Decimal() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -3701,7 +3675,7 @@ func (p projPlusInt32ConstDecimalOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -3784,14 +3758,12 @@ func (p projPlusInt32ConstDatumOp) Next() coldata.Batch { col := col projCol := projVec.Datum() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -3814,7 +3786,7 @@ func (p projPlusInt32ConstDatumOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -3904,14 +3876,12 @@ func (p projPlusInt64ConstInt16Op) Next() coldata.Batch { col := col projCol := projVec.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -3929,7 +3899,7 @@ func (p projPlusInt64ConstInt16Op) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -4004,14 +3974,12 @@ func (p projPlusInt64ConstInt32Op) Next() coldata.Batch { col := col projCol := projVec.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -4029,7 +3997,7 @@ func (p projPlusInt64ConstInt32Op) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -4104,14 +4072,12 @@ func (p projPlusInt64ConstInt64Op) Next() coldata.Batch { col := col projCol := projVec.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -4129,7 +4095,7 @@ func (p projPlusInt64ConstInt64Op) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -4204,14 +4170,12 @@ func (p projPlusInt64ConstDecimalOp) Next() coldata.Batch { col := col projCol := projVec.Decimal() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -4231,7 +4195,7 @@ func (p projPlusInt64ConstDecimalOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -4314,14 +4278,12 @@ func (p projPlusInt64ConstDatumOp) Next() coldata.Batch { col := col projCol := projVec.Datum() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -4344,7 +4306,7 @@ func (p projPlusInt64ConstDatumOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -4434,14 +4396,12 @@ func (p projPlusFloat64ConstFloat64Op) Next() coldata.Batch { col := col projCol := projVec.Float64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -4456,7 +4416,7 @@ func (p projPlusFloat64ConstFloat64Op) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -4522,14 +4482,12 @@ func (p projPlusTimestampConstIntervalOp) Next() coldata.Batch { col := col projCol := projVec.Timestamp() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) t_res := duration.Add(p.constArg, arg) @@ -4544,7 +4502,7 @@ func (p projPlusTimestampConstIntervalOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -4610,14 +4568,12 @@ func (p projPlusIntervalConstTimestampOp) Next() coldata.Batch { col := col projCol := projVec.Timestamp() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) t_res := duration.Add(arg, p.constArg) @@ -4632,7 +4588,7 @@ func (p projPlusIntervalConstTimestampOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -4698,14 +4654,12 @@ func (p projPlusIntervalConstIntervalOp) Next() coldata.Batch { col := col projCol := projVec.Interval() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) projCol[i] = p.constArg.Add(arg) @@ -4715,7 +4669,7 @@ func (p projPlusIntervalConstIntervalOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -4768,14 +4722,12 @@ func (p projPlusIntervalConstDatumOp) Next() coldata.Batch { col := col projCol := projVec.Datum() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -4798,7 +4750,7 @@ func (p projPlusIntervalConstDatumOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -4890,14 +4842,12 @@ func (p projPlusDatumConstIntervalOp) Next() coldata.Batch { col := col projCol := projVec.Datum() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -4920,7 +4870,7 @@ func (p projPlusDatumConstIntervalOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -5010,14 +4960,12 @@ func (p projPlusDatumConstInt16Op) Next() coldata.Batch { col := col projCol := projVec.Datum() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -5040,7 +4988,7 @@ func (p projPlusDatumConstInt16Op) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -5130,14 +5078,12 @@ func (p projPlusDatumConstInt32Op) Next() coldata.Batch { col := col projCol := projVec.Datum() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -5160,7 +5106,7 @@ func (p projPlusDatumConstInt32Op) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -5250,14 +5196,12 @@ func (p projPlusDatumConstInt64Op) Next() coldata.Batch { col := col projCol := projVec.Datum() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -5280,7 +5224,7 @@ func (p projPlusDatumConstInt64Op) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -5368,14 +5312,12 @@ func (p projMinusDecimalConstInt16Op) Next() coldata.Batch { col := col projCol := projVec.Decimal() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -5394,7 +5336,7 @@ func (p projMinusDecimalConstInt16Op) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -5472,14 +5414,12 @@ func (p projMinusDecimalConstInt32Op) Next() coldata.Batch { col := col projCol := projVec.Decimal() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -5498,7 +5438,7 @@ func (p projMinusDecimalConstInt32Op) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -5576,14 +5516,12 @@ func (p projMinusDecimalConstInt64Op) Next() coldata.Batch { col := col projCol := projVec.Decimal() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -5602,7 +5540,7 @@ func (p projMinusDecimalConstInt64Op) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -5680,14 +5618,12 @@ func (p projMinusDecimalConstDecimalOp) Next() coldata.Batch { col := col projCol := projVec.Decimal() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -5705,7 +5641,7 @@ func (p projMinusDecimalConstDecimalOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -5780,14 +5716,12 @@ func (p projMinusInt16ConstInt16Op) Next() coldata.Batch { col := col projCol := projVec.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -5805,7 +5739,7 @@ func (p projMinusInt16ConstInt16Op) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -5880,14 +5814,12 @@ func (p projMinusInt16ConstInt32Op) Next() coldata.Batch { col := col projCol := projVec.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -5905,7 +5837,7 @@ func (p projMinusInt16ConstInt32Op) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -5980,14 +5912,12 @@ func (p projMinusInt16ConstInt64Op) Next() coldata.Batch { col := col projCol := projVec.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -6005,7 +5935,7 @@ func (p projMinusInt16ConstInt64Op) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -6080,14 +6010,12 @@ func (p projMinusInt16ConstDecimalOp) Next() coldata.Batch { col := col projCol := projVec.Decimal() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -6107,7 +6035,7 @@ func (p projMinusInt16ConstDecimalOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -6190,14 +6118,12 @@ func (p projMinusInt16ConstDatumOp) Next() coldata.Batch { col := col projCol := projVec.Datum() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -6220,7 +6146,7 @@ func (p projMinusInt16ConstDatumOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -6310,14 +6236,12 @@ func (p projMinusInt32ConstInt16Op) Next() coldata.Batch { col := col projCol := projVec.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -6335,7 +6259,7 @@ func (p projMinusInt32ConstInt16Op) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -6410,14 +6334,12 @@ func (p projMinusInt32ConstInt32Op) Next() coldata.Batch { col := col projCol := projVec.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -6435,7 +6357,7 @@ func (p projMinusInt32ConstInt32Op) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -6510,14 +6432,12 @@ func (p projMinusInt32ConstInt64Op) Next() coldata.Batch { col := col projCol := projVec.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -6535,7 +6455,7 @@ func (p projMinusInt32ConstInt64Op) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -6610,14 +6530,12 @@ func (p projMinusInt32ConstDecimalOp) Next() coldata.Batch { col := col projCol := projVec.Decimal() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -6637,7 +6555,7 @@ func (p projMinusInt32ConstDecimalOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -6720,14 +6638,12 @@ func (p projMinusInt32ConstDatumOp) Next() coldata.Batch { col := col projCol := projVec.Datum() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -6750,7 +6666,7 @@ func (p projMinusInt32ConstDatumOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -6840,14 +6756,12 @@ func (p projMinusInt64ConstInt16Op) Next() coldata.Batch { col := col projCol := projVec.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -6865,7 +6779,7 @@ func (p projMinusInt64ConstInt16Op) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -6940,14 +6854,12 @@ func (p projMinusInt64ConstInt32Op) Next() coldata.Batch { col := col projCol := projVec.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -6965,7 +6877,7 @@ func (p projMinusInt64ConstInt32Op) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -7040,14 +6952,12 @@ func (p projMinusInt64ConstInt64Op) Next() coldata.Batch { col := col projCol := projVec.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -7065,7 +6975,7 @@ func (p projMinusInt64ConstInt64Op) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -7140,14 +7050,12 @@ func (p projMinusInt64ConstDecimalOp) Next() coldata.Batch { col := col projCol := projVec.Decimal() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -7167,7 +7075,7 @@ func (p projMinusInt64ConstDecimalOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -7250,14 +7158,12 @@ func (p projMinusInt64ConstDatumOp) Next() coldata.Batch { col := col projCol := projVec.Datum() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -7280,7 +7186,7 @@ func (p projMinusInt64ConstDatumOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -7370,14 +7276,12 @@ func (p projMinusFloat64ConstFloat64Op) Next() coldata.Batch { col := col projCol := projVec.Float64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -7392,7 +7296,7 @@ func (p projMinusFloat64ConstFloat64Op) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -7458,14 +7362,12 @@ func (p projMinusTimestampConstTimestampOp) Next() coldata.Batch { col := col projCol := projVec.Interval() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -7478,7 +7380,7 @@ func (p projMinusTimestampConstTimestampOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -7538,14 +7440,12 @@ func (p projMinusTimestampConstIntervalOp) Next() coldata.Batch { col := col projCol := projVec.Timestamp() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) t_res := duration.Add(p.constArg, arg.Mul(-1)) @@ -7560,7 +7460,7 @@ func (p projMinusTimestampConstIntervalOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -7626,14 +7526,12 @@ func (p projMinusIntervalConstIntervalOp) Next() coldata.Batch { col := col projCol := projVec.Interval() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) projCol[i] = p.constArg.Sub(arg) @@ -7643,7 +7541,7 @@ func (p projMinusIntervalConstIntervalOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -7696,14 +7594,12 @@ func (p projMinusIntervalConstDatumOp) Next() coldata.Batch { col := col projCol := projVec.Datum() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -7726,7 +7622,7 @@ func (p projMinusIntervalConstDatumOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -7816,14 +7712,12 @@ func (p projMinusJSONConstBytesOp) Next() coldata.Batch { col := col projCol := projVec.JSON() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -7842,7 +7736,7 @@ func (p projMinusJSONConstBytesOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -7918,14 +7812,12 @@ func (p projMinusJSONConstInt16Op) Next() coldata.Batch { col := col projCol := projVec.JSON() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -7940,7 +7832,7 @@ func (p projMinusJSONConstInt16Op) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -8004,14 +7896,12 @@ func (p projMinusJSONConstInt32Op) Next() coldata.Batch { col := col projCol := projVec.JSON() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -8026,7 +7916,7 @@ func (p projMinusJSONConstInt32Op) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -8090,14 +7980,12 @@ func (p projMinusJSONConstInt64Op) Next() coldata.Batch { col := col projCol := projVec.JSON() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -8112,7 +8000,7 @@ func (p projMinusJSONConstInt64Op) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -8178,16 +8066,23 @@ func (p projMinusDatumConstDatumOp) Next() coldata.Batch { col := col projCol := projVec.Datum() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() && !p.calledOnNullInput - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) + if colNulls.NullAt(i) { + // If we entered this branch for a null value, calledOnNullInput must be + // true. This means the projection should be calculated on null arguments. + // When a value is null, the underlying data in the slice is invalid and + // can be anything, so we need to overwrite it here. calledOnNullInput is + // currently only true for ConcatDatumDatum, so only the datum case needs + // to be handled. + arg = tree.DNull + } _res, err := eval.BinaryOp(_overloadHelper.EvalCtx, _overloadHelper.BinOp, p.constArg.(tree.Datum), arg.(tree.Datum)) if err != nil { @@ -8204,9 +8099,18 @@ func (p projMinusDatumConstDatumOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) + if colNulls.NullAt(i) { + // If we entered this branch for a null value, calledOnNullInput must be + // true. This means the projection should be calculated on null arguments. + // When a value is null, the underlying data in the slice is invalid and + // can be anything, so we need to overwrite it here. calledOnNullInput is + // currently only true for ConcatDatumDatum, so only the datum case needs + // to be handled. + arg = tree.DNull + } _res, err := eval.BinaryOp(_overloadHelper.EvalCtx, _overloadHelper.BinOp, p.constArg.(tree.Datum), arg.(tree.Datum)) if err != nil { @@ -8220,7 +8124,9 @@ func (p projMinusDatumConstDatumOp) Next() coldata.Batch { } } } - projVec.SetNulls(_outNulls.Or(*colNulls)) + if !p.calledOnNullInput { + projVec.SetNulls(_outNulls.Or(*colNulls)) + } } else { if sel := batch.Selection(); sel != nil { sel = sel[:n] @@ -8282,14 +8188,12 @@ func (p projMinusDatumConstIntervalOp) Next() coldata.Batch { col := col projCol := projVec.Datum() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -8312,7 +8216,7 @@ func (p projMinusDatumConstIntervalOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -8402,14 +8306,12 @@ func (p projMinusDatumConstBytesOp) Next() coldata.Batch { col := col projCol := projVec.Datum() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -8432,7 +8334,7 @@ func (p projMinusDatumConstBytesOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -8522,14 +8424,12 @@ func (p projMinusDatumConstInt16Op) Next() coldata.Batch { col := col projCol := projVec.Datum() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -8552,7 +8452,7 @@ func (p projMinusDatumConstInt16Op) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -8642,14 +8542,12 @@ func (p projMinusDatumConstInt32Op) Next() coldata.Batch { col := col projCol := projVec.Datum() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -8672,7 +8570,7 @@ func (p projMinusDatumConstInt32Op) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -8762,14 +8660,12 @@ func (p projMinusDatumConstInt64Op) Next() coldata.Batch { col := col projCol := projVec.Datum() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -8792,7 +8688,7 @@ func (p projMinusDatumConstInt64Op) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -8880,14 +8776,12 @@ func (p projMultDecimalConstInt16Op) Next() coldata.Batch { col := col projCol := projVec.Decimal() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -8906,7 +8800,7 @@ func (p projMultDecimalConstInt16Op) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -8984,14 +8878,12 @@ func (p projMultDecimalConstInt32Op) Next() coldata.Batch { col := col projCol := projVec.Decimal() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -9010,7 +8902,7 @@ func (p projMultDecimalConstInt32Op) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -9088,14 +8980,12 @@ func (p projMultDecimalConstInt64Op) Next() coldata.Batch { col := col projCol := projVec.Decimal() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -9114,7 +9004,7 @@ func (p projMultDecimalConstInt64Op) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -9192,14 +9082,12 @@ func (p projMultDecimalConstDecimalOp) Next() coldata.Batch { col := col projCol := projVec.Decimal() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -9217,7 +9105,7 @@ func (p projMultDecimalConstDecimalOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -9292,14 +9180,12 @@ func (p projMultDecimalConstIntervalOp) Next() coldata.Batch { col := col projCol := projVec.Interval() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -9314,7 +9200,7 @@ func (p projMultDecimalConstIntervalOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -9380,14 +9266,12 @@ func (p projMultInt16ConstInt16Op) Next() coldata.Batch { col := col projCol := projVec.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -9413,7 +9297,7 @@ func (p projMultInt16ConstInt16Op) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -9512,14 +9396,12 @@ func (p projMultInt16ConstInt32Op) Next() coldata.Batch { col := col projCol := projVec.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -9545,7 +9427,7 @@ func (p projMultInt16ConstInt32Op) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -9644,14 +9526,12 @@ func (p projMultInt16ConstInt64Op) Next() coldata.Batch { col := col projCol := projVec.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -9677,7 +9557,7 @@ func (p projMultInt16ConstInt64Op) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -9776,14 +9656,12 @@ func (p projMultInt16ConstDecimalOp) Next() coldata.Batch { col := col projCol := projVec.Decimal() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -9803,7 +9681,7 @@ func (p projMultInt16ConstDecimalOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -9884,14 +9762,12 @@ func (p projMultInt16ConstIntervalOp) Next() coldata.Batch { col := col projCol := projVec.Interval() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) projCol[i] = arg.Mul(int64(p.constArg)) @@ -9901,7 +9777,7 @@ func (p projMultInt16ConstIntervalOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -9952,14 +9828,12 @@ func (p projMultInt32ConstInt16Op) Next() coldata.Batch { col := col projCol := projVec.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -9985,7 +9859,7 @@ func (p projMultInt32ConstInt16Op) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -10084,14 +9958,12 @@ func (p projMultInt32ConstInt32Op) Next() coldata.Batch { col := col projCol := projVec.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -10117,7 +9989,7 @@ func (p projMultInt32ConstInt32Op) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -10216,14 +10088,12 @@ func (p projMultInt32ConstInt64Op) Next() coldata.Batch { col := col projCol := projVec.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -10249,7 +10119,7 @@ func (p projMultInt32ConstInt64Op) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -10348,14 +10218,12 @@ func (p projMultInt32ConstDecimalOp) Next() coldata.Batch { col := col projCol := projVec.Decimal() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -10375,7 +10243,7 @@ func (p projMultInt32ConstDecimalOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -10456,14 +10324,12 @@ func (p projMultInt32ConstIntervalOp) Next() coldata.Batch { col := col projCol := projVec.Interval() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) projCol[i] = arg.Mul(int64(p.constArg)) @@ -10473,7 +10339,7 @@ func (p projMultInt32ConstIntervalOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -10524,14 +10390,12 @@ func (p projMultInt64ConstInt16Op) Next() coldata.Batch { col := col projCol := projVec.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -10557,7 +10421,7 @@ func (p projMultInt64ConstInt16Op) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -10656,14 +10520,12 @@ func (p projMultInt64ConstInt32Op) Next() coldata.Batch { col := col projCol := projVec.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -10689,7 +10551,7 @@ func (p projMultInt64ConstInt32Op) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -10788,14 +10650,12 @@ func (p projMultInt64ConstInt64Op) Next() coldata.Batch { col := col projCol := projVec.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -10821,7 +10681,7 @@ func (p projMultInt64ConstInt64Op) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -10920,14 +10780,12 @@ func (p projMultInt64ConstDecimalOp) Next() coldata.Batch { col := col projCol := projVec.Decimal() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -10947,7 +10805,7 @@ func (p projMultInt64ConstDecimalOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -11028,14 +10886,12 @@ func (p projMultInt64ConstIntervalOp) Next() coldata.Batch { col := col projCol := projVec.Interval() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) projCol[i] = arg.Mul(int64(p.constArg)) @@ -11045,7 +10901,7 @@ func (p projMultInt64ConstIntervalOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -11096,14 +10952,12 @@ func (p projMultFloat64ConstFloat64Op) Next() coldata.Batch { col := col projCol := projVec.Float64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -11118,7 +10972,7 @@ func (p projMultFloat64ConstFloat64Op) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -11184,14 +11038,12 @@ func (p projMultFloat64ConstIntervalOp) Next() coldata.Batch { col := col projCol := projVec.Interval() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) projCol[i] = arg.MulFloat(float64(p.constArg)) @@ -11201,7 +11053,7 @@ func (p projMultFloat64ConstIntervalOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -11252,14 +11104,12 @@ func (p projMultIntervalConstInt16Op) Next() coldata.Batch { col := col projCol := projVec.Interval() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) projCol[i] = p.constArg.Mul(int64(arg)) @@ -11269,7 +11119,7 @@ func (p projMultIntervalConstInt16Op) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -11320,14 +11170,12 @@ func (p projMultIntervalConstInt32Op) Next() coldata.Batch { col := col projCol := projVec.Interval() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) projCol[i] = p.constArg.Mul(int64(arg)) @@ -11337,7 +11185,7 @@ func (p projMultIntervalConstInt32Op) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -11388,14 +11236,12 @@ func (p projMultIntervalConstInt64Op) Next() coldata.Batch { col := col projCol := projVec.Interval() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) projCol[i] = p.constArg.Mul(int64(arg)) @@ -11405,7 +11251,7 @@ func (p projMultIntervalConstInt64Op) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -11456,14 +11302,12 @@ func (p projMultIntervalConstFloat64Op) Next() coldata.Batch { col := col projCol := projVec.Interval() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) projCol[i] = p.constArg.MulFloat(float64(arg)) @@ -11473,7 +11317,7 @@ func (p projMultIntervalConstFloat64Op) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -11524,14 +11368,12 @@ func (p projMultIntervalConstDecimalOp) Next() coldata.Batch { col := col projCol := projVec.Interval() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -11546,7 +11388,7 @@ func (p projMultIntervalConstDecimalOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -11612,14 +11454,12 @@ func (p projDivDecimalConstInt16Op) Next() coldata.Batch { col := col projCol := projVec.Decimal() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -11642,7 +11482,7 @@ func (p projDivDecimalConstInt16Op) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -11732,14 +11572,12 @@ func (p projDivDecimalConstInt32Op) Next() coldata.Batch { col := col projCol := projVec.Decimal() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -11762,7 +11600,7 @@ func (p projDivDecimalConstInt32Op) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -11852,14 +11690,12 @@ func (p projDivDecimalConstInt64Op) Next() coldata.Batch { col := col projCol := projVec.Decimal() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -11882,7 +11718,7 @@ func (p projDivDecimalConstInt64Op) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -11972,14 +11808,12 @@ func (p projDivDecimalConstDecimalOp) Next() coldata.Batch { col := col projCol := projVec.Decimal() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -12001,7 +11835,7 @@ func (p projDivDecimalConstDecimalOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -12088,14 +11922,12 @@ func (p projDivInt16ConstInt16Op) Next() coldata.Batch { col := col projCol := projVec.Decimal() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -12117,7 +11949,7 @@ func (p projDivInt16ConstInt16Op) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -12204,14 +12036,12 @@ func (p projDivInt16ConstInt32Op) Next() coldata.Batch { col := col projCol := projVec.Decimal() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -12233,7 +12063,7 @@ func (p projDivInt16ConstInt32Op) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -12320,14 +12150,12 @@ func (p projDivInt16ConstInt64Op) Next() coldata.Batch { col := col projCol := projVec.Decimal() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -12349,7 +12177,7 @@ func (p projDivInt16ConstInt64Op) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -12436,14 +12264,12 @@ func (p projDivInt16ConstDecimalOp) Next() coldata.Batch { col := col projCol := projVec.Decimal() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -12467,7 +12293,7 @@ func (p projDivInt16ConstDecimalOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -12560,14 +12386,12 @@ func (p projDivInt32ConstInt16Op) Next() coldata.Batch { col := col projCol := projVec.Decimal() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -12589,7 +12413,7 @@ func (p projDivInt32ConstInt16Op) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -12676,14 +12500,12 @@ func (p projDivInt32ConstInt32Op) Next() coldata.Batch { col := col projCol := projVec.Decimal() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -12705,7 +12527,7 @@ func (p projDivInt32ConstInt32Op) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -12792,14 +12614,12 @@ func (p projDivInt32ConstInt64Op) Next() coldata.Batch { col := col projCol := projVec.Decimal() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -12821,7 +12641,7 @@ func (p projDivInt32ConstInt64Op) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -12908,14 +12728,12 @@ func (p projDivInt32ConstDecimalOp) Next() coldata.Batch { col := col projCol := projVec.Decimal() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -12939,7 +12757,7 @@ func (p projDivInt32ConstDecimalOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -13032,14 +12850,12 @@ func (p projDivInt64ConstInt16Op) Next() coldata.Batch { col := col projCol := projVec.Decimal() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -13061,7 +12877,7 @@ func (p projDivInt64ConstInt16Op) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -13148,14 +12964,12 @@ func (p projDivInt64ConstInt32Op) Next() coldata.Batch { col := col projCol := projVec.Decimal() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -13177,7 +12991,7 @@ func (p projDivInt64ConstInt32Op) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -13264,14 +13078,12 @@ func (p projDivInt64ConstInt64Op) Next() coldata.Batch { col := col projCol := projVec.Decimal() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -13293,7 +13105,7 @@ func (p projDivInt64ConstInt64Op) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -13380,14 +13192,12 @@ func (p projDivInt64ConstDecimalOp) Next() coldata.Batch { col := col projCol := projVec.Decimal() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -13411,7 +13221,7 @@ func (p projDivInt64ConstDecimalOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -13504,14 +13314,12 @@ func (p projDivFloat64ConstFloat64Op) Next() coldata.Batch { col := col projCol := projVec.Float64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -13530,7 +13338,7 @@ func (p projDivFloat64ConstFloat64Op) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -13608,14 +13416,12 @@ func (p projDivIntervalConstInt16Op) Next() coldata.Batch { col := col projCol := projVec.Interval() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -13629,7 +13435,7 @@ func (p projDivIntervalConstInt16Op) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -13692,14 +13498,12 @@ func (p projDivIntervalConstInt32Op) Next() coldata.Batch { col := col projCol := projVec.Interval() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -13713,7 +13517,7 @@ func (p projDivIntervalConstInt32Op) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -13776,14 +13580,12 @@ func (p projDivIntervalConstInt64Op) Next() coldata.Batch { col := col projCol := projVec.Interval() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -13797,7 +13599,7 @@ func (p projDivIntervalConstInt64Op) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -13860,14 +13662,12 @@ func (p projDivIntervalConstFloat64Op) Next() coldata.Batch { col := col projCol := projVec.Interval() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -13881,7 +13681,7 @@ func (p projDivIntervalConstFloat64Op) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -13944,14 +13744,12 @@ func (p projFloorDivDecimalConstInt16Op) Next() coldata.Batch { col := col projCol := projVec.Decimal() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -13974,7 +13772,7 @@ func (p projFloorDivDecimalConstInt16Op) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -14064,14 +13862,12 @@ func (p projFloorDivDecimalConstInt32Op) Next() coldata.Batch { col := col projCol := projVec.Decimal() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -14094,7 +13890,7 @@ func (p projFloorDivDecimalConstInt32Op) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -14184,14 +13980,12 @@ func (p projFloorDivDecimalConstInt64Op) Next() coldata.Batch { col := col projCol := projVec.Decimal() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -14214,7 +14008,7 @@ func (p projFloorDivDecimalConstInt64Op) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -14304,14 +14098,12 @@ func (p projFloorDivDecimalConstDecimalOp) Next() coldata.Batch { col := col projCol := projVec.Decimal() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -14333,7 +14125,7 @@ func (p projFloorDivDecimalConstDecimalOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -14420,14 +14212,12 @@ func (p projFloorDivInt16ConstInt16Op) Next() coldata.Batch { col := col projCol := projVec.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -14444,7 +14234,7 @@ func (p projFloorDivInt16ConstInt16Op) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -14516,14 +14306,12 @@ func (p projFloorDivInt16ConstInt32Op) Next() coldata.Batch { col := col projCol := projVec.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -14540,7 +14328,7 @@ func (p projFloorDivInt16ConstInt32Op) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -14612,14 +14400,12 @@ func (p projFloorDivInt16ConstInt64Op) Next() coldata.Batch { col := col projCol := projVec.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -14636,7 +14422,7 @@ func (p projFloorDivInt16ConstInt64Op) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -14708,14 +14494,12 @@ func (p projFloorDivInt16ConstDecimalOp) Next() coldata.Batch { col := col projCol := projVec.Decimal() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -14739,7 +14523,7 @@ func (p projFloorDivInt16ConstDecimalOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -14832,14 +14616,12 @@ func (p projFloorDivInt32ConstInt16Op) Next() coldata.Batch { col := col projCol := projVec.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -14856,7 +14638,7 @@ func (p projFloorDivInt32ConstInt16Op) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -14928,14 +14710,12 @@ func (p projFloorDivInt32ConstInt32Op) Next() coldata.Batch { col := col projCol := projVec.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -14952,7 +14732,7 @@ func (p projFloorDivInt32ConstInt32Op) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -15024,14 +14804,12 @@ func (p projFloorDivInt32ConstInt64Op) Next() coldata.Batch { col := col projCol := projVec.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -15048,7 +14826,7 @@ func (p projFloorDivInt32ConstInt64Op) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -15120,14 +14898,12 @@ func (p projFloorDivInt32ConstDecimalOp) Next() coldata.Batch { col := col projCol := projVec.Decimal() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -15151,7 +14927,7 @@ func (p projFloorDivInt32ConstDecimalOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -15244,14 +15020,12 @@ func (p projFloorDivInt64ConstInt16Op) Next() coldata.Batch { col := col projCol := projVec.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -15268,7 +15042,7 @@ func (p projFloorDivInt64ConstInt16Op) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -15340,14 +15114,12 @@ func (p projFloorDivInt64ConstInt32Op) Next() coldata.Batch { col := col projCol := projVec.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -15364,7 +15136,7 @@ func (p projFloorDivInt64ConstInt32Op) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -15436,14 +15208,12 @@ func (p projFloorDivInt64ConstInt64Op) Next() coldata.Batch { col := col projCol := projVec.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -15460,7 +15230,7 @@ func (p projFloorDivInt64ConstInt64Op) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -15532,14 +15302,12 @@ func (p projFloorDivInt64ConstDecimalOp) Next() coldata.Batch { col := col projCol := projVec.Decimal() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -15563,7 +15331,7 @@ func (p projFloorDivInt64ConstDecimalOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -15656,14 +15424,12 @@ func (p projFloorDivFloat64ConstFloat64Op) Next() coldata.Batch { col := col projCol := projVec.Float64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -15682,7 +15448,7 @@ func (p projFloorDivFloat64ConstFloat64Op) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -15760,14 +15526,12 @@ func (p projModDecimalConstInt16Op) Next() coldata.Batch { col := col projCol := projVec.Decimal() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -15790,7 +15554,7 @@ func (p projModDecimalConstInt16Op) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -15880,14 +15644,12 @@ func (p projModDecimalConstInt32Op) Next() coldata.Batch { col := col projCol := projVec.Decimal() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -15910,7 +15672,7 @@ func (p projModDecimalConstInt32Op) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -16000,14 +15762,12 @@ func (p projModDecimalConstInt64Op) Next() coldata.Batch { col := col projCol := projVec.Decimal() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -16030,7 +15790,7 @@ func (p projModDecimalConstInt64Op) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -16120,14 +15880,12 @@ func (p projModDecimalConstDecimalOp) Next() coldata.Batch { col := col projCol := projVec.Decimal() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -16149,7 +15907,7 @@ func (p projModDecimalConstDecimalOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -16236,14 +15994,12 @@ func (p projModInt16ConstInt16Op) Next() coldata.Batch { col := col projCol := projVec.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -16260,7 +16016,7 @@ func (p projModInt16ConstInt16Op) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -16332,14 +16088,12 @@ func (p projModInt16ConstInt32Op) Next() coldata.Batch { col := col projCol := projVec.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -16356,7 +16110,7 @@ func (p projModInt16ConstInt32Op) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -16428,14 +16182,12 @@ func (p projModInt16ConstInt64Op) Next() coldata.Batch { col := col projCol := projVec.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -16452,7 +16204,7 @@ func (p projModInt16ConstInt64Op) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -16524,14 +16276,12 @@ func (p projModInt16ConstDecimalOp) Next() coldata.Batch { col := col projCol := projVec.Decimal() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -16555,7 +16305,7 @@ func (p projModInt16ConstDecimalOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -16648,14 +16398,12 @@ func (p projModInt32ConstInt16Op) Next() coldata.Batch { col := col projCol := projVec.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -16672,7 +16420,7 @@ func (p projModInt32ConstInt16Op) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -16744,14 +16492,12 @@ func (p projModInt32ConstInt32Op) Next() coldata.Batch { col := col projCol := projVec.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -16768,7 +16514,7 @@ func (p projModInt32ConstInt32Op) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -16840,14 +16586,12 @@ func (p projModInt32ConstInt64Op) Next() coldata.Batch { col := col projCol := projVec.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -16864,7 +16608,7 @@ func (p projModInt32ConstInt64Op) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -16936,14 +16680,12 @@ func (p projModInt32ConstDecimalOp) Next() coldata.Batch { col := col projCol := projVec.Decimal() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -16967,7 +16709,7 @@ func (p projModInt32ConstDecimalOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -17060,14 +16802,12 @@ func (p projModInt64ConstInt16Op) Next() coldata.Batch { col := col projCol := projVec.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -17084,7 +16824,7 @@ func (p projModInt64ConstInt16Op) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -17156,14 +16896,12 @@ func (p projModInt64ConstInt32Op) Next() coldata.Batch { col := col projCol := projVec.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -17180,7 +16918,7 @@ func (p projModInt64ConstInt32Op) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -17252,14 +16990,12 @@ func (p projModInt64ConstInt64Op) Next() coldata.Batch { col := col projCol := projVec.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -17276,7 +17012,7 @@ func (p projModInt64ConstInt64Op) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -17348,14 +17084,12 @@ func (p projModInt64ConstDecimalOp) Next() coldata.Batch { col := col projCol := projVec.Decimal() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -17379,7 +17113,7 @@ func (p projModInt64ConstDecimalOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -17472,14 +17206,12 @@ func (p projModFloat64ConstFloat64Op) Next() coldata.Batch { col := col projCol := projVec.Float64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -17498,7 +17230,7 @@ func (p projModFloat64ConstFloat64Op) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -17576,14 +17308,12 @@ func (p projPowDecimalConstInt16Op) Next() coldata.Batch { col := col projCol := projVec.Decimal() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -17602,7 +17332,7 @@ func (p projPowDecimalConstInt16Op) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -17680,14 +17410,12 @@ func (p projPowDecimalConstInt32Op) Next() coldata.Batch { col := col projCol := projVec.Decimal() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -17706,7 +17434,7 @@ func (p projPowDecimalConstInt32Op) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -17784,14 +17512,12 @@ func (p projPowDecimalConstInt64Op) Next() coldata.Batch { col := col projCol := projVec.Decimal() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -17810,7 +17536,7 @@ func (p projPowDecimalConstInt64Op) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -17888,14 +17614,12 @@ func (p projPowDecimalConstDecimalOp) Next() coldata.Batch { col := col projCol := projVec.Decimal() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -17913,7 +17637,7 @@ func (p projPowDecimalConstDecimalOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -17988,14 +17712,12 @@ func (p projPowInt16ConstInt16Op) Next() coldata.Batch { col := col projCol := projVec.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -18019,7 +17741,7 @@ func (p projPowInt16ConstInt16Op) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -18112,14 +17834,12 @@ func (p projPowInt16ConstInt32Op) Next() coldata.Batch { col := col projCol := projVec.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -18143,7 +17863,7 @@ func (p projPowInt16ConstInt32Op) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -18236,14 +17956,12 @@ func (p projPowInt16ConstInt64Op) Next() coldata.Batch { col := col projCol := projVec.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -18267,7 +17985,7 @@ func (p projPowInt16ConstInt64Op) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -18360,14 +18078,12 @@ func (p projPowInt16ConstDecimalOp) Next() coldata.Batch { col := col projCol := projVec.Decimal() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -18387,7 +18103,7 @@ func (p projPowInt16ConstDecimalOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -18468,14 +18184,12 @@ func (p projPowInt32ConstInt16Op) Next() coldata.Batch { col := col projCol := projVec.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -18499,7 +18213,7 @@ func (p projPowInt32ConstInt16Op) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -18592,14 +18306,12 @@ func (p projPowInt32ConstInt32Op) Next() coldata.Batch { col := col projCol := projVec.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -18623,7 +18335,7 @@ func (p projPowInt32ConstInt32Op) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -18716,14 +18428,12 @@ func (p projPowInt32ConstInt64Op) Next() coldata.Batch { col := col projCol := projVec.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -18747,7 +18457,7 @@ func (p projPowInt32ConstInt64Op) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -18840,14 +18550,12 @@ func (p projPowInt32ConstDecimalOp) Next() coldata.Batch { col := col projCol := projVec.Decimal() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -18867,7 +18575,7 @@ func (p projPowInt32ConstDecimalOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -18948,14 +18656,12 @@ func (p projPowInt64ConstInt16Op) Next() coldata.Batch { col := col projCol := projVec.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -18979,7 +18685,7 @@ func (p projPowInt64ConstInt16Op) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -19072,14 +18778,12 @@ func (p projPowInt64ConstInt32Op) Next() coldata.Batch { col := col projCol := projVec.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -19103,7 +18807,7 @@ func (p projPowInt64ConstInt32Op) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -19196,14 +18900,12 @@ func (p projPowInt64ConstInt64Op) Next() coldata.Batch { col := col projCol := projVec.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -19227,7 +18929,7 @@ func (p projPowInt64ConstInt64Op) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -19320,14 +19022,12 @@ func (p projPowInt64ConstDecimalOp) Next() coldata.Batch { col := col projCol := projVec.Decimal() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -19347,7 +19047,7 @@ func (p projPowInt64ConstDecimalOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -19428,14 +19128,12 @@ func (p projPowFloat64ConstFloat64Op) Next() coldata.Batch { col := col projCol := projVec.Float64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -19450,7 +19148,7 @@ func (p projPowFloat64ConstFloat64Op) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -19516,14 +19214,12 @@ func (p projConcatBytesConstBytesOp) Next() coldata.Batch { col := col projCol := projVec.Bytes() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -19540,7 +19236,7 @@ func (p projConcatBytesConstBytesOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -19610,14 +19306,12 @@ func (p projConcatJSONConstJSONOp) Next() coldata.Batch { col := col projCol := projVec.JSON() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -19633,7 +19327,7 @@ func (p projConcatJSONConstJSONOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -19702,16 +19396,23 @@ func (p projConcatDatumConstDatumOp) Next() coldata.Batch { col := col projCol := projVec.Datum() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() && !p.calledOnNullInput - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) + if colNulls.NullAt(i) { + // If we entered this branch for a null value, calledOnNullInput must be + // true. This means the projection should be calculated on null arguments. + // When a value is null, the underlying data in the slice is invalid and + // can be anything, so we need to overwrite it here. calledOnNullInput is + // currently only true for ConcatDatumDatum, so only the datum case needs + // to be handled. + arg = tree.DNull + } _res, err := eval.BinaryOp(_overloadHelper.EvalCtx, _overloadHelper.BinOp, p.constArg.(tree.Datum), arg.(tree.Datum)) if err != nil { @@ -19728,9 +19429,18 @@ func (p projConcatDatumConstDatumOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) + if colNulls.NullAt(i) { + // If we entered this branch for a null value, calledOnNullInput must be + // true. This means the projection should be calculated on null arguments. + // When a value is null, the underlying data in the slice is invalid and + // can be anything, so we need to overwrite it here. calledOnNullInput is + // currently only true for ConcatDatumDatum, so only the datum case needs + // to be handled. + arg = tree.DNull + } _res, err := eval.BinaryOp(_overloadHelper.EvalCtx, _overloadHelper.BinOp, p.constArg.(tree.Datum), arg.(tree.Datum)) if err != nil { @@ -19744,7 +19454,9 @@ func (p projConcatDatumConstDatumOp) Next() coldata.Batch { } } } - projVec.SetNulls(_outNulls.Or(*colNulls)) + if !p.calledOnNullInput { + projVec.SetNulls(_outNulls.Or(*colNulls)) + } } else { if sel := batch.Selection(); sel != nil { sel = sel[:n] @@ -19804,14 +19516,12 @@ func (p projLShiftInt16ConstInt16Op) Next() coldata.Batch { col := col projCol := projVec.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -19829,7 +19539,7 @@ func (p projLShiftInt16ConstInt16Op) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -19904,14 +19614,12 @@ func (p projLShiftInt16ConstInt32Op) Next() coldata.Batch { col := col projCol := projVec.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -19929,7 +19637,7 @@ func (p projLShiftInt16ConstInt32Op) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -20004,14 +19712,12 @@ func (p projLShiftInt16ConstInt64Op) Next() coldata.Batch { col := col projCol := projVec.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -20029,7 +19735,7 @@ func (p projLShiftInt16ConstInt64Op) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -20104,14 +19810,12 @@ func (p projLShiftInt32ConstInt16Op) Next() coldata.Batch { col := col projCol := projVec.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -20129,7 +19833,7 @@ func (p projLShiftInt32ConstInt16Op) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -20204,14 +19908,12 @@ func (p projLShiftInt32ConstInt32Op) Next() coldata.Batch { col := col projCol := projVec.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -20229,7 +19931,7 @@ func (p projLShiftInt32ConstInt32Op) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -20304,14 +20006,12 @@ func (p projLShiftInt32ConstInt64Op) Next() coldata.Batch { col := col projCol := projVec.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -20329,7 +20029,7 @@ func (p projLShiftInt32ConstInt64Op) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -20404,14 +20104,12 @@ func (p projLShiftInt64ConstInt16Op) Next() coldata.Batch { col := col projCol := projVec.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -20429,7 +20127,7 @@ func (p projLShiftInt64ConstInt16Op) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -20504,14 +20202,12 @@ func (p projLShiftInt64ConstInt32Op) Next() coldata.Batch { col := col projCol := projVec.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -20529,7 +20225,7 @@ func (p projLShiftInt64ConstInt32Op) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -20604,14 +20300,12 @@ func (p projLShiftInt64ConstInt64Op) Next() coldata.Batch { col := col projCol := projVec.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -20629,7 +20323,7 @@ func (p projLShiftInt64ConstInt64Op) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -20706,14 +20400,12 @@ func (p projLShiftDatumConstInt16Op) Next() coldata.Batch { col := col projCol := projVec.Datum() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -20736,7 +20428,7 @@ func (p projLShiftDatumConstInt16Op) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -20826,14 +20518,12 @@ func (p projLShiftDatumConstInt32Op) Next() coldata.Batch { col := col projCol := projVec.Datum() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -20856,7 +20546,7 @@ func (p projLShiftDatumConstInt32Op) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -20946,14 +20636,12 @@ func (p projLShiftDatumConstInt64Op) Next() coldata.Batch { col := col projCol := projVec.Datum() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -20976,7 +20664,7 @@ func (p projLShiftDatumConstInt64Op) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -21064,14 +20752,12 @@ func (p projRShiftInt16ConstInt16Op) Next() coldata.Batch { col := col projCol := projVec.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -21089,7 +20775,7 @@ func (p projRShiftInt16ConstInt16Op) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -21164,14 +20850,12 @@ func (p projRShiftInt16ConstInt32Op) Next() coldata.Batch { col := col projCol := projVec.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -21189,7 +20873,7 @@ func (p projRShiftInt16ConstInt32Op) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -21264,14 +20948,12 @@ func (p projRShiftInt16ConstInt64Op) Next() coldata.Batch { col := col projCol := projVec.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -21289,7 +20971,7 @@ func (p projRShiftInt16ConstInt64Op) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -21364,14 +21046,12 @@ func (p projRShiftInt32ConstInt16Op) Next() coldata.Batch { col := col projCol := projVec.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -21389,7 +21069,7 @@ func (p projRShiftInt32ConstInt16Op) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -21464,14 +21144,12 @@ func (p projRShiftInt32ConstInt32Op) Next() coldata.Batch { col := col projCol := projVec.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -21489,7 +21167,7 @@ func (p projRShiftInt32ConstInt32Op) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -21564,14 +21242,12 @@ func (p projRShiftInt32ConstInt64Op) Next() coldata.Batch { col := col projCol := projVec.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -21589,7 +21265,7 @@ func (p projRShiftInt32ConstInt64Op) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -21664,14 +21340,12 @@ func (p projRShiftInt64ConstInt16Op) Next() coldata.Batch { col := col projCol := projVec.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -21689,7 +21363,7 @@ func (p projRShiftInt64ConstInt16Op) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -21764,14 +21438,12 @@ func (p projRShiftInt64ConstInt32Op) Next() coldata.Batch { col := col projCol := projVec.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -21789,7 +21461,7 @@ func (p projRShiftInt64ConstInt32Op) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -21864,14 +21536,12 @@ func (p projRShiftInt64ConstInt64Op) Next() coldata.Batch { col := col projCol := projVec.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -21889,7 +21559,7 @@ func (p projRShiftInt64ConstInt64Op) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -21966,14 +21636,12 @@ func (p projRShiftDatumConstInt16Op) Next() coldata.Batch { col := col projCol := projVec.Datum() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -21996,7 +21664,7 @@ func (p projRShiftDatumConstInt16Op) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -22086,14 +21754,12 @@ func (p projRShiftDatumConstInt32Op) Next() coldata.Batch { col := col projCol := projVec.Datum() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -22116,7 +21782,7 @@ func (p projRShiftDatumConstInt32Op) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -22206,14 +21872,12 @@ func (p projRShiftDatumConstInt64Op) Next() coldata.Batch { col := col projCol := projVec.Datum() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -22236,7 +21900,7 @@ func (p projRShiftDatumConstInt64Op) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -22324,14 +21988,12 @@ func (p projJSONFetchValJSONConstBytesOp) Next() coldata.Batch { col := col projCol := projVec.JSON() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -22353,7 +22015,7 @@ func (p projJSONFetchValJSONConstBytesOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -22438,14 +22100,12 @@ func (p projJSONFetchValJSONConstInt16Op) Next() coldata.Batch { col := col projCol := projVec.JSON() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -22464,7 +22124,7 @@ func (p projJSONFetchValJSONConstInt16Op) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -22540,14 +22200,12 @@ func (p projJSONFetchValJSONConstInt32Op) Next() coldata.Batch { col := col projCol := projVec.JSON() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -22566,7 +22224,7 @@ func (p projJSONFetchValJSONConstInt32Op) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -22642,14 +22300,12 @@ func (p projJSONFetchValJSONConstInt64Op) Next() coldata.Batch { col := col projCol := projVec.JSON() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -22668,7 +22324,7 @@ func (p projJSONFetchValJSONConstInt64Op) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -22744,14 +22400,12 @@ func (p projJSONFetchTextJSONConstBytesOp) Next() coldata.Batch { col := col projCol := projVec.Bytes() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -22782,7 +22436,7 @@ func (p projJSONFetchTextJSONConstBytesOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -22894,14 +22548,12 @@ func (p projJSONFetchTextJSONConstInt16Op) Next() coldata.Batch { col := col projCol := projVec.Bytes() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -22929,7 +22581,7 @@ func (p projJSONFetchTextJSONConstInt16Op) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -23032,14 +22684,12 @@ func (p projJSONFetchTextJSONConstInt32Op) Next() coldata.Batch { col := col projCol := projVec.Bytes() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -23067,7 +22717,7 @@ func (p projJSONFetchTextJSONConstInt32Op) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -23170,14 +22820,12 @@ func (p projJSONFetchTextJSONConstInt64Op) Next() coldata.Batch { col := col projCol := projVec.Bytes() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -23205,7 +22853,7 @@ func (p projJSONFetchTextJSONConstInt64Op) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -23308,14 +22956,12 @@ func (p projJSONFetchValPathJSONConstDatumOp) Next() coldata.Batch { col := col projCol := projVec.JSON() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -23334,7 +22980,7 @@ func (p projJSONFetchValPathJSONConstDatumOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -23410,14 +23056,12 @@ func (p projJSONFetchTextPathJSONConstDatumOp) Next() coldata.Batch { col := col projCol := projVec.Bytes() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -23446,7 +23090,7 @@ func (p projJSONFetchTextPathJSONConstDatumOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) diff --git a/pkg/sql/colexec/colexecprojconst/proj_const_ops_tmpl.go b/pkg/sql/colexec/colexecprojconst/proj_const_ops_tmpl.go index 1cd473ecaa2a..0648ccf68371 100644 --- a/pkg/sql/colexec/colexecprojconst/proj_const_ops_tmpl.go +++ b/pkg/sql/colexec/colexecprojconst/proj_const_ops_tmpl.go @@ -151,23 +151,7 @@ func (p _OP_CONST_NAME) Next() coldata.Batch { // of a projection is Null. // */}} _outNulls := projVec.Nulls() - - // {{/* - // If calledOnNullInput is true, the function’s definition can handle null - // arguments. We would still want to perform the projection, and there is no - // need to call projVec.SetNulls(). The behaviour will just be the same as - // _HAS_NULLS is false. Since currently only ConcatDatumDatum needs this - // calledOnNullInput == true behaviour, logic for calledOnNullInput is only added to - // the if statement for function with Datum, Datum. If we later introduce - // another projection operation that has calledOnNullInput == true, we should - // update this code accordingly. - // */}} - // {{if and (eq .Left.VecMethod "Datum") (eq .Right.VecMethod "Datum")}} - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() && !p.calledOnNullInput - // {{else}} - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - // {{end}} - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { _SET_PROJECTION(true) } else { _SET_PROJECTION(false) @@ -184,6 +168,7 @@ func _SET_PROJECTION(_HAS_NULLS bool) { // {{define "setProjection" -}} // {{$hasNulls := $.HasNulls}} // {{with $.Overload}} + // {{$isDatum := (and (eq .Left.VecMethod "Datum") (eq .Right.VecMethod "Datum"))}} // {{if _HAS_NULLS}} colNulls := vec.Nulls() // {{end}} @@ -207,7 +192,13 @@ func _SET_PROJECTION(_HAS_NULLS bool) { // projVec.Nulls() so there is no need to call projVec.SetNulls(). // */}} // {{if _HAS_NULLS}} - projVec.SetNulls(_outNulls.Or(*colNulls)) + // {{if $isDatum}} + if !p.calledOnNullInput { + // {{end}} + projVec.SetNulls(_outNulls.Or(*colNulls)) + // {{if $isDatum}} + } + // {{end}} // {{end}} // {{end}} // {{end}} @@ -222,8 +213,9 @@ func _SET_SINGLE_TUPLE_PROJECTION(_HAS_NULLS bool, _HAS_SEL bool) { // */}} // {{$hasNulls := $.HasNulls}} // {{$hasSel := $.HasSel}} // {{with $.Overload}} + // {{$isDatum := (and (eq .Left.VecMethod "Datum") (eq .Right.VecMethod "Datum"))}} // {{if _HAS_NULLS}} - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. // {{end}} // {{if _IS_CONST_LEFT}} @@ -236,6 +228,17 @@ func _SET_SINGLE_TUPLE_PROJECTION(_HAS_NULLS bool, _HAS_SEL bool) { // */}} // {{end}} // {{end}} arg := col.Get(i) + // {{if (and _HAS_NULLS $isDatum)}} + if colNulls.NullAt(i) { + // If we entered this branch for a null value, calledOnNullInput must be + // true. This means the projection should be calculated on null arguments. + // When a value is null, the underlying data in the slice is invalid and + // can be anything, so we need to overwrite it here. calledOnNullInput is + // currently only true for ConcatDatumDatum, so only the datum case needs + // to be handled. + arg = tree.DNull + } + // {{end}} // {{if _IS_CONST_LEFT}} _ASSIGN(projCol[i], p.constArg, arg, projCol, _, col) // {{else}} diff --git a/pkg/sql/colexec/colexecprojconst/proj_const_right_ops.eg.go b/pkg/sql/colexec/colexecprojconst/proj_const_right_ops.eg.go index cc4f292aab36..eb81293d5224 100644 --- a/pkg/sql/colexec/colexecprojconst/proj_const_right_ops.eg.go +++ b/pkg/sql/colexec/colexecprojconst/proj_const_right_ops.eg.go @@ -71,14 +71,12 @@ func (p projBitandInt16Int16ConstOp) Next() coldata.Batch { col := col projCol := projVec.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -90,7 +88,7 @@ func (p projBitandInt16Int16ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -147,14 +145,12 @@ func (p projBitandInt16Int32ConstOp) Next() coldata.Batch { col := col projCol := projVec.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -166,7 +162,7 @@ func (p projBitandInt16Int32ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -223,14 +219,12 @@ func (p projBitandInt16Int64ConstOp) Next() coldata.Batch { col := col projCol := projVec.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -242,7 +236,7 @@ func (p projBitandInt16Int64ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -299,14 +293,12 @@ func (p projBitandInt32Int16ConstOp) Next() coldata.Batch { col := col projCol := projVec.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -318,7 +310,7 @@ func (p projBitandInt32Int16ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -375,14 +367,12 @@ func (p projBitandInt32Int32ConstOp) Next() coldata.Batch { col := col projCol := projVec.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -394,7 +384,7 @@ func (p projBitandInt32Int32ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -451,14 +441,12 @@ func (p projBitandInt32Int64ConstOp) Next() coldata.Batch { col := col projCol := projVec.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -470,7 +458,7 @@ func (p projBitandInt32Int64ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -527,14 +515,12 @@ func (p projBitandInt64Int16ConstOp) Next() coldata.Batch { col := col projCol := projVec.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -546,7 +532,7 @@ func (p projBitandInt64Int16ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -603,14 +589,12 @@ func (p projBitandInt64Int32ConstOp) Next() coldata.Batch { col := col projCol := projVec.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -622,7 +606,7 @@ func (p projBitandInt64Int32ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -679,14 +663,12 @@ func (p projBitandInt64Int64ConstOp) Next() coldata.Batch { col := col projCol := projVec.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -698,7 +680,7 @@ func (p projBitandInt64Int64ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -757,16 +739,23 @@ func (p projBitandDatumDatumConstOp) Next() coldata.Batch { col := col projCol := projVec.Datum() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() && !p.calledOnNullInput - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) + if colNulls.NullAt(i) { + // If we entered this branch for a null value, calledOnNullInput must be + // true. This means the projection should be calculated on null arguments. + // When a value is null, the underlying data in the slice is invalid and + // can be anything, so we need to overwrite it here. calledOnNullInput is + // currently only true for ConcatDatumDatum, so only the datum case needs + // to be handled. + arg = tree.DNull + } _res, err := eval.BinaryOp(_overloadHelper.EvalCtx, _overloadHelper.BinOp, arg.(tree.Datum), p.constArg.(tree.Datum)) if err != nil { @@ -783,9 +772,18 @@ func (p projBitandDatumDatumConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) + if colNulls.NullAt(i) { + // If we entered this branch for a null value, calledOnNullInput must be + // true. This means the projection should be calculated on null arguments. + // When a value is null, the underlying data in the slice is invalid and + // can be anything, so we need to overwrite it here. calledOnNullInput is + // currently only true for ConcatDatumDatum, so only the datum case needs + // to be handled. + arg = tree.DNull + } _res, err := eval.BinaryOp(_overloadHelper.EvalCtx, _overloadHelper.BinOp, arg.(tree.Datum), p.constArg.(tree.Datum)) if err != nil { @@ -799,7 +797,9 @@ func (p projBitandDatumDatumConstOp) Next() coldata.Batch { } } } - projVec.SetNulls(_outNulls.Or(*colNulls)) + if !p.calledOnNullInput { + projVec.SetNulls(_outNulls.Or(*colNulls)) + } } else { if sel := batch.Selection(); sel != nil { sel = sel[:n] @@ -859,14 +859,12 @@ func (p projBitorInt16Int16ConstOp) Next() coldata.Batch { col := col projCol := projVec.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -878,7 +876,7 @@ func (p projBitorInt16Int16ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -935,14 +933,12 @@ func (p projBitorInt16Int32ConstOp) Next() coldata.Batch { col := col projCol := projVec.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -954,7 +950,7 @@ func (p projBitorInt16Int32ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -1011,14 +1007,12 @@ func (p projBitorInt16Int64ConstOp) Next() coldata.Batch { col := col projCol := projVec.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -1030,7 +1024,7 @@ func (p projBitorInt16Int64ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -1087,14 +1081,12 @@ func (p projBitorInt32Int16ConstOp) Next() coldata.Batch { col := col projCol := projVec.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -1106,7 +1098,7 @@ func (p projBitorInt32Int16ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -1163,14 +1155,12 @@ func (p projBitorInt32Int32ConstOp) Next() coldata.Batch { col := col projCol := projVec.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -1182,7 +1172,7 @@ func (p projBitorInt32Int32ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -1239,14 +1229,12 @@ func (p projBitorInt32Int64ConstOp) Next() coldata.Batch { col := col projCol := projVec.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -1258,7 +1246,7 @@ func (p projBitorInt32Int64ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -1315,14 +1303,12 @@ func (p projBitorInt64Int16ConstOp) Next() coldata.Batch { col := col projCol := projVec.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -1334,7 +1320,7 @@ func (p projBitorInt64Int16ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -1391,14 +1377,12 @@ func (p projBitorInt64Int32ConstOp) Next() coldata.Batch { col := col projCol := projVec.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -1410,7 +1394,7 @@ func (p projBitorInt64Int32ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -1467,14 +1451,12 @@ func (p projBitorInt64Int64ConstOp) Next() coldata.Batch { col := col projCol := projVec.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -1486,7 +1468,7 @@ func (p projBitorInt64Int64ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -1545,16 +1527,23 @@ func (p projBitorDatumDatumConstOp) Next() coldata.Batch { col := col projCol := projVec.Datum() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() && !p.calledOnNullInput - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) + if colNulls.NullAt(i) { + // If we entered this branch for a null value, calledOnNullInput must be + // true. This means the projection should be calculated on null arguments. + // When a value is null, the underlying data in the slice is invalid and + // can be anything, so we need to overwrite it here. calledOnNullInput is + // currently only true for ConcatDatumDatum, so only the datum case needs + // to be handled. + arg = tree.DNull + } _res, err := eval.BinaryOp(_overloadHelper.EvalCtx, _overloadHelper.BinOp, arg.(tree.Datum), p.constArg.(tree.Datum)) if err != nil { @@ -1571,9 +1560,18 @@ func (p projBitorDatumDatumConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) + if colNulls.NullAt(i) { + // If we entered this branch for a null value, calledOnNullInput must be + // true. This means the projection should be calculated on null arguments. + // When a value is null, the underlying data in the slice is invalid and + // can be anything, so we need to overwrite it here. calledOnNullInput is + // currently only true for ConcatDatumDatum, so only the datum case needs + // to be handled. + arg = tree.DNull + } _res, err := eval.BinaryOp(_overloadHelper.EvalCtx, _overloadHelper.BinOp, arg.(tree.Datum), p.constArg.(tree.Datum)) if err != nil { @@ -1587,7 +1585,9 @@ func (p projBitorDatumDatumConstOp) Next() coldata.Batch { } } } - projVec.SetNulls(_outNulls.Or(*colNulls)) + if !p.calledOnNullInput { + projVec.SetNulls(_outNulls.Or(*colNulls)) + } } else { if sel := batch.Selection(); sel != nil { sel = sel[:n] @@ -1647,14 +1647,12 @@ func (p projBitxorInt16Int16ConstOp) Next() coldata.Batch { col := col projCol := projVec.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -1666,7 +1664,7 @@ func (p projBitxorInt16Int16ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -1723,14 +1721,12 @@ func (p projBitxorInt16Int32ConstOp) Next() coldata.Batch { col := col projCol := projVec.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -1742,7 +1738,7 @@ func (p projBitxorInt16Int32ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -1799,14 +1795,12 @@ func (p projBitxorInt16Int64ConstOp) Next() coldata.Batch { col := col projCol := projVec.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -1818,7 +1812,7 @@ func (p projBitxorInt16Int64ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -1875,14 +1869,12 @@ func (p projBitxorInt32Int16ConstOp) Next() coldata.Batch { col := col projCol := projVec.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -1894,7 +1886,7 @@ func (p projBitxorInt32Int16ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -1951,14 +1943,12 @@ func (p projBitxorInt32Int32ConstOp) Next() coldata.Batch { col := col projCol := projVec.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -1970,7 +1960,7 @@ func (p projBitxorInt32Int32ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -2027,14 +2017,12 @@ func (p projBitxorInt32Int64ConstOp) Next() coldata.Batch { col := col projCol := projVec.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -2046,7 +2034,7 @@ func (p projBitxorInt32Int64ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -2103,14 +2091,12 @@ func (p projBitxorInt64Int16ConstOp) Next() coldata.Batch { col := col projCol := projVec.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -2122,7 +2108,7 @@ func (p projBitxorInt64Int16ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -2179,14 +2165,12 @@ func (p projBitxorInt64Int32ConstOp) Next() coldata.Batch { col := col projCol := projVec.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -2198,7 +2182,7 @@ func (p projBitxorInt64Int32ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -2255,14 +2239,12 @@ func (p projBitxorInt64Int64ConstOp) Next() coldata.Batch { col := col projCol := projVec.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -2274,7 +2256,7 @@ func (p projBitxorInt64Int64ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -2333,16 +2315,23 @@ func (p projBitxorDatumDatumConstOp) Next() coldata.Batch { col := col projCol := projVec.Datum() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() && !p.calledOnNullInput - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) + if colNulls.NullAt(i) { + // If we entered this branch for a null value, calledOnNullInput must be + // true. This means the projection should be calculated on null arguments. + // When a value is null, the underlying data in the slice is invalid and + // can be anything, so we need to overwrite it here. calledOnNullInput is + // currently only true for ConcatDatumDatum, so only the datum case needs + // to be handled. + arg = tree.DNull + } _res, err := eval.BinaryOp(_overloadHelper.EvalCtx, _overloadHelper.BinOp, arg.(tree.Datum), p.constArg.(tree.Datum)) if err != nil { @@ -2359,9 +2348,18 @@ func (p projBitxorDatumDatumConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) + if colNulls.NullAt(i) { + // If we entered this branch for a null value, calledOnNullInput must be + // true. This means the projection should be calculated on null arguments. + // When a value is null, the underlying data in the slice is invalid and + // can be anything, so we need to overwrite it here. calledOnNullInput is + // currently only true for ConcatDatumDatum, so only the datum case needs + // to be handled. + arg = tree.DNull + } _res, err := eval.BinaryOp(_overloadHelper.EvalCtx, _overloadHelper.BinOp, arg.(tree.Datum), p.constArg.(tree.Datum)) if err != nil { @@ -2375,7 +2373,9 @@ func (p projBitxorDatumDatumConstOp) Next() coldata.Batch { } } } - projVec.SetNulls(_outNulls.Or(*colNulls)) + if !p.calledOnNullInput { + projVec.SetNulls(_outNulls.Or(*colNulls)) + } } else { if sel := batch.Selection(); sel != nil { sel = sel[:n] @@ -2435,14 +2435,12 @@ func (p projPlusDecimalInt16ConstOp) Next() coldata.Batch { col := col projCol := projVec.Decimal() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -2461,7 +2459,7 @@ func (p projPlusDecimalInt16ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -2539,14 +2537,12 @@ func (p projPlusDecimalInt32ConstOp) Next() coldata.Batch { col := col projCol := projVec.Decimal() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -2565,7 +2561,7 @@ func (p projPlusDecimalInt32ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -2643,14 +2639,12 @@ func (p projPlusDecimalInt64ConstOp) Next() coldata.Batch { col := col projCol := projVec.Decimal() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -2669,7 +2663,7 @@ func (p projPlusDecimalInt64ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -2747,14 +2741,12 @@ func (p projPlusDecimalDecimalConstOp) Next() coldata.Batch { col := col projCol := projVec.Decimal() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -2772,7 +2764,7 @@ func (p projPlusDecimalDecimalConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -2847,14 +2839,12 @@ func (p projPlusInt16Int16ConstOp) Next() coldata.Batch { col := col projCol := projVec.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -2872,7 +2862,7 @@ func (p projPlusInt16Int16ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -2947,14 +2937,12 @@ func (p projPlusInt16Int32ConstOp) Next() coldata.Batch { col := col projCol := projVec.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -2972,7 +2960,7 @@ func (p projPlusInt16Int32ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -3047,14 +3035,12 @@ func (p projPlusInt16Int64ConstOp) Next() coldata.Batch { col := col projCol := projVec.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -3072,7 +3058,7 @@ func (p projPlusInt16Int64ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -3147,14 +3133,12 @@ func (p projPlusInt16DecimalConstOp) Next() coldata.Batch { col := col projCol := projVec.Decimal() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -3174,7 +3158,7 @@ func (p projPlusInt16DecimalConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -3257,14 +3241,12 @@ func (p projPlusInt16DatumConstOp) Next() coldata.Batch { col := col projCol := projVec.Datum() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -3287,7 +3269,7 @@ func (p projPlusInt16DatumConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -3375,14 +3357,12 @@ func (p projPlusInt32Int16ConstOp) Next() coldata.Batch { col := col projCol := projVec.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -3400,7 +3380,7 @@ func (p projPlusInt32Int16ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -3475,14 +3455,12 @@ func (p projPlusInt32Int32ConstOp) Next() coldata.Batch { col := col projCol := projVec.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -3500,7 +3478,7 @@ func (p projPlusInt32Int32ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -3575,14 +3553,12 @@ func (p projPlusInt32Int64ConstOp) Next() coldata.Batch { col := col projCol := projVec.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -3600,7 +3576,7 @@ func (p projPlusInt32Int64ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -3675,14 +3651,12 @@ func (p projPlusInt32DecimalConstOp) Next() coldata.Batch { col := col projCol := projVec.Decimal() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -3702,7 +3676,7 @@ func (p projPlusInt32DecimalConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -3785,14 +3759,12 @@ func (p projPlusInt32DatumConstOp) Next() coldata.Batch { col := col projCol := projVec.Datum() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -3815,7 +3787,7 @@ func (p projPlusInt32DatumConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -3903,14 +3875,12 @@ func (p projPlusInt64Int16ConstOp) Next() coldata.Batch { col := col projCol := projVec.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -3928,7 +3898,7 @@ func (p projPlusInt64Int16ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -4003,14 +3973,12 @@ func (p projPlusInt64Int32ConstOp) Next() coldata.Batch { col := col projCol := projVec.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -4028,7 +3996,7 @@ func (p projPlusInt64Int32ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -4103,14 +4071,12 @@ func (p projPlusInt64Int64ConstOp) Next() coldata.Batch { col := col projCol := projVec.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -4128,7 +4094,7 @@ func (p projPlusInt64Int64ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -4203,14 +4169,12 @@ func (p projPlusInt64DecimalConstOp) Next() coldata.Batch { col := col projCol := projVec.Decimal() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -4230,7 +4194,7 @@ func (p projPlusInt64DecimalConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -4313,14 +4277,12 @@ func (p projPlusInt64DatumConstOp) Next() coldata.Batch { col := col projCol := projVec.Datum() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -4343,7 +4305,7 @@ func (p projPlusInt64DatumConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -4431,14 +4393,12 @@ func (p projPlusFloat64Float64ConstOp) Next() coldata.Batch { col := col projCol := projVec.Float64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -4453,7 +4413,7 @@ func (p projPlusFloat64Float64ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -4519,14 +4479,12 @@ func (p projPlusTimestampIntervalConstOp) Next() coldata.Batch { col := col projCol := projVec.Timestamp() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) t_res := duration.Add(arg, p.constArg) @@ -4541,7 +4499,7 @@ func (p projPlusTimestampIntervalConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -4607,14 +4565,12 @@ func (p projPlusIntervalTimestampConstOp) Next() coldata.Batch { col := col projCol := projVec.Timestamp() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) t_res := duration.Add(p.constArg, arg) @@ -4629,7 +4585,7 @@ func (p projPlusIntervalTimestampConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -4695,14 +4651,12 @@ func (p projPlusIntervalIntervalConstOp) Next() coldata.Batch { col := col projCol := projVec.Interval() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) projCol[i] = arg.Add(p.constArg) @@ -4712,7 +4666,7 @@ func (p projPlusIntervalIntervalConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -4765,14 +4719,12 @@ func (p projPlusIntervalDatumConstOp) Next() coldata.Batch { col := col projCol := projVec.Datum() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -4795,7 +4747,7 @@ func (p projPlusIntervalDatumConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -4885,14 +4837,12 @@ func (p projPlusDatumIntervalConstOp) Next() coldata.Batch { col := col projCol := projVec.Datum() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -4915,7 +4865,7 @@ func (p projPlusDatumIntervalConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -5007,14 +4957,12 @@ func (p projPlusDatumInt16ConstOp) Next() coldata.Batch { col := col projCol := projVec.Datum() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -5037,7 +4985,7 @@ func (p projPlusDatumInt16ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -5129,14 +5077,12 @@ func (p projPlusDatumInt32ConstOp) Next() coldata.Batch { col := col projCol := projVec.Datum() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -5159,7 +5105,7 @@ func (p projPlusDatumInt32ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -5251,14 +5197,12 @@ func (p projPlusDatumInt64ConstOp) Next() coldata.Batch { col := col projCol := projVec.Datum() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -5281,7 +5225,7 @@ func (p projPlusDatumInt64ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -5371,14 +5315,12 @@ func (p projMinusDecimalInt16ConstOp) Next() coldata.Batch { col := col projCol := projVec.Decimal() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -5397,7 +5339,7 @@ func (p projMinusDecimalInt16ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -5475,14 +5417,12 @@ func (p projMinusDecimalInt32ConstOp) Next() coldata.Batch { col := col projCol := projVec.Decimal() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -5501,7 +5441,7 @@ func (p projMinusDecimalInt32ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -5579,14 +5519,12 @@ func (p projMinusDecimalInt64ConstOp) Next() coldata.Batch { col := col projCol := projVec.Decimal() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -5605,7 +5543,7 @@ func (p projMinusDecimalInt64ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -5683,14 +5621,12 @@ func (p projMinusDecimalDecimalConstOp) Next() coldata.Batch { col := col projCol := projVec.Decimal() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -5708,7 +5644,7 @@ func (p projMinusDecimalDecimalConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -5783,14 +5719,12 @@ func (p projMinusInt16Int16ConstOp) Next() coldata.Batch { col := col projCol := projVec.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -5808,7 +5742,7 @@ func (p projMinusInt16Int16ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -5883,14 +5817,12 @@ func (p projMinusInt16Int32ConstOp) Next() coldata.Batch { col := col projCol := projVec.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -5908,7 +5840,7 @@ func (p projMinusInt16Int32ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -5983,14 +5915,12 @@ func (p projMinusInt16Int64ConstOp) Next() coldata.Batch { col := col projCol := projVec.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -6008,7 +5938,7 @@ func (p projMinusInt16Int64ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -6083,14 +6013,12 @@ func (p projMinusInt16DecimalConstOp) Next() coldata.Batch { col := col projCol := projVec.Decimal() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -6110,7 +6038,7 @@ func (p projMinusInt16DecimalConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -6193,14 +6121,12 @@ func (p projMinusInt16DatumConstOp) Next() coldata.Batch { col := col projCol := projVec.Datum() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -6223,7 +6149,7 @@ func (p projMinusInt16DatumConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -6311,14 +6237,12 @@ func (p projMinusInt32Int16ConstOp) Next() coldata.Batch { col := col projCol := projVec.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -6336,7 +6260,7 @@ func (p projMinusInt32Int16ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -6411,14 +6335,12 @@ func (p projMinusInt32Int32ConstOp) Next() coldata.Batch { col := col projCol := projVec.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -6436,7 +6358,7 @@ func (p projMinusInt32Int32ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -6511,14 +6433,12 @@ func (p projMinusInt32Int64ConstOp) Next() coldata.Batch { col := col projCol := projVec.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -6536,7 +6456,7 @@ func (p projMinusInt32Int64ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -6611,14 +6531,12 @@ func (p projMinusInt32DecimalConstOp) Next() coldata.Batch { col := col projCol := projVec.Decimal() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -6638,7 +6556,7 @@ func (p projMinusInt32DecimalConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -6721,14 +6639,12 @@ func (p projMinusInt32DatumConstOp) Next() coldata.Batch { col := col projCol := projVec.Datum() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -6751,7 +6667,7 @@ func (p projMinusInt32DatumConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -6839,14 +6755,12 @@ func (p projMinusInt64Int16ConstOp) Next() coldata.Batch { col := col projCol := projVec.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -6864,7 +6778,7 @@ func (p projMinusInt64Int16ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -6939,14 +6853,12 @@ func (p projMinusInt64Int32ConstOp) Next() coldata.Batch { col := col projCol := projVec.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -6964,7 +6876,7 @@ func (p projMinusInt64Int32ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -7039,14 +6951,12 @@ func (p projMinusInt64Int64ConstOp) Next() coldata.Batch { col := col projCol := projVec.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -7064,7 +6974,7 @@ func (p projMinusInt64Int64ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -7139,14 +7049,12 @@ func (p projMinusInt64DecimalConstOp) Next() coldata.Batch { col := col projCol := projVec.Decimal() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -7166,7 +7074,7 @@ func (p projMinusInt64DecimalConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -7249,14 +7157,12 @@ func (p projMinusInt64DatumConstOp) Next() coldata.Batch { col := col projCol := projVec.Datum() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -7279,7 +7185,7 @@ func (p projMinusInt64DatumConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -7367,14 +7273,12 @@ func (p projMinusFloat64Float64ConstOp) Next() coldata.Batch { col := col projCol := projVec.Float64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -7389,7 +7293,7 @@ func (p projMinusFloat64Float64ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -7455,14 +7359,12 @@ func (p projMinusTimestampTimestampConstOp) Next() coldata.Batch { col := col projCol := projVec.Interval() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -7475,7 +7377,7 @@ func (p projMinusTimestampTimestampConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -7535,14 +7437,12 @@ func (p projMinusTimestampIntervalConstOp) Next() coldata.Batch { col := col projCol := projVec.Timestamp() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) t_res := duration.Add(arg, p.constArg.Mul(-1)) @@ -7557,7 +7457,7 @@ func (p projMinusTimestampIntervalConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -7623,14 +7523,12 @@ func (p projMinusIntervalIntervalConstOp) Next() coldata.Batch { col := col projCol := projVec.Interval() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) projCol[i] = arg.Sub(p.constArg) @@ -7640,7 +7538,7 @@ func (p projMinusIntervalIntervalConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -7693,14 +7591,12 @@ func (p projMinusIntervalDatumConstOp) Next() coldata.Batch { col := col projCol := projVec.Datum() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -7723,7 +7619,7 @@ func (p projMinusIntervalDatumConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -7811,14 +7707,12 @@ func (p projMinusJSONBytesConstOp) Next() coldata.Batch { col := col projCol := projVec.JSON() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -7837,7 +7731,7 @@ func (p projMinusJSONBytesConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -7913,14 +7807,12 @@ func (p projMinusJSONInt16ConstOp) Next() coldata.Batch { col := col projCol := projVec.JSON() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -7935,7 +7827,7 @@ func (p projMinusJSONInt16ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -8001,14 +7893,12 @@ func (p projMinusJSONInt32ConstOp) Next() coldata.Batch { col := col projCol := projVec.JSON() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -8023,7 +7913,7 @@ func (p projMinusJSONInt32ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -8089,14 +7979,12 @@ func (p projMinusJSONInt64ConstOp) Next() coldata.Batch { col := col projCol := projVec.JSON() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -8111,7 +7999,7 @@ func (p projMinusJSONInt64ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -8179,16 +8067,23 @@ func (p projMinusDatumDatumConstOp) Next() coldata.Batch { col := col projCol := projVec.Datum() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() && !p.calledOnNullInput - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) + if colNulls.NullAt(i) { + // If we entered this branch for a null value, calledOnNullInput must be + // true. This means the projection should be calculated on null arguments. + // When a value is null, the underlying data in the slice is invalid and + // can be anything, so we need to overwrite it here. calledOnNullInput is + // currently only true for ConcatDatumDatum, so only the datum case needs + // to be handled. + arg = tree.DNull + } _res, err := eval.BinaryOp(_overloadHelper.EvalCtx, _overloadHelper.BinOp, arg.(tree.Datum), p.constArg.(tree.Datum)) if err != nil { @@ -8205,9 +8100,18 @@ func (p projMinusDatumDatumConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) + if colNulls.NullAt(i) { + // If we entered this branch for a null value, calledOnNullInput must be + // true. This means the projection should be calculated on null arguments. + // When a value is null, the underlying data in the slice is invalid and + // can be anything, so we need to overwrite it here. calledOnNullInput is + // currently only true for ConcatDatumDatum, so only the datum case needs + // to be handled. + arg = tree.DNull + } _res, err := eval.BinaryOp(_overloadHelper.EvalCtx, _overloadHelper.BinOp, arg.(tree.Datum), p.constArg.(tree.Datum)) if err != nil { @@ -8221,7 +8125,9 @@ func (p projMinusDatumDatumConstOp) Next() coldata.Batch { } } } - projVec.SetNulls(_outNulls.Or(*colNulls)) + if !p.calledOnNullInput { + projVec.SetNulls(_outNulls.Or(*colNulls)) + } } else { if sel := batch.Selection(); sel != nil { sel = sel[:n] @@ -8283,14 +8189,12 @@ func (p projMinusDatumIntervalConstOp) Next() coldata.Batch { col := col projCol := projVec.Datum() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -8313,7 +8217,7 @@ func (p projMinusDatumIntervalConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -8405,14 +8309,12 @@ func (p projMinusDatumBytesConstOp) Next() coldata.Batch { col := col projCol := projVec.Datum() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -8435,7 +8337,7 @@ func (p projMinusDatumBytesConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -8525,14 +8427,12 @@ func (p projMinusDatumInt16ConstOp) Next() coldata.Batch { col := col projCol := projVec.Datum() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -8555,7 +8455,7 @@ func (p projMinusDatumInt16ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -8647,14 +8547,12 @@ func (p projMinusDatumInt32ConstOp) Next() coldata.Batch { col := col projCol := projVec.Datum() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -8677,7 +8575,7 @@ func (p projMinusDatumInt32ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -8769,14 +8667,12 @@ func (p projMinusDatumInt64ConstOp) Next() coldata.Batch { col := col projCol := projVec.Datum() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -8799,7 +8695,7 @@ func (p projMinusDatumInt64ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -8889,14 +8785,12 @@ func (p projMultDecimalInt16ConstOp) Next() coldata.Batch { col := col projCol := projVec.Decimal() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -8915,7 +8809,7 @@ func (p projMultDecimalInt16ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -8993,14 +8887,12 @@ func (p projMultDecimalInt32ConstOp) Next() coldata.Batch { col := col projCol := projVec.Decimal() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -9019,7 +8911,7 @@ func (p projMultDecimalInt32ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -9097,14 +8989,12 @@ func (p projMultDecimalInt64ConstOp) Next() coldata.Batch { col := col projCol := projVec.Decimal() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -9123,7 +9013,7 @@ func (p projMultDecimalInt64ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -9201,14 +9091,12 @@ func (p projMultDecimalDecimalConstOp) Next() coldata.Batch { col := col projCol := projVec.Decimal() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -9226,7 +9114,7 @@ func (p projMultDecimalDecimalConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -9301,14 +9189,12 @@ func (p projMultDecimalIntervalConstOp) Next() coldata.Batch { col := col projCol := projVec.Interval() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -9323,7 +9209,7 @@ func (p projMultDecimalIntervalConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -9389,14 +9275,12 @@ func (p projMultInt16Int16ConstOp) Next() coldata.Batch { col := col projCol := projVec.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -9422,7 +9306,7 @@ func (p projMultInt16Int16ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -9521,14 +9405,12 @@ func (p projMultInt16Int32ConstOp) Next() coldata.Batch { col := col projCol := projVec.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -9554,7 +9436,7 @@ func (p projMultInt16Int32ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -9653,14 +9535,12 @@ func (p projMultInt16Int64ConstOp) Next() coldata.Batch { col := col projCol := projVec.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -9686,7 +9566,7 @@ func (p projMultInt16Int64ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -9785,14 +9665,12 @@ func (p projMultInt16DecimalConstOp) Next() coldata.Batch { col := col projCol := projVec.Decimal() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -9812,7 +9690,7 @@ func (p projMultInt16DecimalConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -9893,14 +9771,12 @@ func (p projMultInt16IntervalConstOp) Next() coldata.Batch { col := col projCol := projVec.Interval() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) projCol[i] = p.constArg.Mul(int64(arg)) @@ -9910,7 +9786,7 @@ func (p projMultInt16IntervalConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -9961,14 +9837,12 @@ func (p projMultInt32Int16ConstOp) Next() coldata.Batch { col := col projCol := projVec.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -9994,7 +9868,7 @@ func (p projMultInt32Int16ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -10093,14 +9967,12 @@ func (p projMultInt32Int32ConstOp) Next() coldata.Batch { col := col projCol := projVec.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -10126,7 +9998,7 @@ func (p projMultInt32Int32ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -10225,14 +10097,12 @@ func (p projMultInt32Int64ConstOp) Next() coldata.Batch { col := col projCol := projVec.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -10258,7 +10128,7 @@ func (p projMultInt32Int64ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -10357,14 +10227,12 @@ func (p projMultInt32DecimalConstOp) Next() coldata.Batch { col := col projCol := projVec.Decimal() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -10384,7 +10252,7 @@ func (p projMultInt32DecimalConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -10465,14 +10333,12 @@ func (p projMultInt32IntervalConstOp) Next() coldata.Batch { col := col projCol := projVec.Interval() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) projCol[i] = p.constArg.Mul(int64(arg)) @@ -10482,7 +10348,7 @@ func (p projMultInt32IntervalConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -10533,14 +10399,12 @@ func (p projMultInt64Int16ConstOp) Next() coldata.Batch { col := col projCol := projVec.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -10566,7 +10430,7 @@ func (p projMultInt64Int16ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -10665,14 +10529,12 @@ func (p projMultInt64Int32ConstOp) Next() coldata.Batch { col := col projCol := projVec.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -10698,7 +10560,7 @@ func (p projMultInt64Int32ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -10797,14 +10659,12 @@ func (p projMultInt64Int64ConstOp) Next() coldata.Batch { col := col projCol := projVec.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -10830,7 +10690,7 @@ func (p projMultInt64Int64ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -10929,14 +10789,12 @@ func (p projMultInt64DecimalConstOp) Next() coldata.Batch { col := col projCol := projVec.Decimal() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -10956,7 +10814,7 @@ func (p projMultInt64DecimalConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -11037,14 +10895,12 @@ func (p projMultInt64IntervalConstOp) Next() coldata.Batch { col := col projCol := projVec.Interval() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) projCol[i] = p.constArg.Mul(int64(arg)) @@ -11054,7 +10910,7 @@ func (p projMultInt64IntervalConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -11105,14 +10961,12 @@ func (p projMultFloat64Float64ConstOp) Next() coldata.Batch { col := col projCol := projVec.Float64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -11127,7 +10981,7 @@ func (p projMultFloat64Float64ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -11193,14 +11047,12 @@ func (p projMultFloat64IntervalConstOp) Next() coldata.Batch { col := col projCol := projVec.Interval() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) projCol[i] = p.constArg.MulFloat(float64(arg)) @@ -11210,7 +11062,7 @@ func (p projMultFloat64IntervalConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -11261,14 +11113,12 @@ func (p projMultIntervalInt16ConstOp) Next() coldata.Batch { col := col projCol := projVec.Interval() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) projCol[i] = arg.Mul(int64(p.constArg)) @@ -11278,7 +11128,7 @@ func (p projMultIntervalInt16ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -11329,14 +11179,12 @@ func (p projMultIntervalInt32ConstOp) Next() coldata.Batch { col := col projCol := projVec.Interval() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) projCol[i] = arg.Mul(int64(p.constArg)) @@ -11346,7 +11194,7 @@ func (p projMultIntervalInt32ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -11397,14 +11245,12 @@ func (p projMultIntervalInt64ConstOp) Next() coldata.Batch { col := col projCol := projVec.Interval() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) projCol[i] = arg.Mul(int64(p.constArg)) @@ -11414,7 +11260,7 @@ func (p projMultIntervalInt64ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -11465,14 +11311,12 @@ func (p projMultIntervalFloat64ConstOp) Next() coldata.Batch { col := col projCol := projVec.Interval() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) projCol[i] = arg.MulFloat(float64(p.constArg)) @@ -11482,7 +11326,7 @@ func (p projMultIntervalFloat64ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -11533,14 +11377,12 @@ func (p projMultIntervalDecimalConstOp) Next() coldata.Batch { col := col projCol := projVec.Interval() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -11555,7 +11397,7 @@ func (p projMultIntervalDecimalConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -11621,14 +11463,12 @@ func (p projDivDecimalInt16ConstOp) Next() coldata.Batch { col := col projCol := projVec.Decimal() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -11651,7 +11491,7 @@ func (p projDivDecimalInt16ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -11741,14 +11581,12 @@ func (p projDivDecimalInt32ConstOp) Next() coldata.Batch { col := col projCol := projVec.Decimal() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -11771,7 +11609,7 @@ func (p projDivDecimalInt32ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -11861,14 +11699,12 @@ func (p projDivDecimalInt64ConstOp) Next() coldata.Batch { col := col projCol := projVec.Decimal() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -11891,7 +11727,7 @@ func (p projDivDecimalInt64ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -11981,14 +11817,12 @@ func (p projDivDecimalDecimalConstOp) Next() coldata.Batch { col := col projCol := projVec.Decimal() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -12010,7 +11844,7 @@ func (p projDivDecimalDecimalConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -12097,14 +11931,12 @@ func (p projDivInt16Int16ConstOp) Next() coldata.Batch { col := col projCol := projVec.Decimal() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -12126,7 +11958,7 @@ func (p projDivInt16Int16ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -12213,14 +12045,12 @@ func (p projDivInt16Int32ConstOp) Next() coldata.Batch { col := col projCol := projVec.Decimal() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -12242,7 +12072,7 @@ func (p projDivInt16Int32ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -12329,14 +12159,12 @@ func (p projDivInt16Int64ConstOp) Next() coldata.Batch { col := col projCol := projVec.Decimal() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -12358,7 +12186,7 @@ func (p projDivInt16Int64ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -12445,14 +12273,12 @@ func (p projDivInt16DecimalConstOp) Next() coldata.Batch { col := col projCol := projVec.Decimal() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -12476,7 +12302,7 @@ func (p projDivInt16DecimalConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -12569,14 +12395,12 @@ func (p projDivInt32Int16ConstOp) Next() coldata.Batch { col := col projCol := projVec.Decimal() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -12598,7 +12422,7 @@ func (p projDivInt32Int16ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -12685,14 +12509,12 @@ func (p projDivInt32Int32ConstOp) Next() coldata.Batch { col := col projCol := projVec.Decimal() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -12714,7 +12536,7 @@ func (p projDivInt32Int32ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -12801,14 +12623,12 @@ func (p projDivInt32Int64ConstOp) Next() coldata.Batch { col := col projCol := projVec.Decimal() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -12830,7 +12650,7 @@ func (p projDivInt32Int64ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -12917,14 +12737,12 @@ func (p projDivInt32DecimalConstOp) Next() coldata.Batch { col := col projCol := projVec.Decimal() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -12948,7 +12766,7 @@ func (p projDivInt32DecimalConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -13041,14 +12859,12 @@ func (p projDivInt64Int16ConstOp) Next() coldata.Batch { col := col projCol := projVec.Decimal() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -13070,7 +12886,7 @@ func (p projDivInt64Int16ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -13157,14 +12973,12 @@ func (p projDivInt64Int32ConstOp) Next() coldata.Batch { col := col projCol := projVec.Decimal() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -13186,7 +13000,7 @@ func (p projDivInt64Int32ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -13273,14 +13087,12 @@ func (p projDivInt64Int64ConstOp) Next() coldata.Batch { col := col projCol := projVec.Decimal() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -13302,7 +13114,7 @@ func (p projDivInt64Int64ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -13389,14 +13201,12 @@ func (p projDivInt64DecimalConstOp) Next() coldata.Batch { col := col projCol := projVec.Decimal() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -13420,7 +13230,7 @@ func (p projDivInt64DecimalConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -13513,14 +13323,12 @@ func (p projDivFloat64Float64ConstOp) Next() coldata.Batch { col := col projCol := projVec.Float64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -13539,7 +13347,7 @@ func (p projDivFloat64Float64ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -13617,14 +13425,12 @@ func (p projDivIntervalInt16ConstOp) Next() coldata.Batch { col := col projCol := projVec.Interval() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -13638,7 +13444,7 @@ func (p projDivIntervalInt16ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -13701,14 +13507,12 @@ func (p projDivIntervalInt32ConstOp) Next() coldata.Batch { col := col projCol := projVec.Interval() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -13722,7 +13526,7 @@ func (p projDivIntervalInt32ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -13785,14 +13589,12 @@ func (p projDivIntervalInt64ConstOp) Next() coldata.Batch { col := col projCol := projVec.Interval() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -13806,7 +13608,7 @@ func (p projDivIntervalInt64ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -13869,14 +13671,12 @@ func (p projDivIntervalFloat64ConstOp) Next() coldata.Batch { col := col projCol := projVec.Interval() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -13890,7 +13690,7 @@ func (p projDivIntervalFloat64ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -13953,14 +13753,12 @@ func (p projFloorDivDecimalInt16ConstOp) Next() coldata.Batch { col := col projCol := projVec.Decimal() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -13983,7 +13781,7 @@ func (p projFloorDivDecimalInt16ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -14073,14 +13871,12 @@ func (p projFloorDivDecimalInt32ConstOp) Next() coldata.Batch { col := col projCol := projVec.Decimal() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -14103,7 +13899,7 @@ func (p projFloorDivDecimalInt32ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -14193,14 +13989,12 @@ func (p projFloorDivDecimalInt64ConstOp) Next() coldata.Batch { col := col projCol := projVec.Decimal() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -14223,7 +14017,7 @@ func (p projFloorDivDecimalInt64ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -14313,14 +14107,12 @@ func (p projFloorDivDecimalDecimalConstOp) Next() coldata.Batch { col := col projCol := projVec.Decimal() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -14342,7 +14134,7 @@ func (p projFloorDivDecimalDecimalConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -14429,14 +14221,12 @@ func (p projFloorDivInt16Int16ConstOp) Next() coldata.Batch { col := col projCol := projVec.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -14453,7 +14243,7 @@ func (p projFloorDivInt16Int16ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -14525,14 +14315,12 @@ func (p projFloorDivInt16Int32ConstOp) Next() coldata.Batch { col := col projCol := projVec.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -14549,7 +14337,7 @@ func (p projFloorDivInt16Int32ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -14621,14 +14409,12 @@ func (p projFloorDivInt16Int64ConstOp) Next() coldata.Batch { col := col projCol := projVec.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -14645,7 +14431,7 @@ func (p projFloorDivInt16Int64ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -14717,14 +14503,12 @@ func (p projFloorDivInt16DecimalConstOp) Next() coldata.Batch { col := col projCol := projVec.Decimal() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -14748,7 +14532,7 @@ func (p projFloorDivInt16DecimalConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -14841,14 +14625,12 @@ func (p projFloorDivInt32Int16ConstOp) Next() coldata.Batch { col := col projCol := projVec.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -14865,7 +14647,7 @@ func (p projFloorDivInt32Int16ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -14937,14 +14719,12 @@ func (p projFloorDivInt32Int32ConstOp) Next() coldata.Batch { col := col projCol := projVec.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -14961,7 +14741,7 @@ func (p projFloorDivInt32Int32ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -15033,14 +14813,12 @@ func (p projFloorDivInt32Int64ConstOp) Next() coldata.Batch { col := col projCol := projVec.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -15057,7 +14835,7 @@ func (p projFloorDivInt32Int64ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -15129,14 +14907,12 @@ func (p projFloorDivInt32DecimalConstOp) Next() coldata.Batch { col := col projCol := projVec.Decimal() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -15160,7 +14936,7 @@ func (p projFloorDivInt32DecimalConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -15253,14 +15029,12 @@ func (p projFloorDivInt64Int16ConstOp) Next() coldata.Batch { col := col projCol := projVec.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -15277,7 +15051,7 @@ func (p projFloorDivInt64Int16ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -15349,14 +15123,12 @@ func (p projFloorDivInt64Int32ConstOp) Next() coldata.Batch { col := col projCol := projVec.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -15373,7 +15145,7 @@ func (p projFloorDivInt64Int32ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -15445,14 +15217,12 @@ func (p projFloorDivInt64Int64ConstOp) Next() coldata.Batch { col := col projCol := projVec.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -15469,7 +15239,7 @@ func (p projFloorDivInt64Int64ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -15541,14 +15311,12 @@ func (p projFloorDivInt64DecimalConstOp) Next() coldata.Batch { col := col projCol := projVec.Decimal() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -15572,7 +15340,7 @@ func (p projFloorDivInt64DecimalConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -15665,14 +15433,12 @@ func (p projFloorDivFloat64Float64ConstOp) Next() coldata.Batch { col := col projCol := projVec.Float64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -15691,7 +15457,7 @@ func (p projFloorDivFloat64Float64ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -15769,14 +15535,12 @@ func (p projModDecimalInt16ConstOp) Next() coldata.Batch { col := col projCol := projVec.Decimal() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -15799,7 +15563,7 @@ func (p projModDecimalInt16ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -15889,14 +15653,12 @@ func (p projModDecimalInt32ConstOp) Next() coldata.Batch { col := col projCol := projVec.Decimal() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -15919,7 +15681,7 @@ func (p projModDecimalInt32ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -16009,14 +15771,12 @@ func (p projModDecimalInt64ConstOp) Next() coldata.Batch { col := col projCol := projVec.Decimal() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -16039,7 +15799,7 @@ func (p projModDecimalInt64ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -16129,14 +15889,12 @@ func (p projModDecimalDecimalConstOp) Next() coldata.Batch { col := col projCol := projVec.Decimal() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -16158,7 +15916,7 @@ func (p projModDecimalDecimalConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -16245,14 +16003,12 @@ func (p projModInt16Int16ConstOp) Next() coldata.Batch { col := col projCol := projVec.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -16269,7 +16025,7 @@ func (p projModInt16Int16ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -16341,14 +16097,12 @@ func (p projModInt16Int32ConstOp) Next() coldata.Batch { col := col projCol := projVec.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -16365,7 +16119,7 @@ func (p projModInt16Int32ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -16437,14 +16191,12 @@ func (p projModInt16Int64ConstOp) Next() coldata.Batch { col := col projCol := projVec.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -16461,7 +16213,7 @@ func (p projModInt16Int64ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -16533,14 +16285,12 @@ func (p projModInt16DecimalConstOp) Next() coldata.Batch { col := col projCol := projVec.Decimal() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -16564,7 +16314,7 @@ func (p projModInt16DecimalConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -16657,14 +16407,12 @@ func (p projModInt32Int16ConstOp) Next() coldata.Batch { col := col projCol := projVec.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -16681,7 +16429,7 @@ func (p projModInt32Int16ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -16753,14 +16501,12 @@ func (p projModInt32Int32ConstOp) Next() coldata.Batch { col := col projCol := projVec.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -16777,7 +16523,7 @@ func (p projModInt32Int32ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -16849,14 +16595,12 @@ func (p projModInt32Int64ConstOp) Next() coldata.Batch { col := col projCol := projVec.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -16873,7 +16617,7 @@ func (p projModInt32Int64ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -16945,14 +16689,12 @@ func (p projModInt32DecimalConstOp) Next() coldata.Batch { col := col projCol := projVec.Decimal() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -16976,7 +16718,7 @@ func (p projModInt32DecimalConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -17069,14 +16811,12 @@ func (p projModInt64Int16ConstOp) Next() coldata.Batch { col := col projCol := projVec.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -17093,7 +16833,7 @@ func (p projModInt64Int16ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -17165,14 +16905,12 @@ func (p projModInt64Int32ConstOp) Next() coldata.Batch { col := col projCol := projVec.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -17189,7 +16927,7 @@ func (p projModInt64Int32ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -17261,14 +16999,12 @@ func (p projModInt64Int64ConstOp) Next() coldata.Batch { col := col projCol := projVec.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -17285,7 +17021,7 @@ func (p projModInt64Int64ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -17357,14 +17093,12 @@ func (p projModInt64DecimalConstOp) Next() coldata.Batch { col := col projCol := projVec.Decimal() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -17388,7 +17122,7 @@ func (p projModInt64DecimalConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -17481,14 +17215,12 @@ func (p projModFloat64Float64ConstOp) Next() coldata.Batch { col := col projCol := projVec.Float64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -17507,7 +17239,7 @@ func (p projModFloat64Float64ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -17585,14 +17317,12 @@ func (p projPowDecimalInt16ConstOp) Next() coldata.Batch { col := col projCol := projVec.Decimal() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -17611,7 +17341,7 @@ func (p projPowDecimalInt16ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -17689,14 +17419,12 @@ func (p projPowDecimalInt32ConstOp) Next() coldata.Batch { col := col projCol := projVec.Decimal() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -17715,7 +17443,7 @@ func (p projPowDecimalInt32ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -17793,14 +17521,12 @@ func (p projPowDecimalInt64ConstOp) Next() coldata.Batch { col := col projCol := projVec.Decimal() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -17819,7 +17545,7 @@ func (p projPowDecimalInt64ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -17897,14 +17623,12 @@ func (p projPowDecimalDecimalConstOp) Next() coldata.Batch { col := col projCol := projVec.Decimal() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -17922,7 +17646,7 @@ func (p projPowDecimalDecimalConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -17997,14 +17721,12 @@ func (p projPowInt16Int16ConstOp) Next() coldata.Batch { col := col projCol := projVec.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -18028,7 +17750,7 @@ func (p projPowInt16Int16ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -18121,14 +17843,12 @@ func (p projPowInt16Int32ConstOp) Next() coldata.Batch { col := col projCol := projVec.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -18152,7 +17872,7 @@ func (p projPowInt16Int32ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -18245,14 +17965,12 @@ func (p projPowInt16Int64ConstOp) Next() coldata.Batch { col := col projCol := projVec.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -18276,7 +17994,7 @@ func (p projPowInt16Int64ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -18369,14 +18087,12 @@ func (p projPowInt16DecimalConstOp) Next() coldata.Batch { col := col projCol := projVec.Decimal() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -18396,7 +18112,7 @@ func (p projPowInt16DecimalConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -18477,14 +18193,12 @@ func (p projPowInt32Int16ConstOp) Next() coldata.Batch { col := col projCol := projVec.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -18508,7 +18222,7 @@ func (p projPowInt32Int16ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -18601,14 +18315,12 @@ func (p projPowInt32Int32ConstOp) Next() coldata.Batch { col := col projCol := projVec.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -18632,7 +18344,7 @@ func (p projPowInt32Int32ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -18725,14 +18437,12 @@ func (p projPowInt32Int64ConstOp) Next() coldata.Batch { col := col projCol := projVec.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -18756,7 +18466,7 @@ func (p projPowInt32Int64ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -18849,14 +18559,12 @@ func (p projPowInt32DecimalConstOp) Next() coldata.Batch { col := col projCol := projVec.Decimal() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -18876,7 +18584,7 @@ func (p projPowInt32DecimalConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -18957,14 +18665,12 @@ func (p projPowInt64Int16ConstOp) Next() coldata.Batch { col := col projCol := projVec.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -18988,7 +18694,7 @@ func (p projPowInt64Int16ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -19081,14 +18787,12 @@ func (p projPowInt64Int32ConstOp) Next() coldata.Batch { col := col projCol := projVec.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -19112,7 +18816,7 @@ func (p projPowInt64Int32ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -19205,14 +18909,12 @@ func (p projPowInt64Int64ConstOp) Next() coldata.Batch { col := col projCol := projVec.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -19236,7 +18938,7 @@ func (p projPowInt64Int64ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -19329,14 +19031,12 @@ func (p projPowInt64DecimalConstOp) Next() coldata.Batch { col := col projCol := projVec.Decimal() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -19356,7 +19056,7 @@ func (p projPowInt64DecimalConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -19437,14 +19137,12 @@ func (p projPowFloat64Float64ConstOp) Next() coldata.Batch { col := col projCol := projVec.Float64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -19459,7 +19157,7 @@ func (p projPowFloat64Float64ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -19525,14 +19223,12 @@ func (p projConcatBytesBytesConstOp) Next() coldata.Batch { col := col projCol := projVec.Bytes() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -19549,7 +19245,7 @@ func (p projConcatBytesBytesConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -19619,14 +19315,12 @@ func (p projConcatJSONJSONConstOp) Next() coldata.Batch { col := col projCol := projVec.JSON() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -19642,7 +19336,7 @@ func (p projConcatJSONJSONConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -19711,16 +19405,23 @@ func (p projConcatDatumDatumConstOp) Next() coldata.Batch { col := col projCol := projVec.Datum() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() && !p.calledOnNullInput - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) + if colNulls.NullAt(i) { + // If we entered this branch for a null value, calledOnNullInput must be + // true. This means the projection should be calculated on null arguments. + // When a value is null, the underlying data in the slice is invalid and + // can be anything, so we need to overwrite it here. calledOnNullInput is + // currently only true for ConcatDatumDatum, so only the datum case needs + // to be handled. + arg = tree.DNull + } _res, err := eval.BinaryOp(_overloadHelper.EvalCtx, _overloadHelper.BinOp, arg.(tree.Datum), p.constArg.(tree.Datum)) if err != nil { @@ -19737,9 +19438,18 @@ func (p projConcatDatumDatumConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) + if colNulls.NullAt(i) { + // If we entered this branch for a null value, calledOnNullInput must be + // true. This means the projection should be calculated on null arguments. + // When a value is null, the underlying data in the slice is invalid and + // can be anything, so we need to overwrite it here. calledOnNullInput is + // currently only true for ConcatDatumDatum, so only the datum case needs + // to be handled. + arg = tree.DNull + } _res, err := eval.BinaryOp(_overloadHelper.EvalCtx, _overloadHelper.BinOp, arg.(tree.Datum), p.constArg.(tree.Datum)) if err != nil { @@ -19753,7 +19463,9 @@ func (p projConcatDatumDatumConstOp) Next() coldata.Batch { } } } - projVec.SetNulls(_outNulls.Or(*colNulls)) + if !p.calledOnNullInput { + projVec.SetNulls(_outNulls.Or(*colNulls)) + } } else { if sel := batch.Selection(); sel != nil { sel = sel[:n] @@ -19813,14 +19525,12 @@ func (p projLShiftInt16Int16ConstOp) Next() coldata.Batch { col := col projCol := projVec.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -19838,7 +19548,7 @@ func (p projLShiftInt16Int16ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -19913,14 +19623,12 @@ func (p projLShiftInt16Int32ConstOp) Next() coldata.Batch { col := col projCol := projVec.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -19938,7 +19646,7 @@ func (p projLShiftInt16Int32ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -20013,14 +19721,12 @@ func (p projLShiftInt16Int64ConstOp) Next() coldata.Batch { col := col projCol := projVec.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -20038,7 +19744,7 @@ func (p projLShiftInt16Int64ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -20113,14 +19819,12 @@ func (p projLShiftInt32Int16ConstOp) Next() coldata.Batch { col := col projCol := projVec.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -20138,7 +19842,7 @@ func (p projLShiftInt32Int16ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -20213,14 +19917,12 @@ func (p projLShiftInt32Int32ConstOp) Next() coldata.Batch { col := col projCol := projVec.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -20238,7 +19940,7 @@ func (p projLShiftInt32Int32ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -20313,14 +20015,12 @@ func (p projLShiftInt32Int64ConstOp) Next() coldata.Batch { col := col projCol := projVec.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -20338,7 +20038,7 @@ func (p projLShiftInt32Int64ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -20413,14 +20113,12 @@ func (p projLShiftInt64Int16ConstOp) Next() coldata.Batch { col := col projCol := projVec.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -20438,7 +20136,7 @@ func (p projLShiftInt64Int16ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -20513,14 +20211,12 @@ func (p projLShiftInt64Int32ConstOp) Next() coldata.Batch { col := col projCol := projVec.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -20538,7 +20234,7 @@ func (p projLShiftInt64Int32ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -20613,14 +20309,12 @@ func (p projLShiftInt64Int64ConstOp) Next() coldata.Batch { col := col projCol := projVec.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -20638,7 +20332,7 @@ func (p projLShiftInt64Int64ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -20715,14 +20409,12 @@ func (p projLShiftDatumInt16ConstOp) Next() coldata.Batch { col := col projCol := projVec.Datum() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -20745,7 +20437,7 @@ func (p projLShiftDatumInt16ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -20837,14 +20529,12 @@ func (p projLShiftDatumInt32ConstOp) Next() coldata.Batch { col := col projCol := projVec.Datum() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -20867,7 +20557,7 @@ func (p projLShiftDatumInt32ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -20959,14 +20649,12 @@ func (p projLShiftDatumInt64ConstOp) Next() coldata.Batch { col := col projCol := projVec.Datum() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -20989,7 +20677,7 @@ func (p projLShiftDatumInt64ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -21079,14 +20767,12 @@ func (p projRShiftInt16Int16ConstOp) Next() coldata.Batch { col := col projCol := projVec.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -21104,7 +20790,7 @@ func (p projRShiftInt16Int16ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -21179,14 +20865,12 @@ func (p projRShiftInt16Int32ConstOp) Next() coldata.Batch { col := col projCol := projVec.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -21204,7 +20888,7 @@ func (p projRShiftInt16Int32ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -21279,14 +20963,12 @@ func (p projRShiftInt16Int64ConstOp) Next() coldata.Batch { col := col projCol := projVec.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -21304,7 +20986,7 @@ func (p projRShiftInt16Int64ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -21379,14 +21061,12 @@ func (p projRShiftInt32Int16ConstOp) Next() coldata.Batch { col := col projCol := projVec.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -21404,7 +21084,7 @@ func (p projRShiftInt32Int16ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -21479,14 +21159,12 @@ func (p projRShiftInt32Int32ConstOp) Next() coldata.Batch { col := col projCol := projVec.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -21504,7 +21182,7 @@ func (p projRShiftInt32Int32ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -21579,14 +21257,12 @@ func (p projRShiftInt32Int64ConstOp) Next() coldata.Batch { col := col projCol := projVec.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -21604,7 +21280,7 @@ func (p projRShiftInt32Int64ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -21679,14 +21355,12 @@ func (p projRShiftInt64Int16ConstOp) Next() coldata.Batch { col := col projCol := projVec.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -21704,7 +21378,7 @@ func (p projRShiftInt64Int16ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -21779,14 +21453,12 @@ func (p projRShiftInt64Int32ConstOp) Next() coldata.Batch { col := col projCol := projVec.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -21804,7 +21476,7 @@ func (p projRShiftInt64Int32ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -21879,14 +21551,12 @@ func (p projRShiftInt64Int64ConstOp) Next() coldata.Batch { col := col projCol := projVec.Int64() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -21904,7 +21574,7 @@ func (p projRShiftInt64Int64ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -21981,14 +21651,12 @@ func (p projRShiftDatumInt16ConstOp) Next() coldata.Batch { col := col projCol := projVec.Datum() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -22011,7 +21679,7 @@ func (p projRShiftDatumInt16ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -22103,14 +21771,12 @@ func (p projRShiftDatumInt32ConstOp) Next() coldata.Batch { col := col projCol := projVec.Datum() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -22133,7 +21799,7 @@ func (p projRShiftDatumInt32ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -22225,14 +21891,12 @@ func (p projRShiftDatumInt64ConstOp) Next() coldata.Batch { col := col projCol := projVec.Datum() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -22255,7 +21919,7 @@ func (p projRShiftDatumInt64ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -22345,14 +22009,12 @@ func (p projJSONFetchValJSONBytesConstOp) Next() coldata.Batch { col := col projCol := projVec.JSON() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -22374,7 +22036,7 @@ func (p projJSONFetchValJSONBytesConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -22459,14 +22121,12 @@ func (p projJSONFetchValJSONInt16ConstOp) Next() coldata.Batch { col := col projCol := projVec.JSON() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -22485,7 +22145,7 @@ func (p projJSONFetchValJSONInt16ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -22563,14 +22223,12 @@ func (p projJSONFetchValJSONInt32ConstOp) Next() coldata.Batch { col := col projCol := projVec.JSON() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -22589,7 +22247,7 @@ func (p projJSONFetchValJSONInt32ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -22667,14 +22325,12 @@ func (p projJSONFetchValJSONInt64ConstOp) Next() coldata.Batch { col := col projCol := projVec.JSON() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -22693,7 +22349,7 @@ func (p projJSONFetchValJSONInt64ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -22771,14 +22427,12 @@ func (p projJSONFetchTextJSONBytesConstOp) Next() coldata.Batch { col := col projCol := projVec.Bytes() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -22809,7 +22463,7 @@ func (p projJSONFetchTextJSONBytesConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -22921,14 +22575,12 @@ func (p projJSONFetchTextJSONInt16ConstOp) Next() coldata.Batch { col := col projCol := projVec.Bytes() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -22956,7 +22608,7 @@ func (p projJSONFetchTextJSONInt16ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -23061,14 +22713,12 @@ func (p projJSONFetchTextJSONInt32ConstOp) Next() coldata.Batch { col := col projCol := projVec.Bytes() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -23096,7 +22746,7 @@ func (p projJSONFetchTextJSONInt32ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -23201,14 +22851,12 @@ func (p projJSONFetchTextJSONInt64ConstOp) Next() coldata.Batch { col := col projCol := projVec.Bytes() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -23236,7 +22884,7 @@ func (p projJSONFetchTextJSONInt64ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -23341,14 +22989,12 @@ func (p projJSONFetchValPathJSONDatumConstOp) Next() coldata.Batch { col := col projCol := projVec.JSON() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -23367,7 +23013,7 @@ func (p projJSONFetchValPathJSONDatumConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -23443,14 +23089,12 @@ func (p projJSONFetchTextPathJSONDatumConstOp) Next() coldata.Batch { col := col projCol := projVec.Bytes() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -23479,7 +23123,7 @@ func (p projJSONFetchTextPathJSONDatumConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -23585,14 +23229,12 @@ func (p projEQBoolBoolConstOp) Next() coldata.Batch { col := col projCol := projVec.Bool() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -23616,7 +23258,7 @@ func (p projEQBoolBoolConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -23709,14 +23351,12 @@ func (p projEQBytesBytesConstOp) Next() coldata.Batch { col := col projCol := projVec.Bool() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -23732,7 +23372,7 @@ func (p projEQBytesBytesConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -23799,14 +23439,12 @@ func (p projEQDecimalInt16ConstOp) Next() coldata.Batch { col := col projCol := projVec.Bool() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -23828,7 +23466,7 @@ func (p projEQDecimalInt16ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -23915,14 +23553,12 @@ func (p projEQDecimalInt32ConstOp) Next() coldata.Batch { col := col projCol := projVec.Bool() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -23944,7 +23580,7 @@ func (p projEQDecimalInt32ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -24031,14 +23667,12 @@ func (p projEQDecimalInt64ConstOp) Next() coldata.Batch { col := col projCol := projVec.Bool() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -24060,7 +23694,7 @@ func (p projEQDecimalInt64ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -24147,14 +23781,12 @@ func (p projEQDecimalFloat64ConstOp) Next() coldata.Batch { col := col projCol := projVec.Bool() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -24178,7 +23810,7 @@ func (p projEQDecimalFloat64ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -24271,14 +23903,12 @@ func (p projEQDecimalDecimalConstOp) Next() coldata.Batch { col := col projCol := projVec.Bool() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -24294,7 +23924,7 @@ func (p projEQDecimalDecimalConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -24363,14 +23993,12 @@ func (p projEQInt16Int16ConstOp) Next() coldata.Batch { col := col projCol := projVec.Bool() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -24397,7 +24025,7 @@ func (p projEQInt16Int16ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -24499,14 +24127,12 @@ func (p projEQInt16Int32ConstOp) Next() coldata.Batch { col := col projCol := projVec.Bool() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -24533,7 +24159,7 @@ func (p projEQInt16Int32ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -24635,14 +24261,12 @@ func (p projEQInt16Int64ConstOp) Next() coldata.Batch { col := col projCol := projVec.Bool() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -24669,7 +24293,7 @@ func (p projEQInt16Int64ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -24771,14 +24395,12 @@ func (p projEQInt16Float64ConstOp) Next() coldata.Batch { col := col projCol := projVec.Bool() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -24813,7 +24435,7 @@ func (p projEQInt16Float64ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -24939,14 +24561,12 @@ func (p projEQInt16DecimalConstOp) Next() coldata.Batch { col := col projCol := projVec.Bool() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -24968,7 +24588,7 @@ func (p projEQInt16DecimalConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -25055,14 +24675,12 @@ func (p projEQInt32Int16ConstOp) Next() coldata.Batch { col := col projCol := projVec.Bool() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -25089,7 +24707,7 @@ func (p projEQInt32Int16ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -25191,14 +24809,12 @@ func (p projEQInt32Int32ConstOp) Next() coldata.Batch { col := col projCol := projVec.Bool() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -25225,7 +24841,7 @@ func (p projEQInt32Int32ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -25327,14 +24943,12 @@ func (p projEQInt32Int64ConstOp) Next() coldata.Batch { col := col projCol := projVec.Bool() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -25361,7 +24975,7 @@ func (p projEQInt32Int64ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -25463,14 +25077,12 @@ func (p projEQInt32Float64ConstOp) Next() coldata.Batch { col := col projCol := projVec.Bool() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -25505,7 +25117,7 @@ func (p projEQInt32Float64ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -25631,14 +25243,12 @@ func (p projEQInt32DecimalConstOp) Next() coldata.Batch { col := col projCol := projVec.Bool() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -25660,7 +25270,7 @@ func (p projEQInt32DecimalConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -25747,14 +25357,12 @@ func (p projEQInt64Int16ConstOp) Next() coldata.Batch { col := col projCol := projVec.Bool() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -25781,7 +25389,7 @@ func (p projEQInt64Int16ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -25883,14 +25491,12 @@ func (p projEQInt64Int32ConstOp) Next() coldata.Batch { col := col projCol := projVec.Bool() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -25917,7 +25523,7 @@ func (p projEQInt64Int32ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -26019,14 +25625,12 @@ func (p projEQInt64Int64ConstOp) Next() coldata.Batch { col := col projCol := projVec.Bool() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -26053,7 +25657,7 @@ func (p projEQInt64Int64ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -26155,14 +25759,12 @@ func (p projEQInt64Float64ConstOp) Next() coldata.Batch { col := col projCol := projVec.Bool() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -26197,7 +25799,7 @@ func (p projEQInt64Float64ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -26323,14 +25925,12 @@ func (p projEQInt64DecimalConstOp) Next() coldata.Batch { col := col projCol := projVec.Bool() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -26352,7 +25952,7 @@ func (p projEQInt64DecimalConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -26439,14 +26039,12 @@ func (p projEQFloat64Int16ConstOp) Next() coldata.Batch { col := col projCol := projVec.Bool() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -26481,7 +26079,7 @@ func (p projEQFloat64Int16ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -26607,14 +26205,12 @@ func (p projEQFloat64Int32ConstOp) Next() coldata.Batch { col := col projCol := projVec.Bool() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -26649,7 +26245,7 @@ func (p projEQFloat64Int32ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -26775,14 +26371,12 @@ func (p projEQFloat64Int64ConstOp) Next() coldata.Batch { col := col projCol := projVec.Bool() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -26817,7 +26411,7 @@ func (p projEQFloat64Int64ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -26943,14 +26537,12 @@ func (p projEQFloat64Float64ConstOp) Next() coldata.Batch { col := col projCol := projVec.Bool() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -26985,7 +26577,7 @@ func (p projEQFloat64Float64ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -27111,14 +26703,12 @@ func (p projEQFloat64DecimalConstOp) Next() coldata.Batch { col := col projCol := projVec.Bool() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -27142,7 +26732,7 @@ func (p projEQFloat64DecimalConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -27235,14 +26825,12 @@ func (p projEQTimestampTimestampConstOp) Next() coldata.Batch { col := col projCol := projVec.Bool() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -27265,7 +26853,7 @@ func (p projEQTimestampTimestampConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -27355,14 +26943,12 @@ func (p projEQIntervalIntervalConstOp) Next() coldata.Batch { col := col projCol := projVec.Bool() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -27378,7 +26964,7 @@ func (p projEQIntervalIntervalConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -27447,14 +27033,12 @@ func (p projEQJSONJSONConstOp) Next() coldata.Batch { col := col projCol := projVec.Bool() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -27476,7 +27060,7 @@ func (p projEQJSONJSONConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -27561,16 +27145,23 @@ func (p projEQDatumDatumConstOp) Next() coldata.Batch { col := col projCol := projVec.Bool() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() && !p.calledOnNullInput - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) + if colNulls.NullAt(i) { + // If we entered this branch for a null value, calledOnNullInput must be + // true. This means the projection should be calculated on null arguments. + // When a value is null, the underlying data in the slice is invalid and + // can be anything, so we need to overwrite it here. calledOnNullInput is + // currently only true for ConcatDatumDatum, so only the datum case needs + // to be handled. + arg = tree.DNull + } { var cmpResult int @@ -27586,9 +27177,18 @@ func (p projEQDatumDatumConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) + if colNulls.NullAt(i) { + // If we entered this branch for a null value, calledOnNullInput must be + // true. This means the projection should be calculated on null arguments. + // When a value is null, the underlying data in the slice is invalid and + // can be anything, so we need to overwrite it here. calledOnNullInput is + // currently only true for ConcatDatumDatum, so only the datum case needs + // to be handled. + arg = tree.DNull + } { var cmpResult int @@ -27601,7 +27201,9 @@ func (p projEQDatumDatumConstOp) Next() coldata.Batch { } } } - projVec.SetNulls(_outNulls.Or(*colNulls)) + if !p.calledOnNullInput { + projVec.SetNulls(_outNulls.Or(*colNulls)) + } } else { if sel := batch.Selection(); sel != nil { sel = sel[:n] @@ -27659,14 +27261,12 @@ func (p projNEBoolBoolConstOp) Next() coldata.Batch { col := col projCol := projVec.Bool() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -27690,7 +27290,7 @@ func (p projNEBoolBoolConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -27783,14 +27383,12 @@ func (p projNEBytesBytesConstOp) Next() coldata.Batch { col := col projCol := projVec.Bool() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -27806,7 +27404,7 @@ func (p projNEBytesBytesConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -27873,14 +27471,12 @@ func (p projNEDecimalInt16ConstOp) Next() coldata.Batch { col := col projCol := projVec.Bool() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -27902,7 +27498,7 @@ func (p projNEDecimalInt16ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -27989,14 +27585,12 @@ func (p projNEDecimalInt32ConstOp) Next() coldata.Batch { col := col projCol := projVec.Bool() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -28018,7 +27612,7 @@ func (p projNEDecimalInt32ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -28105,14 +27699,12 @@ func (p projNEDecimalInt64ConstOp) Next() coldata.Batch { col := col projCol := projVec.Bool() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -28134,7 +27726,7 @@ func (p projNEDecimalInt64ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -28221,14 +27813,12 @@ func (p projNEDecimalFloat64ConstOp) Next() coldata.Batch { col := col projCol := projVec.Bool() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -28252,7 +27842,7 @@ func (p projNEDecimalFloat64ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -28345,14 +27935,12 @@ func (p projNEDecimalDecimalConstOp) Next() coldata.Batch { col := col projCol := projVec.Bool() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -28368,7 +27956,7 @@ func (p projNEDecimalDecimalConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -28437,14 +28025,12 @@ func (p projNEInt16Int16ConstOp) Next() coldata.Batch { col := col projCol := projVec.Bool() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -28471,7 +28057,7 @@ func (p projNEInt16Int16ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -28573,14 +28159,12 @@ func (p projNEInt16Int32ConstOp) Next() coldata.Batch { col := col projCol := projVec.Bool() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -28607,7 +28191,7 @@ func (p projNEInt16Int32ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -28709,14 +28293,12 @@ func (p projNEInt16Int64ConstOp) Next() coldata.Batch { col := col projCol := projVec.Bool() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -28743,7 +28325,7 @@ func (p projNEInt16Int64ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -28845,14 +28427,12 @@ func (p projNEInt16Float64ConstOp) Next() coldata.Batch { col := col projCol := projVec.Bool() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -28887,7 +28467,7 @@ func (p projNEInt16Float64ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -29013,14 +28593,12 @@ func (p projNEInt16DecimalConstOp) Next() coldata.Batch { col := col projCol := projVec.Bool() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -29042,7 +28620,7 @@ func (p projNEInt16DecimalConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -29129,14 +28707,12 @@ func (p projNEInt32Int16ConstOp) Next() coldata.Batch { col := col projCol := projVec.Bool() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -29163,7 +28739,7 @@ func (p projNEInt32Int16ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -29265,14 +28841,12 @@ func (p projNEInt32Int32ConstOp) Next() coldata.Batch { col := col projCol := projVec.Bool() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -29299,7 +28873,7 @@ func (p projNEInt32Int32ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -29401,14 +28975,12 @@ func (p projNEInt32Int64ConstOp) Next() coldata.Batch { col := col projCol := projVec.Bool() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -29435,7 +29007,7 @@ func (p projNEInt32Int64ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -29537,14 +29109,12 @@ func (p projNEInt32Float64ConstOp) Next() coldata.Batch { col := col projCol := projVec.Bool() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -29579,7 +29149,7 @@ func (p projNEInt32Float64ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -29705,14 +29275,12 @@ func (p projNEInt32DecimalConstOp) Next() coldata.Batch { col := col projCol := projVec.Bool() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -29734,7 +29302,7 @@ func (p projNEInt32DecimalConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -29821,14 +29389,12 @@ func (p projNEInt64Int16ConstOp) Next() coldata.Batch { col := col projCol := projVec.Bool() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -29855,7 +29421,7 @@ func (p projNEInt64Int16ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -29957,14 +29523,12 @@ func (p projNEInt64Int32ConstOp) Next() coldata.Batch { col := col projCol := projVec.Bool() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -29991,7 +29555,7 @@ func (p projNEInt64Int32ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -30093,14 +29657,12 @@ func (p projNEInt64Int64ConstOp) Next() coldata.Batch { col := col projCol := projVec.Bool() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -30127,7 +29689,7 @@ func (p projNEInt64Int64ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -30229,14 +29791,12 @@ func (p projNEInt64Float64ConstOp) Next() coldata.Batch { col := col projCol := projVec.Bool() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -30271,7 +29831,7 @@ func (p projNEInt64Float64ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -30397,14 +29957,12 @@ func (p projNEInt64DecimalConstOp) Next() coldata.Batch { col := col projCol := projVec.Bool() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -30426,7 +29984,7 @@ func (p projNEInt64DecimalConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -30513,14 +30071,12 @@ func (p projNEFloat64Int16ConstOp) Next() coldata.Batch { col := col projCol := projVec.Bool() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -30555,7 +30111,7 @@ func (p projNEFloat64Int16ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -30681,14 +30237,12 @@ func (p projNEFloat64Int32ConstOp) Next() coldata.Batch { col := col projCol := projVec.Bool() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -30723,7 +30277,7 @@ func (p projNEFloat64Int32ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -30849,14 +30403,12 @@ func (p projNEFloat64Int64ConstOp) Next() coldata.Batch { col := col projCol := projVec.Bool() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -30891,7 +30443,7 @@ func (p projNEFloat64Int64ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -31017,14 +30569,12 @@ func (p projNEFloat64Float64ConstOp) Next() coldata.Batch { col := col projCol := projVec.Bool() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -31059,7 +30609,7 @@ func (p projNEFloat64Float64ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -31185,14 +30735,12 @@ func (p projNEFloat64DecimalConstOp) Next() coldata.Batch { col := col projCol := projVec.Bool() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -31216,7 +30764,7 @@ func (p projNEFloat64DecimalConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -31309,14 +30857,12 @@ func (p projNETimestampTimestampConstOp) Next() coldata.Batch { col := col projCol := projVec.Bool() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -31339,7 +30885,7 @@ func (p projNETimestampTimestampConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -31429,14 +30975,12 @@ func (p projNEIntervalIntervalConstOp) Next() coldata.Batch { col := col projCol := projVec.Bool() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -31452,7 +30996,7 @@ func (p projNEIntervalIntervalConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -31521,14 +31065,12 @@ func (p projNEJSONJSONConstOp) Next() coldata.Batch { col := col projCol := projVec.Bool() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -31550,7 +31092,7 @@ func (p projNEJSONJSONConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -31635,16 +31177,23 @@ func (p projNEDatumDatumConstOp) Next() coldata.Batch { col := col projCol := projVec.Bool() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() && !p.calledOnNullInput - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) + if colNulls.NullAt(i) { + // If we entered this branch for a null value, calledOnNullInput must be + // true. This means the projection should be calculated on null arguments. + // When a value is null, the underlying data in the slice is invalid and + // can be anything, so we need to overwrite it here. calledOnNullInput is + // currently only true for ConcatDatumDatum, so only the datum case needs + // to be handled. + arg = tree.DNull + } { var cmpResult int @@ -31660,9 +31209,18 @@ func (p projNEDatumDatumConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) + if colNulls.NullAt(i) { + // If we entered this branch for a null value, calledOnNullInput must be + // true. This means the projection should be calculated on null arguments. + // When a value is null, the underlying data in the slice is invalid and + // can be anything, so we need to overwrite it here. calledOnNullInput is + // currently only true for ConcatDatumDatum, so only the datum case needs + // to be handled. + arg = tree.DNull + } { var cmpResult int @@ -31675,7 +31233,9 @@ func (p projNEDatumDatumConstOp) Next() coldata.Batch { } } } - projVec.SetNulls(_outNulls.Or(*colNulls)) + if !p.calledOnNullInput { + projVec.SetNulls(_outNulls.Or(*colNulls)) + } } else { if sel := batch.Selection(); sel != nil { sel = sel[:n] @@ -31733,14 +31293,12 @@ func (p projLTBoolBoolConstOp) Next() coldata.Batch { col := col projCol := projVec.Bool() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -31764,7 +31322,7 @@ func (p projLTBoolBoolConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -31857,14 +31415,12 @@ func (p projLTBytesBytesConstOp) Next() coldata.Batch { col := col projCol := projVec.Bool() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -31880,7 +31436,7 @@ func (p projLTBytesBytesConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -31947,14 +31503,12 @@ func (p projLTDecimalInt16ConstOp) Next() coldata.Batch { col := col projCol := projVec.Bool() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -31976,7 +31530,7 @@ func (p projLTDecimalInt16ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -32063,14 +31617,12 @@ func (p projLTDecimalInt32ConstOp) Next() coldata.Batch { col := col projCol := projVec.Bool() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -32092,7 +31644,7 @@ func (p projLTDecimalInt32ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -32179,14 +31731,12 @@ func (p projLTDecimalInt64ConstOp) Next() coldata.Batch { col := col projCol := projVec.Bool() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -32208,7 +31758,7 @@ func (p projLTDecimalInt64ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -32295,14 +31845,12 @@ func (p projLTDecimalFloat64ConstOp) Next() coldata.Batch { col := col projCol := projVec.Bool() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -32326,7 +31874,7 @@ func (p projLTDecimalFloat64ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -32419,14 +31967,12 @@ func (p projLTDecimalDecimalConstOp) Next() coldata.Batch { col := col projCol := projVec.Bool() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -32442,7 +31988,7 @@ func (p projLTDecimalDecimalConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -32511,14 +32057,12 @@ func (p projLTInt16Int16ConstOp) Next() coldata.Batch { col := col projCol := projVec.Bool() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -32545,7 +32089,7 @@ func (p projLTInt16Int16ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -32647,14 +32191,12 @@ func (p projLTInt16Int32ConstOp) Next() coldata.Batch { col := col projCol := projVec.Bool() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -32681,7 +32223,7 @@ func (p projLTInt16Int32ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -32783,14 +32325,12 @@ func (p projLTInt16Int64ConstOp) Next() coldata.Batch { col := col projCol := projVec.Bool() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -32817,7 +32357,7 @@ func (p projLTInt16Int64ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -32919,14 +32459,12 @@ func (p projLTInt16Float64ConstOp) Next() coldata.Batch { col := col projCol := projVec.Bool() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -32961,7 +32499,7 @@ func (p projLTInt16Float64ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -33087,14 +32625,12 @@ func (p projLTInt16DecimalConstOp) Next() coldata.Batch { col := col projCol := projVec.Bool() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -33116,7 +32652,7 @@ func (p projLTInt16DecimalConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -33203,14 +32739,12 @@ func (p projLTInt32Int16ConstOp) Next() coldata.Batch { col := col projCol := projVec.Bool() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -33237,7 +32771,7 @@ func (p projLTInt32Int16ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -33339,14 +32873,12 @@ func (p projLTInt32Int32ConstOp) Next() coldata.Batch { col := col projCol := projVec.Bool() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -33373,7 +32905,7 @@ func (p projLTInt32Int32ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -33475,14 +33007,12 @@ func (p projLTInt32Int64ConstOp) Next() coldata.Batch { col := col projCol := projVec.Bool() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -33509,7 +33039,7 @@ func (p projLTInt32Int64ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -33611,14 +33141,12 @@ func (p projLTInt32Float64ConstOp) Next() coldata.Batch { col := col projCol := projVec.Bool() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -33653,7 +33181,7 @@ func (p projLTInt32Float64ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -33779,14 +33307,12 @@ func (p projLTInt32DecimalConstOp) Next() coldata.Batch { col := col projCol := projVec.Bool() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -33808,7 +33334,7 @@ func (p projLTInt32DecimalConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -33895,14 +33421,12 @@ func (p projLTInt64Int16ConstOp) Next() coldata.Batch { col := col projCol := projVec.Bool() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -33929,7 +33453,7 @@ func (p projLTInt64Int16ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -34031,14 +33555,12 @@ func (p projLTInt64Int32ConstOp) Next() coldata.Batch { col := col projCol := projVec.Bool() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -34065,7 +33587,7 @@ func (p projLTInt64Int32ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -34167,14 +33689,12 @@ func (p projLTInt64Int64ConstOp) Next() coldata.Batch { col := col projCol := projVec.Bool() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -34201,7 +33721,7 @@ func (p projLTInt64Int64ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -34303,14 +33823,12 @@ func (p projLTInt64Float64ConstOp) Next() coldata.Batch { col := col projCol := projVec.Bool() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -34345,7 +33863,7 @@ func (p projLTInt64Float64ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -34471,14 +33989,12 @@ func (p projLTInt64DecimalConstOp) Next() coldata.Batch { col := col projCol := projVec.Bool() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -34500,7 +34016,7 @@ func (p projLTInt64DecimalConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -34587,14 +34103,12 @@ func (p projLTFloat64Int16ConstOp) Next() coldata.Batch { col := col projCol := projVec.Bool() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -34629,7 +34143,7 @@ func (p projLTFloat64Int16ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -34755,14 +34269,12 @@ func (p projLTFloat64Int32ConstOp) Next() coldata.Batch { col := col projCol := projVec.Bool() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -34797,7 +34309,7 @@ func (p projLTFloat64Int32ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -34923,14 +34435,12 @@ func (p projLTFloat64Int64ConstOp) Next() coldata.Batch { col := col projCol := projVec.Bool() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -34965,7 +34475,7 @@ func (p projLTFloat64Int64ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -35091,14 +34601,12 @@ func (p projLTFloat64Float64ConstOp) Next() coldata.Batch { col := col projCol := projVec.Bool() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -35133,7 +34641,7 @@ func (p projLTFloat64Float64ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -35259,14 +34767,12 @@ func (p projLTFloat64DecimalConstOp) Next() coldata.Batch { col := col projCol := projVec.Bool() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -35290,7 +34796,7 @@ func (p projLTFloat64DecimalConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -35383,14 +34889,12 @@ func (p projLTTimestampTimestampConstOp) Next() coldata.Batch { col := col projCol := projVec.Bool() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -35413,7 +34917,7 @@ func (p projLTTimestampTimestampConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -35503,14 +35007,12 @@ func (p projLTIntervalIntervalConstOp) Next() coldata.Batch { col := col projCol := projVec.Bool() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -35526,7 +35028,7 @@ func (p projLTIntervalIntervalConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -35595,14 +35097,12 @@ func (p projLTJSONJSONConstOp) Next() coldata.Batch { col := col projCol := projVec.Bool() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -35624,7 +35124,7 @@ func (p projLTJSONJSONConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -35709,16 +35209,23 @@ func (p projLTDatumDatumConstOp) Next() coldata.Batch { col := col projCol := projVec.Bool() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() && !p.calledOnNullInput - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) + if colNulls.NullAt(i) { + // If we entered this branch for a null value, calledOnNullInput must be + // true. This means the projection should be calculated on null arguments. + // When a value is null, the underlying data in the slice is invalid and + // can be anything, so we need to overwrite it here. calledOnNullInput is + // currently only true for ConcatDatumDatum, so only the datum case needs + // to be handled. + arg = tree.DNull + } { var cmpResult int @@ -35734,9 +35241,18 @@ func (p projLTDatumDatumConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) + if colNulls.NullAt(i) { + // If we entered this branch for a null value, calledOnNullInput must be + // true. This means the projection should be calculated on null arguments. + // When a value is null, the underlying data in the slice is invalid and + // can be anything, so we need to overwrite it here. calledOnNullInput is + // currently only true for ConcatDatumDatum, so only the datum case needs + // to be handled. + arg = tree.DNull + } { var cmpResult int @@ -35749,7 +35265,9 @@ func (p projLTDatumDatumConstOp) Next() coldata.Batch { } } } - projVec.SetNulls(_outNulls.Or(*colNulls)) + if !p.calledOnNullInput { + projVec.SetNulls(_outNulls.Or(*colNulls)) + } } else { if sel := batch.Selection(); sel != nil { sel = sel[:n] @@ -35807,14 +35325,12 @@ func (p projLEBoolBoolConstOp) Next() coldata.Batch { col := col projCol := projVec.Bool() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -35838,7 +35354,7 @@ func (p projLEBoolBoolConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -35931,14 +35447,12 @@ func (p projLEBytesBytesConstOp) Next() coldata.Batch { col := col projCol := projVec.Bool() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -35954,7 +35468,7 @@ func (p projLEBytesBytesConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -36021,14 +35535,12 @@ func (p projLEDecimalInt16ConstOp) Next() coldata.Batch { col := col projCol := projVec.Bool() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -36050,7 +35562,7 @@ func (p projLEDecimalInt16ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -36137,14 +35649,12 @@ func (p projLEDecimalInt32ConstOp) Next() coldata.Batch { col := col projCol := projVec.Bool() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -36166,7 +35676,7 @@ func (p projLEDecimalInt32ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -36253,14 +35763,12 @@ func (p projLEDecimalInt64ConstOp) Next() coldata.Batch { col := col projCol := projVec.Bool() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -36282,7 +35790,7 @@ func (p projLEDecimalInt64ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -36369,14 +35877,12 @@ func (p projLEDecimalFloat64ConstOp) Next() coldata.Batch { col := col projCol := projVec.Bool() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -36400,7 +35906,7 @@ func (p projLEDecimalFloat64ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -36493,14 +35999,12 @@ func (p projLEDecimalDecimalConstOp) Next() coldata.Batch { col := col projCol := projVec.Bool() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -36516,7 +36020,7 @@ func (p projLEDecimalDecimalConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -36585,14 +36089,12 @@ func (p projLEInt16Int16ConstOp) Next() coldata.Batch { col := col projCol := projVec.Bool() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -36619,7 +36121,7 @@ func (p projLEInt16Int16ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -36721,14 +36223,12 @@ func (p projLEInt16Int32ConstOp) Next() coldata.Batch { col := col projCol := projVec.Bool() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -36755,7 +36255,7 @@ func (p projLEInt16Int32ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -36857,14 +36357,12 @@ func (p projLEInt16Int64ConstOp) Next() coldata.Batch { col := col projCol := projVec.Bool() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -36891,7 +36389,7 @@ func (p projLEInt16Int64ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -36993,14 +36491,12 @@ func (p projLEInt16Float64ConstOp) Next() coldata.Batch { col := col projCol := projVec.Bool() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -37035,7 +36531,7 @@ func (p projLEInt16Float64ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -37161,14 +36657,12 @@ func (p projLEInt16DecimalConstOp) Next() coldata.Batch { col := col projCol := projVec.Bool() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -37190,7 +36684,7 @@ func (p projLEInt16DecimalConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -37277,14 +36771,12 @@ func (p projLEInt32Int16ConstOp) Next() coldata.Batch { col := col projCol := projVec.Bool() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -37311,7 +36803,7 @@ func (p projLEInt32Int16ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -37413,14 +36905,12 @@ func (p projLEInt32Int32ConstOp) Next() coldata.Batch { col := col projCol := projVec.Bool() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -37447,7 +36937,7 @@ func (p projLEInt32Int32ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -37549,14 +37039,12 @@ func (p projLEInt32Int64ConstOp) Next() coldata.Batch { col := col projCol := projVec.Bool() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -37583,7 +37071,7 @@ func (p projLEInt32Int64ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -37685,14 +37173,12 @@ func (p projLEInt32Float64ConstOp) Next() coldata.Batch { col := col projCol := projVec.Bool() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -37727,7 +37213,7 @@ func (p projLEInt32Float64ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -37853,14 +37339,12 @@ func (p projLEInt32DecimalConstOp) Next() coldata.Batch { col := col projCol := projVec.Bool() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -37882,7 +37366,7 @@ func (p projLEInt32DecimalConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -37969,14 +37453,12 @@ func (p projLEInt64Int16ConstOp) Next() coldata.Batch { col := col projCol := projVec.Bool() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -38003,7 +37485,7 @@ func (p projLEInt64Int16ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -38105,14 +37587,12 @@ func (p projLEInt64Int32ConstOp) Next() coldata.Batch { col := col projCol := projVec.Bool() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -38139,7 +37619,7 @@ func (p projLEInt64Int32ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -38241,14 +37721,12 @@ func (p projLEInt64Int64ConstOp) Next() coldata.Batch { col := col projCol := projVec.Bool() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -38275,7 +37753,7 @@ func (p projLEInt64Int64ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -38377,14 +37855,12 @@ func (p projLEInt64Float64ConstOp) Next() coldata.Batch { col := col projCol := projVec.Bool() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -38419,7 +37895,7 @@ func (p projLEInt64Float64ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -38545,14 +38021,12 @@ func (p projLEInt64DecimalConstOp) Next() coldata.Batch { col := col projCol := projVec.Bool() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -38574,7 +38048,7 @@ func (p projLEInt64DecimalConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -38661,14 +38135,12 @@ func (p projLEFloat64Int16ConstOp) Next() coldata.Batch { col := col projCol := projVec.Bool() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -38703,7 +38175,7 @@ func (p projLEFloat64Int16ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -38829,14 +38301,12 @@ func (p projLEFloat64Int32ConstOp) Next() coldata.Batch { col := col projCol := projVec.Bool() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -38871,7 +38341,7 @@ func (p projLEFloat64Int32ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -38997,14 +38467,12 @@ func (p projLEFloat64Int64ConstOp) Next() coldata.Batch { col := col projCol := projVec.Bool() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -39039,7 +38507,7 @@ func (p projLEFloat64Int64ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -39165,14 +38633,12 @@ func (p projLEFloat64Float64ConstOp) Next() coldata.Batch { col := col projCol := projVec.Bool() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -39207,7 +38673,7 @@ func (p projLEFloat64Float64ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -39333,14 +38799,12 @@ func (p projLEFloat64DecimalConstOp) Next() coldata.Batch { col := col projCol := projVec.Bool() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -39364,7 +38828,7 @@ func (p projLEFloat64DecimalConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -39457,14 +38921,12 @@ func (p projLETimestampTimestampConstOp) Next() coldata.Batch { col := col projCol := projVec.Bool() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -39487,7 +38949,7 @@ func (p projLETimestampTimestampConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -39577,14 +39039,12 @@ func (p projLEIntervalIntervalConstOp) Next() coldata.Batch { col := col projCol := projVec.Bool() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -39600,7 +39060,7 @@ func (p projLEIntervalIntervalConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -39669,14 +39129,12 @@ func (p projLEJSONJSONConstOp) Next() coldata.Batch { col := col projCol := projVec.Bool() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -39698,7 +39156,7 @@ func (p projLEJSONJSONConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -39783,16 +39241,23 @@ func (p projLEDatumDatumConstOp) Next() coldata.Batch { col := col projCol := projVec.Bool() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() && !p.calledOnNullInput - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) + if colNulls.NullAt(i) { + // If we entered this branch for a null value, calledOnNullInput must be + // true. This means the projection should be calculated on null arguments. + // When a value is null, the underlying data in the slice is invalid and + // can be anything, so we need to overwrite it here. calledOnNullInput is + // currently only true for ConcatDatumDatum, so only the datum case needs + // to be handled. + arg = tree.DNull + } { var cmpResult int @@ -39808,9 +39273,18 @@ func (p projLEDatumDatumConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) + if colNulls.NullAt(i) { + // If we entered this branch for a null value, calledOnNullInput must be + // true. This means the projection should be calculated on null arguments. + // When a value is null, the underlying data in the slice is invalid and + // can be anything, so we need to overwrite it here. calledOnNullInput is + // currently only true for ConcatDatumDatum, so only the datum case needs + // to be handled. + arg = tree.DNull + } { var cmpResult int @@ -39823,7 +39297,9 @@ func (p projLEDatumDatumConstOp) Next() coldata.Batch { } } } - projVec.SetNulls(_outNulls.Or(*colNulls)) + if !p.calledOnNullInput { + projVec.SetNulls(_outNulls.Or(*colNulls)) + } } else { if sel := batch.Selection(); sel != nil { sel = sel[:n] @@ -39881,14 +39357,12 @@ func (p projGTBoolBoolConstOp) Next() coldata.Batch { col := col projCol := projVec.Bool() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -39912,7 +39386,7 @@ func (p projGTBoolBoolConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -40005,14 +39479,12 @@ func (p projGTBytesBytesConstOp) Next() coldata.Batch { col := col projCol := projVec.Bool() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -40028,7 +39500,7 @@ func (p projGTBytesBytesConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -40095,14 +39567,12 @@ func (p projGTDecimalInt16ConstOp) Next() coldata.Batch { col := col projCol := projVec.Bool() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -40124,7 +39594,7 @@ func (p projGTDecimalInt16ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -40211,14 +39681,12 @@ func (p projGTDecimalInt32ConstOp) Next() coldata.Batch { col := col projCol := projVec.Bool() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -40240,7 +39708,7 @@ func (p projGTDecimalInt32ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -40327,14 +39795,12 @@ func (p projGTDecimalInt64ConstOp) Next() coldata.Batch { col := col projCol := projVec.Bool() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -40356,7 +39822,7 @@ func (p projGTDecimalInt64ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -40443,14 +39909,12 @@ func (p projGTDecimalFloat64ConstOp) Next() coldata.Batch { col := col projCol := projVec.Bool() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -40474,7 +39938,7 @@ func (p projGTDecimalFloat64ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -40567,14 +40031,12 @@ func (p projGTDecimalDecimalConstOp) Next() coldata.Batch { col := col projCol := projVec.Bool() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -40590,7 +40052,7 @@ func (p projGTDecimalDecimalConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -40659,14 +40121,12 @@ func (p projGTInt16Int16ConstOp) Next() coldata.Batch { col := col projCol := projVec.Bool() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -40693,7 +40153,7 @@ func (p projGTInt16Int16ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -40795,14 +40255,12 @@ func (p projGTInt16Int32ConstOp) Next() coldata.Batch { col := col projCol := projVec.Bool() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -40829,7 +40287,7 @@ func (p projGTInt16Int32ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -40931,14 +40389,12 @@ func (p projGTInt16Int64ConstOp) Next() coldata.Batch { col := col projCol := projVec.Bool() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -40965,7 +40421,7 @@ func (p projGTInt16Int64ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -41067,14 +40523,12 @@ func (p projGTInt16Float64ConstOp) Next() coldata.Batch { col := col projCol := projVec.Bool() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -41109,7 +40563,7 @@ func (p projGTInt16Float64ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -41235,14 +40689,12 @@ func (p projGTInt16DecimalConstOp) Next() coldata.Batch { col := col projCol := projVec.Bool() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -41264,7 +40716,7 @@ func (p projGTInt16DecimalConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -41351,14 +40803,12 @@ func (p projGTInt32Int16ConstOp) Next() coldata.Batch { col := col projCol := projVec.Bool() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -41385,7 +40835,7 @@ func (p projGTInt32Int16ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -41487,14 +40937,12 @@ func (p projGTInt32Int32ConstOp) Next() coldata.Batch { col := col projCol := projVec.Bool() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -41521,7 +40969,7 @@ func (p projGTInt32Int32ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -41623,14 +41071,12 @@ func (p projGTInt32Int64ConstOp) Next() coldata.Batch { col := col projCol := projVec.Bool() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -41657,7 +41103,7 @@ func (p projGTInt32Int64ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -41759,14 +41205,12 @@ func (p projGTInt32Float64ConstOp) Next() coldata.Batch { col := col projCol := projVec.Bool() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -41801,7 +41245,7 @@ func (p projGTInt32Float64ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -41927,14 +41371,12 @@ func (p projGTInt32DecimalConstOp) Next() coldata.Batch { col := col projCol := projVec.Bool() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -41956,7 +41398,7 @@ func (p projGTInt32DecimalConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -42043,14 +41485,12 @@ func (p projGTInt64Int16ConstOp) Next() coldata.Batch { col := col projCol := projVec.Bool() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -42077,7 +41517,7 @@ func (p projGTInt64Int16ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -42179,14 +41619,12 @@ func (p projGTInt64Int32ConstOp) Next() coldata.Batch { col := col projCol := projVec.Bool() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -42213,7 +41651,7 @@ func (p projGTInt64Int32ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -42315,14 +41753,12 @@ func (p projGTInt64Int64ConstOp) Next() coldata.Batch { col := col projCol := projVec.Bool() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -42349,7 +41785,7 @@ func (p projGTInt64Int64ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -42451,14 +41887,12 @@ func (p projGTInt64Float64ConstOp) Next() coldata.Batch { col := col projCol := projVec.Bool() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -42493,7 +41927,7 @@ func (p projGTInt64Float64ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -42619,14 +42053,12 @@ func (p projGTInt64DecimalConstOp) Next() coldata.Batch { col := col projCol := projVec.Bool() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -42648,7 +42080,7 @@ func (p projGTInt64DecimalConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -42735,14 +42167,12 @@ func (p projGTFloat64Int16ConstOp) Next() coldata.Batch { col := col projCol := projVec.Bool() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -42777,7 +42207,7 @@ func (p projGTFloat64Int16ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -42903,14 +42333,12 @@ func (p projGTFloat64Int32ConstOp) Next() coldata.Batch { col := col projCol := projVec.Bool() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -42945,7 +42373,7 @@ func (p projGTFloat64Int32ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -43071,14 +42499,12 @@ func (p projGTFloat64Int64ConstOp) Next() coldata.Batch { col := col projCol := projVec.Bool() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -43113,7 +42539,7 @@ func (p projGTFloat64Int64ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -43239,14 +42665,12 @@ func (p projGTFloat64Float64ConstOp) Next() coldata.Batch { col := col projCol := projVec.Bool() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -43281,7 +42705,7 @@ func (p projGTFloat64Float64ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -43407,14 +42831,12 @@ func (p projGTFloat64DecimalConstOp) Next() coldata.Batch { col := col projCol := projVec.Bool() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -43438,7 +42860,7 @@ func (p projGTFloat64DecimalConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -43531,14 +42953,12 @@ func (p projGTTimestampTimestampConstOp) Next() coldata.Batch { col := col projCol := projVec.Bool() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -43561,7 +42981,7 @@ func (p projGTTimestampTimestampConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -43651,14 +43071,12 @@ func (p projGTIntervalIntervalConstOp) Next() coldata.Batch { col := col projCol := projVec.Bool() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -43674,7 +43092,7 @@ func (p projGTIntervalIntervalConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -43743,14 +43161,12 @@ func (p projGTJSONJSONConstOp) Next() coldata.Batch { col := col projCol := projVec.Bool() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -43772,7 +43188,7 @@ func (p projGTJSONJSONConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -43857,16 +43273,23 @@ func (p projGTDatumDatumConstOp) Next() coldata.Batch { col := col projCol := projVec.Bool() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() && !p.calledOnNullInput - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) + if colNulls.NullAt(i) { + // If we entered this branch for a null value, calledOnNullInput must be + // true. This means the projection should be calculated on null arguments. + // When a value is null, the underlying data in the slice is invalid and + // can be anything, so we need to overwrite it here. calledOnNullInput is + // currently only true for ConcatDatumDatum, so only the datum case needs + // to be handled. + arg = tree.DNull + } { var cmpResult int @@ -43882,9 +43305,18 @@ func (p projGTDatumDatumConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) + if colNulls.NullAt(i) { + // If we entered this branch for a null value, calledOnNullInput must be + // true. This means the projection should be calculated on null arguments. + // When a value is null, the underlying data in the slice is invalid and + // can be anything, so we need to overwrite it here. calledOnNullInput is + // currently only true for ConcatDatumDatum, so only the datum case needs + // to be handled. + arg = tree.DNull + } { var cmpResult int @@ -43897,7 +43329,9 @@ func (p projGTDatumDatumConstOp) Next() coldata.Batch { } } } - projVec.SetNulls(_outNulls.Or(*colNulls)) + if !p.calledOnNullInput { + projVec.SetNulls(_outNulls.Or(*colNulls)) + } } else { if sel := batch.Selection(); sel != nil { sel = sel[:n] @@ -43955,14 +43389,12 @@ func (p projGEBoolBoolConstOp) Next() coldata.Batch { col := col projCol := projVec.Bool() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -43986,7 +43418,7 @@ func (p projGEBoolBoolConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -44079,14 +43511,12 @@ func (p projGEBytesBytesConstOp) Next() coldata.Batch { col := col projCol := projVec.Bool() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -44102,7 +43532,7 @@ func (p projGEBytesBytesConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -44169,14 +43599,12 @@ func (p projGEDecimalInt16ConstOp) Next() coldata.Batch { col := col projCol := projVec.Bool() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -44198,7 +43626,7 @@ func (p projGEDecimalInt16ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -44285,14 +43713,12 @@ func (p projGEDecimalInt32ConstOp) Next() coldata.Batch { col := col projCol := projVec.Bool() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -44314,7 +43740,7 @@ func (p projGEDecimalInt32ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -44401,14 +43827,12 @@ func (p projGEDecimalInt64ConstOp) Next() coldata.Batch { col := col projCol := projVec.Bool() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -44430,7 +43854,7 @@ func (p projGEDecimalInt64ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -44517,14 +43941,12 @@ func (p projGEDecimalFloat64ConstOp) Next() coldata.Batch { col := col projCol := projVec.Bool() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -44548,7 +43970,7 @@ func (p projGEDecimalFloat64ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -44641,14 +44063,12 @@ func (p projGEDecimalDecimalConstOp) Next() coldata.Batch { col := col projCol := projVec.Bool() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -44664,7 +44084,7 @@ func (p projGEDecimalDecimalConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -44733,14 +44153,12 @@ func (p projGEInt16Int16ConstOp) Next() coldata.Batch { col := col projCol := projVec.Bool() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -44767,7 +44185,7 @@ func (p projGEInt16Int16ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -44869,14 +44287,12 @@ func (p projGEInt16Int32ConstOp) Next() coldata.Batch { col := col projCol := projVec.Bool() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -44903,7 +44319,7 @@ func (p projGEInt16Int32ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -45005,14 +44421,12 @@ func (p projGEInt16Int64ConstOp) Next() coldata.Batch { col := col projCol := projVec.Bool() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -45039,7 +44453,7 @@ func (p projGEInt16Int64ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -45141,14 +44555,12 @@ func (p projGEInt16Float64ConstOp) Next() coldata.Batch { col := col projCol := projVec.Bool() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -45183,7 +44595,7 @@ func (p projGEInt16Float64ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -45309,14 +44721,12 @@ func (p projGEInt16DecimalConstOp) Next() coldata.Batch { col := col projCol := projVec.Bool() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -45338,7 +44748,7 @@ func (p projGEInt16DecimalConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -45425,14 +44835,12 @@ func (p projGEInt32Int16ConstOp) Next() coldata.Batch { col := col projCol := projVec.Bool() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -45459,7 +44867,7 @@ func (p projGEInt32Int16ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -45561,14 +44969,12 @@ func (p projGEInt32Int32ConstOp) Next() coldata.Batch { col := col projCol := projVec.Bool() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -45595,7 +45001,7 @@ func (p projGEInt32Int32ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -45697,14 +45103,12 @@ func (p projGEInt32Int64ConstOp) Next() coldata.Batch { col := col projCol := projVec.Bool() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -45731,7 +45135,7 @@ func (p projGEInt32Int64ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -45833,14 +45237,12 @@ func (p projGEInt32Float64ConstOp) Next() coldata.Batch { col := col projCol := projVec.Bool() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -45875,7 +45277,7 @@ func (p projGEInt32Float64ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -46001,14 +45403,12 @@ func (p projGEInt32DecimalConstOp) Next() coldata.Batch { col := col projCol := projVec.Bool() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -46030,7 +45430,7 @@ func (p projGEInt32DecimalConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -46117,14 +45517,12 @@ func (p projGEInt64Int16ConstOp) Next() coldata.Batch { col := col projCol := projVec.Bool() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -46151,7 +45549,7 @@ func (p projGEInt64Int16ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -46253,14 +45651,12 @@ func (p projGEInt64Int32ConstOp) Next() coldata.Batch { col := col projCol := projVec.Bool() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -46287,7 +45683,7 @@ func (p projGEInt64Int32ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -46389,14 +45785,12 @@ func (p projGEInt64Int64ConstOp) Next() coldata.Batch { col := col projCol := projVec.Bool() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -46423,7 +45817,7 @@ func (p projGEInt64Int64ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -46525,14 +45919,12 @@ func (p projGEInt64Float64ConstOp) Next() coldata.Batch { col := col projCol := projVec.Bool() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -46567,7 +45959,7 @@ func (p projGEInt64Float64ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -46693,14 +46085,12 @@ func (p projGEInt64DecimalConstOp) Next() coldata.Batch { col := col projCol := projVec.Bool() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -46722,7 +46112,7 @@ func (p projGEInt64DecimalConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -46809,14 +46199,12 @@ func (p projGEFloat64Int16ConstOp) Next() coldata.Batch { col := col projCol := projVec.Bool() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -46851,7 +46239,7 @@ func (p projGEFloat64Int16ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -46977,14 +46365,12 @@ func (p projGEFloat64Int32ConstOp) Next() coldata.Batch { col := col projCol := projVec.Bool() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -47019,7 +46405,7 @@ func (p projGEFloat64Int32ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -47145,14 +46531,12 @@ func (p projGEFloat64Int64ConstOp) Next() coldata.Batch { col := col projCol := projVec.Bool() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -47187,7 +46571,7 @@ func (p projGEFloat64Int64ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -47313,14 +46697,12 @@ func (p projGEFloat64Float64ConstOp) Next() coldata.Batch { col := col projCol := projVec.Bool() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -47355,7 +46737,7 @@ func (p projGEFloat64Float64ConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -47481,14 +46863,12 @@ func (p projGEFloat64DecimalConstOp) Next() coldata.Batch { col := col projCol := projVec.Bool() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -47512,7 +46892,7 @@ func (p projGEFloat64DecimalConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -47605,14 +46985,12 @@ func (p projGETimestampTimestampConstOp) Next() coldata.Batch { col := col projCol := projVec.Bool() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -47635,7 +47013,7 @@ func (p projGETimestampTimestampConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -47725,14 +47103,12 @@ func (p projGEIntervalIntervalConstOp) Next() coldata.Batch { col := col projCol := projVec.Bool() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -47748,7 +47124,7 @@ func (p projGEIntervalIntervalConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. //gcassert:bce arg := col.Get(i) @@ -47817,14 +47193,12 @@ func (p projGEJSONJSONConstOp) Next() coldata.Batch { col := col projCol := projVec.Bool() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -47846,7 +47220,7 @@ func (p projGEJSONJSONConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -47931,16 +47305,23 @@ func (p projGEDatumDatumConstOp) Next() coldata.Batch { col := col projCol := projVec.Bool() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() && !p.calledOnNullInput - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) + if colNulls.NullAt(i) { + // If we entered this branch for a null value, calledOnNullInput must be + // true. This means the projection should be calculated on null arguments. + // When a value is null, the underlying data in the slice is invalid and + // can be anything, so we need to overwrite it here. calledOnNullInput is + // currently only true for ConcatDatumDatum, so only the datum case needs + // to be handled. + arg = tree.DNull + } { var cmpResult int @@ -47956,9 +47337,18 @@ func (p projGEDatumDatumConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) + if colNulls.NullAt(i) { + // If we entered this branch for a null value, calledOnNullInput must be + // true. This means the projection should be calculated on null arguments. + // When a value is null, the underlying data in the slice is invalid and + // can be anything, so we need to overwrite it here. calledOnNullInput is + // currently only true for ConcatDatumDatum, so only the datum case needs + // to be handled. + arg = tree.DNull + } { var cmpResult int @@ -47971,7 +47361,9 @@ func (p projGEDatumDatumConstOp) Next() coldata.Batch { } } } - projVec.SetNulls(_outNulls.Or(*colNulls)) + if !p.calledOnNullInput { + projVec.SetNulls(_outNulls.Or(*colNulls)) + } } else { if sel := batch.Selection(); sel != nil { sel = sel[:n] diff --git a/pkg/sql/colexec/colexecprojconst/proj_like_ops.eg.go b/pkg/sql/colexec/colexecprojconst/proj_like_ops.eg.go index 343097b92124..b15ae29fc557 100644 --- a/pkg/sql/colexec/colexecprojconst/proj_like_ops.eg.go +++ b/pkg/sql/colexec/colexecprojconst/proj_like_ops.eg.go @@ -44,14 +44,12 @@ func (p projPrefixBytesBytesConstOp) Next() coldata.Batch { col := col projCol := projVec.Bool() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) if _caseInsensitive { @@ -64,7 +62,7 @@ func (p projPrefixBytesBytesConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) if _caseInsensitive { @@ -126,14 +124,12 @@ func (p projSuffixBytesBytesConstOp) Next() coldata.Batch { col := col projCol := projVec.Bool() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) if _caseInsensitive { @@ -146,7 +142,7 @@ func (p projSuffixBytesBytesConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) if _caseInsensitive { @@ -208,14 +204,12 @@ func (p projContainsBytesBytesConstOp) Next() coldata.Batch { col := col projCol := projVec.Bool() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) if _caseInsensitive { @@ -228,7 +222,7 @@ func (p projContainsBytesBytesConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) if _caseInsensitive { @@ -290,14 +284,12 @@ func (p projSkeletonBytesBytesConstOp) Next() coldata.Batch { col := col projCol := projVec.Bool() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -322,7 +314,7 @@ func (p projSkeletonBytesBytesConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) @@ -418,14 +410,12 @@ func (p projRegexpBytesBytesConstOp) Next() coldata.Batch { col := col projCol := projVec.Bool() _outNulls := projVec.Nulls() - - hasNullsAndNotCalledOnNullInput := vec.Nulls().MaybeHasNulls() - if hasNullsAndNotCalledOnNullInput { + if vec.Nulls().MaybeHasNulls() { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) projCol[i] = p.constArg.Match(arg) != _negate @@ -435,7 +425,7 @@ func (p projRegexpBytesBytesConstOp) Next() coldata.Batch { _ = projCol.Get(n - 1) _ = col.Get(n - 1) for i := 0; i < n; i++ { - if !colNulls.NullAt(i) { + if p.calledOnNullInput || !colNulls.NullAt(i) { // We only want to perform the projection operation if the value is not null. arg := col.Get(i) projCol[i] = p.constArg.Match(arg) != _negate diff --git a/pkg/sql/logictest/testdata/logic_test/array b/pkg/sql/logictest/testdata/logic_test/array index ad786cc4d078..718c37da16a6 100644 --- a/pkg/sql/logictest/testdata/logic_test/array +++ b/pkg/sql/logictest/testdata/logic_test/array @@ -2272,3 +2272,25 @@ SELECT ('foo'::STRING || col::STRING[])::STRING[] FROM (VALUES (ARRAY['bar':::ST ---- {foo,bar} {foo,baz} + +# Regression test for #87919 - datum concatenation should be performed for +# null arguments. +statement ok +CREATE TABLE t1_87919 ( + a INT +); +CREATE TABLE t2_87919 ( + b INT, + c TIME[] +); +INSERT INTO t1_87919 (a) VALUES (NULL); +INSERT INTO t2_87919 (c) VALUES (ARRAY['03:23:06.042923']); + +query T rowsort +SELECT ('09:20:35.19023'::TIME || c)::TIME[] AS col_25551 +FROM t1_87919 +FULL JOIN t2_87919 ON a = b +ORDER BY a; +---- +{09:20:35.19023} +{09:20:35.19023,03:23:06.042923}