diff --git a/pkg/sql/colexec/colbuilder/execplan.go b/pkg/sql/colexec/colbuilder/execplan.go index 7a9d30ba4233..8203f229285a 100644 --- a/pkg/sql/colexec/colbuilder/execplan.go +++ b/pkg/sql/colexec/colbuilder/execplan.go @@ -1989,7 +1989,7 @@ func planProjectionOperators( } return planProjectionExpr( ctx, evalCtx, t.Operator, t.ResolvedType(), t.TypedLeft(), t.TypedRight(), - columnTypes, input, acc, factory, t.Op.EvalOp, nil /* cmpExpr */, releasables, + columnTypes, input, acc, factory, t.Op.EvalOp, nil /* cmpExpr */, releasables, t.Op.NullableArgs, ) case *tree.CaseExpr: allocator := colmem.NewAllocator(ctx, acc, factory) @@ -2141,7 +2141,7 @@ func planProjectionOperators( case *tree.ComparisonExpr: return planProjectionExpr( ctx, evalCtx, t.Operator, t.ResolvedType(), t.TypedLeft(), t.TypedRight(), - columnTypes, input, acc, factory, nil /* binFn */, t, releasables, + columnTypes, input, acc, factory, nil /* binFn */, t, releasables, t.Op.NullableArgs, ) case tree.Datum: op, err = projectDatum(t) @@ -2308,6 +2308,7 @@ func planProjectionExpr( binOp tree.BinaryEvalOp, cmpExpr *tree.ComparisonExpr, releasables *[]execreleasable.Releasable, + nullableArgs bool, ) (op colexecop.Operator, resultIdx int, typs []*types.T, err error) { if err := checkSupportedProjectionExpr(left, right); err != nil { return nil, resultIdx, typs, err @@ -2344,7 +2345,7 @@ func planProjectionExpr( // appended to the input batch. op, err = colexecprojconst.GetProjectionLConstOperator( allocator, typs, left.ResolvedType(), outputType, projOp, input, - rightIdx, lConstArg, resultIdx, evalCtx, binOp, cmpExpr, + rightIdx, lConstArg, resultIdx, evalCtx, binOp, cmpExpr, nullableArgs, ) } else { var leftIdx int @@ -2421,7 +2422,7 @@ func planProjectionExpr( // all other projection operators. op, err = colexecprojconst.GetProjectionRConstOperator( allocator, typs, right.ResolvedType(), outputType, projOp, - input, leftIdx, rConstArg, resultIdx, evalCtx, binOp, cmpExpr, + input, leftIdx, rConstArg, resultIdx, evalCtx, binOp, cmpExpr, nullableArgs, ) } } else { @@ -2436,7 +2437,7 @@ func planProjectionExpr( resultIdx = len(typs) op, err = colexecproj.GetProjectionOperator( allocator, typs, outputType, projOp, input, leftIdx, rightIdx, - resultIdx, evalCtx, binOp, cmpExpr, + resultIdx, evalCtx, binOp, cmpExpr, nullableArgs, ) } } 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 6b9f251175b2..a103d8e57101 100644 --- a/pkg/sql/colexec/colexecproj/proj_non_const_ops.eg.go +++ b/pkg/sql/colexec/colexecproj/proj_non_const_ops.eg.go @@ -49,10 +49,11 @@ var ( // projOpBase contains all of the fields for non-constant projections. type projOpBase struct { colexecop.OneInputHelper - allocator *colmem.Allocator - col1Idx int - col2Idx int - outputIdx int + allocator *colmem.Allocator + col1Idx int + col2Idx int + outputIdx int + nullableArgs bool } type projBitandInt16Int16Op struct { @@ -77,7 +78,9 @@ func (p projBitandInt16Int16Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -85,7 +88,7 @@ func (p projBitandInt16Int16Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -100,7 +103,7 @@ func (p projBitandInt16Int16Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -111,11 +114,15 @@ func (p projBitandInt16Int16Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -141,11 +148,15 @@ func (p projBitandInt16Int16Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -173,7 +184,9 @@ func (p projBitandInt16Int32Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -181,7 +194,7 @@ func (p projBitandInt16Int32Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -196,7 +209,7 @@ func (p projBitandInt16Int32Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -207,11 +220,15 @@ func (p projBitandInt16Int32Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -237,11 +254,15 @@ func (p projBitandInt16Int32Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -269,7 +290,9 @@ func (p projBitandInt16Int64Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -277,7 +300,7 @@ func (p projBitandInt16Int64Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -292,7 +315,7 @@ func (p projBitandInt16Int64Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -303,11 +326,15 @@ func (p projBitandInt16Int64Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -333,11 +360,15 @@ func (p projBitandInt16Int64Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -365,7 +396,9 @@ func (p projBitandInt32Int16Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -373,7 +406,7 @@ func (p projBitandInt32Int16Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -388,7 +421,7 @@ func (p projBitandInt32Int16Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -399,11 +432,15 @@ func (p projBitandInt32Int16Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -429,11 +466,15 @@ func (p projBitandInt32Int16Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -461,7 +502,9 @@ func (p projBitandInt32Int32Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -469,7 +512,7 @@ func (p projBitandInt32Int32Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -484,7 +527,7 @@ func (p projBitandInt32Int32Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -495,11 +538,15 @@ func (p projBitandInt32Int32Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -525,11 +572,15 @@ func (p projBitandInt32Int32Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -557,7 +608,9 @@ func (p projBitandInt32Int64Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -565,7 +618,7 @@ func (p projBitandInt32Int64Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -580,7 +633,7 @@ func (p projBitandInt32Int64Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -591,11 +644,15 @@ func (p projBitandInt32Int64Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -621,11 +678,15 @@ func (p projBitandInt32Int64Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -653,7 +714,9 @@ func (p projBitandInt64Int16Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -661,7 +724,7 @@ func (p projBitandInt64Int16Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -676,7 +739,7 @@ func (p projBitandInt64Int16Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -687,11 +750,15 @@ func (p projBitandInt64Int16Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -717,11 +784,15 @@ func (p projBitandInt64Int16Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -749,7 +820,9 @@ func (p projBitandInt64Int32Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -757,7 +830,7 @@ func (p projBitandInt64Int32Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -772,7 +845,7 @@ func (p projBitandInt64Int32Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -783,11 +856,15 @@ func (p projBitandInt64Int32Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -813,11 +890,15 @@ func (p projBitandInt64Int32Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -845,7 +926,9 @@ func (p projBitandInt64Int64Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -853,7 +936,7 @@ func (p projBitandInt64Int64Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -868,7 +951,7 @@ func (p projBitandInt64Int64Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -879,11 +962,15 @@ func (p projBitandInt64Int64Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -909,11 +996,15 @@ func (p projBitandInt64Int64Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -943,7 +1034,9 @@ func (p projBitandDatumDatumOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -951,7 +1044,7 @@ func (p projBitandDatumDatumOp) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -973,7 +1066,7 @@ func (p projBitandDatumDatumOp) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -989,11 +1082,15 @@ func (p projBitandDatumDatumOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -1031,11 +1128,15 @@ func (p projBitandDatumDatumOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -1063,7 +1164,9 @@ func (p projBitorInt16Int16Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -1071,7 +1174,7 @@ func (p projBitorInt16Int16Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -1086,7 +1189,7 @@ func (p projBitorInt16Int16Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -1097,11 +1200,15 @@ func (p projBitorInt16Int16Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -1127,11 +1234,15 @@ func (p projBitorInt16Int16Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -1159,7 +1270,9 @@ func (p projBitorInt16Int32Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -1167,7 +1280,7 @@ func (p projBitorInt16Int32Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -1182,7 +1295,7 @@ func (p projBitorInt16Int32Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -1193,11 +1306,15 @@ func (p projBitorInt16Int32Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -1223,11 +1340,15 @@ func (p projBitorInt16Int32Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -1255,7 +1376,9 @@ func (p projBitorInt16Int64Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -1263,7 +1386,7 @@ func (p projBitorInt16Int64Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -1278,7 +1401,7 @@ func (p projBitorInt16Int64Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -1289,11 +1412,15 @@ func (p projBitorInt16Int64Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -1319,11 +1446,15 @@ func (p projBitorInt16Int64Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -1351,7 +1482,9 @@ func (p projBitorInt32Int16Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -1359,7 +1492,7 @@ func (p projBitorInt32Int16Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -1374,7 +1507,7 @@ func (p projBitorInt32Int16Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -1385,11 +1518,15 @@ func (p projBitorInt32Int16Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -1415,11 +1552,15 @@ func (p projBitorInt32Int16Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -1447,7 +1588,9 @@ func (p projBitorInt32Int32Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -1455,7 +1598,7 @@ func (p projBitorInt32Int32Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -1470,7 +1613,7 @@ func (p projBitorInt32Int32Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -1481,11 +1624,15 @@ func (p projBitorInt32Int32Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -1511,11 +1658,15 @@ func (p projBitorInt32Int32Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -1543,7 +1694,9 @@ func (p projBitorInt32Int64Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -1551,7 +1704,7 @@ func (p projBitorInt32Int64Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -1566,7 +1719,7 @@ func (p projBitorInt32Int64Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -1577,11 +1730,15 @@ func (p projBitorInt32Int64Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -1607,11 +1764,15 @@ func (p projBitorInt32Int64Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -1639,7 +1800,9 @@ func (p projBitorInt64Int16Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -1647,7 +1810,7 @@ func (p projBitorInt64Int16Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -1662,7 +1825,7 @@ func (p projBitorInt64Int16Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -1673,11 +1836,15 @@ func (p projBitorInt64Int16Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -1703,11 +1870,15 @@ func (p projBitorInt64Int16Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -1735,7 +1906,9 @@ func (p projBitorInt64Int32Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -1743,7 +1916,7 @@ func (p projBitorInt64Int32Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -1758,7 +1931,7 @@ func (p projBitorInt64Int32Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -1769,11 +1942,15 @@ func (p projBitorInt64Int32Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -1799,11 +1976,15 @@ func (p projBitorInt64Int32Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -1831,7 +2012,9 @@ func (p projBitorInt64Int64Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -1839,7 +2022,7 @@ func (p projBitorInt64Int64Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -1854,7 +2037,7 @@ func (p projBitorInt64Int64Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -1865,11 +2048,15 @@ func (p projBitorInt64Int64Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -1895,11 +2082,15 @@ func (p projBitorInt64Int64Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -1929,7 +2120,9 @@ func (p projBitorDatumDatumOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -1937,7 +2130,7 @@ func (p projBitorDatumDatumOp) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -1959,7 +2152,7 @@ func (p projBitorDatumDatumOp) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -1975,11 +2168,15 @@ func (p projBitorDatumDatumOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -2017,11 +2214,15 @@ func (p projBitorDatumDatumOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -2049,7 +2250,9 @@ func (p projBitxorInt16Int16Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -2057,7 +2260,7 @@ func (p projBitxorInt16Int16Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -2072,7 +2275,7 @@ func (p projBitxorInt16Int16Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -2083,11 +2286,15 @@ func (p projBitxorInt16Int16Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -2113,11 +2320,15 @@ func (p projBitxorInt16Int16Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -2145,7 +2356,9 @@ func (p projBitxorInt16Int32Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -2153,7 +2366,7 @@ func (p projBitxorInt16Int32Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -2168,7 +2381,7 @@ func (p projBitxorInt16Int32Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -2179,11 +2392,15 @@ func (p projBitxorInt16Int32Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -2209,11 +2426,15 @@ func (p projBitxorInt16Int32Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -2241,7 +2462,9 @@ func (p projBitxorInt16Int64Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -2249,7 +2472,7 @@ func (p projBitxorInt16Int64Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -2264,7 +2487,7 @@ func (p projBitxorInt16Int64Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -2275,11 +2498,15 @@ func (p projBitxorInt16Int64Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -2305,11 +2532,15 @@ func (p projBitxorInt16Int64Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -2337,7 +2568,9 @@ func (p projBitxorInt32Int16Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -2345,7 +2578,7 @@ func (p projBitxorInt32Int16Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -2360,7 +2593,7 @@ func (p projBitxorInt32Int16Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -2371,11 +2604,15 @@ func (p projBitxorInt32Int16Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -2401,11 +2638,15 @@ func (p projBitxorInt32Int16Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -2433,7 +2674,9 @@ func (p projBitxorInt32Int32Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -2441,7 +2684,7 @@ func (p projBitxorInt32Int32Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -2456,7 +2699,7 @@ func (p projBitxorInt32Int32Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -2467,11 +2710,15 @@ func (p projBitxorInt32Int32Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -2497,11 +2744,15 @@ func (p projBitxorInt32Int32Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -2529,7 +2780,9 @@ func (p projBitxorInt32Int64Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -2537,7 +2790,7 @@ func (p projBitxorInt32Int64Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -2552,7 +2805,7 @@ func (p projBitxorInt32Int64Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -2563,11 +2816,15 @@ func (p projBitxorInt32Int64Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -2593,11 +2850,15 @@ func (p projBitxorInt32Int64Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -2625,7 +2886,9 @@ func (p projBitxorInt64Int16Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -2633,7 +2896,7 @@ func (p projBitxorInt64Int16Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -2648,7 +2911,7 @@ func (p projBitxorInt64Int16Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -2659,11 +2922,15 @@ func (p projBitxorInt64Int16Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -2689,11 +2956,15 @@ func (p projBitxorInt64Int16Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -2721,7 +2992,9 @@ func (p projBitxorInt64Int32Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -2729,7 +3002,7 @@ func (p projBitxorInt64Int32Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -2744,7 +3017,7 @@ func (p projBitxorInt64Int32Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -2755,11 +3028,15 @@ func (p projBitxorInt64Int32Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -2785,11 +3062,15 @@ func (p projBitxorInt64Int32Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -2817,7 +3098,9 @@ func (p projBitxorInt64Int64Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -2825,7 +3108,7 @@ func (p projBitxorInt64Int64Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -2840,7 +3123,7 @@ func (p projBitxorInt64Int64Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -2851,11 +3134,15 @@ func (p projBitxorInt64Int64Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -2881,11 +3168,15 @@ func (p projBitxorInt64Int64Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -2915,7 +3206,9 @@ func (p projBitxorDatumDatumOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -2923,7 +3216,7 @@ func (p projBitxorDatumDatumOp) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -2945,7 +3238,7 @@ func (p projBitxorDatumDatumOp) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -2961,11 +3254,15 @@ func (p projBitxorDatumDatumOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -3003,11 +3300,15 @@ func (p projBitxorDatumDatumOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -3035,7 +3336,9 @@ func (p projPlusDecimalInt16Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -3043,7 +3346,7 @@ func (p projPlusDecimalInt16Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -3065,7 +3368,7 @@ func (p projPlusDecimalInt16Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -3083,11 +3386,15 @@ func (p projPlusDecimalInt16Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -3127,11 +3434,15 @@ func (p projPlusDecimalInt16Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -3159,7 +3470,9 @@ func (p projPlusDecimalInt32Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -3167,7 +3480,7 @@ func (p projPlusDecimalInt32Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -3189,7 +3502,7 @@ func (p projPlusDecimalInt32Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -3207,11 +3520,15 @@ func (p projPlusDecimalInt32Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -3251,11 +3568,15 @@ func (p projPlusDecimalInt32Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -3283,7 +3604,9 @@ func (p projPlusDecimalInt64Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -3291,7 +3614,7 @@ func (p projPlusDecimalInt64Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -3313,7 +3636,7 @@ func (p projPlusDecimalInt64Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -3331,11 +3654,15 @@ func (p projPlusDecimalInt64Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -3375,11 +3702,15 @@ func (p projPlusDecimalInt64Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -3407,7 +3738,9 @@ func (p projPlusDecimalDecimalOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -3415,7 +3748,7 @@ func (p projPlusDecimalDecimalOp) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -3436,7 +3769,7 @@ func (p projPlusDecimalDecimalOp) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -3453,11 +3786,15 @@ func (p projPlusDecimalDecimalOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -3495,11 +3832,15 @@ func (p projPlusDecimalDecimalOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -3527,7 +3868,9 @@ func (p projPlusInt16Int16Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -3535,7 +3878,7 @@ func (p projPlusInt16Int16Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -3556,7 +3899,7 @@ func (p projPlusInt16Int16Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -3573,11 +3916,15 @@ func (p projPlusInt16Int16Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -3615,11 +3962,15 @@ func (p projPlusInt16Int16Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -3647,7 +3998,9 @@ func (p projPlusInt16Int32Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -3655,7 +4008,7 @@ func (p projPlusInt16Int32Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -3676,7 +4029,7 @@ func (p projPlusInt16Int32Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -3693,11 +4046,15 @@ func (p projPlusInt16Int32Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -3735,11 +4092,15 @@ func (p projPlusInt16Int32Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -3767,7 +4128,9 @@ func (p projPlusInt16Int64Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -3775,7 +4138,7 @@ func (p projPlusInt16Int64Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -3796,7 +4159,7 @@ func (p projPlusInt16Int64Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -3813,11 +4176,15 @@ func (p projPlusInt16Int64Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -3855,11 +4222,15 @@ func (p projPlusInt16Int64Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -3887,7 +4258,9 @@ func (p projPlusInt16DecimalOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -3895,7 +4268,7 @@ func (p projPlusInt16DecimalOp) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -3918,7 +4291,7 @@ func (p projPlusInt16DecimalOp) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -3937,11 +4310,15 @@ func (p projPlusInt16DecimalOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -3983,11 +4360,15 @@ func (p projPlusInt16DecimalOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -4017,7 +4398,9 @@ func (p projPlusInt16DatumOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -4025,7 +4408,7 @@ func (p projPlusInt16DatumOp) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -4051,7 +4434,7 @@ func (p projPlusInt16DatumOp) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -4072,11 +4455,15 @@ func (p projPlusInt16DatumOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -4123,11 +4510,15 @@ func (p projPlusInt16DatumOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -4155,7 +4546,9 @@ func (p projPlusInt32Int16Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -4163,7 +4556,7 @@ func (p projPlusInt32Int16Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -4184,7 +4577,7 @@ func (p projPlusInt32Int16Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -4201,11 +4594,15 @@ func (p projPlusInt32Int16Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -4243,11 +4640,15 @@ func (p projPlusInt32Int16Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -4275,7 +4676,9 @@ func (p projPlusInt32Int32Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -4283,7 +4686,7 @@ func (p projPlusInt32Int32Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -4304,7 +4707,7 @@ func (p projPlusInt32Int32Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -4321,11 +4724,15 @@ func (p projPlusInt32Int32Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -4363,11 +4770,15 @@ func (p projPlusInt32Int32Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -4395,7 +4806,9 @@ func (p projPlusInt32Int64Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -4403,7 +4816,7 @@ func (p projPlusInt32Int64Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -4424,7 +4837,7 @@ func (p projPlusInt32Int64Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -4441,11 +4854,15 @@ func (p projPlusInt32Int64Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -4483,11 +4900,15 @@ func (p projPlusInt32Int64Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -4515,7 +4936,9 @@ func (p projPlusInt32DecimalOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -4523,7 +4946,7 @@ func (p projPlusInt32DecimalOp) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -4546,7 +4969,7 @@ func (p projPlusInt32DecimalOp) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -4565,11 +4988,15 @@ func (p projPlusInt32DecimalOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -4611,11 +5038,15 @@ func (p projPlusInt32DecimalOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -4645,7 +5076,9 @@ func (p projPlusInt32DatumOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -4653,7 +5086,7 @@ func (p projPlusInt32DatumOp) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -4679,7 +5112,7 @@ func (p projPlusInt32DatumOp) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -4700,11 +5133,15 @@ func (p projPlusInt32DatumOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -4751,11 +5188,15 @@ func (p projPlusInt32DatumOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -4783,7 +5224,9 @@ func (p projPlusInt64Int16Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -4791,7 +5234,7 @@ func (p projPlusInt64Int16Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -4812,7 +5255,7 @@ func (p projPlusInt64Int16Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -4829,11 +5272,15 @@ func (p projPlusInt64Int16Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -4871,11 +5318,15 @@ func (p projPlusInt64Int16Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -4903,7 +5354,9 @@ func (p projPlusInt64Int32Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -4911,7 +5364,7 @@ func (p projPlusInt64Int32Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -4932,7 +5385,7 @@ func (p projPlusInt64Int32Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -4949,11 +5402,15 @@ func (p projPlusInt64Int32Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -4991,11 +5448,15 @@ func (p projPlusInt64Int32Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -5023,7 +5484,9 @@ func (p projPlusInt64Int64Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -5031,7 +5494,7 @@ func (p projPlusInt64Int64Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -5052,7 +5515,7 @@ func (p projPlusInt64Int64Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -5069,11 +5532,15 @@ func (p projPlusInt64Int64Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -5111,11 +5578,15 @@ func (p projPlusInt64Int64Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -5143,7 +5614,9 @@ func (p projPlusInt64DecimalOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -5151,7 +5624,7 @@ func (p projPlusInt64DecimalOp) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -5174,7 +5647,7 @@ func (p projPlusInt64DecimalOp) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -5193,11 +5666,15 @@ func (p projPlusInt64DecimalOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -5239,11 +5716,15 @@ func (p projPlusInt64DecimalOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -5273,7 +5754,9 @@ func (p projPlusInt64DatumOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -5281,7 +5764,7 @@ func (p projPlusInt64DatumOp) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -5307,7 +5790,7 @@ func (p projPlusInt64DatumOp) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -5328,11 +5811,15 @@ func (p projPlusInt64DatumOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -5379,11 +5866,15 @@ func (p projPlusInt64DatumOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -5411,7 +5902,9 @@ func (p projPlusFloat64Float64Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -5419,7 +5912,7 @@ func (p projPlusFloat64Float64Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -5437,7 +5930,7 @@ func (p projPlusFloat64Float64Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -5451,11 +5944,15 @@ func (p projPlusFloat64Float64Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -5487,11 +5984,15 @@ func (p projPlusFloat64Float64Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -5519,7 +6020,9 @@ func (p projPlusTimestampIntervalOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -5527,7 +6030,7 @@ func (p projPlusTimestampIntervalOp) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) t_res := duration.Add(arg1, arg2) @@ -5545,7 +6048,7 @@ func (p projPlusTimestampIntervalOp) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -5559,11 +6062,15 @@ func (p projPlusTimestampIntervalOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -5595,11 +6102,15 @@ func (p projPlusTimestampIntervalOp) Next() coldata.Batch { projCol[i] = t_res } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -5627,7 +6138,9 @@ func (p projPlusIntervalTimestampOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -5635,7 +6148,7 @@ func (p projPlusIntervalTimestampOp) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) t_res := duration.Add(arg2, arg1) @@ -5653,7 +6166,7 @@ func (p projPlusIntervalTimestampOp) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -5667,11 +6180,15 @@ func (p projPlusIntervalTimestampOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -5703,11 +6220,15 @@ func (p projPlusIntervalTimestampOp) Next() coldata.Batch { projCol[i] = t_res } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -5735,7 +6256,9 @@ func (p projPlusIntervalIntervalOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -5743,7 +6266,7 @@ func (p projPlusIntervalIntervalOp) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) projCol[i] = arg1.Add(arg2) @@ -5756,7 +6279,7 @@ func (p projPlusIntervalIntervalOp) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -5765,11 +6288,15 @@ func (p projPlusIntervalIntervalOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -5791,11 +6318,15 @@ func (p projPlusIntervalIntervalOp) Next() coldata.Batch { projCol[i] = arg1.Add(arg2) } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -5825,7 +6356,9 @@ func (p projPlusIntervalDatumOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -5833,7 +6366,7 @@ func (p projPlusIntervalDatumOp) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -5859,7 +6392,7 @@ func (p projPlusIntervalDatumOp) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -5880,11 +6413,15 @@ func (p projPlusIntervalDatumOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -5931,11 +6468,15 @@ func (p projPlusIntervalDatumOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -5965,7 +6506,9 @@ func (p projPlusDatumIntervalOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -5973,7 +6516,7 @@ func (p projPlusDatumIntervalOp) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -5999,7 +6542,7 @@ func (p projPlusDatumIntervalOp) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) //gcassert:bce arg2 := col2.Get(i) @@ -6020,11 +6563,15 @@ func (p projPlusDatumIntervalOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -6071,11 +6618,15 @@ func (p projPlusDatumIntervalOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -6105,7 +6656,9 @@ func (p projPlusDatumInt16Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -6113,7 +6666,7 @@ func (p projPlusDatumInt16Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -6139,7 +6692,7 @@ func (p projPlusDatumInt16Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) //gcassert:bce arg2 := col2.Get(i) @@ -6160,11 +6713,15 @@ func (p projPlusDatumInt16Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -6211,11 +6768,15 @@ func (p projPlusDatumInt16Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -6245,7 +6806,9 @@ func (p projPlusDatumInt32Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -6253,7 +6816,7 @@ func (p projPlusDatumInt32Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -6279,7 +6842,7 @@ func (p projPlusDatumInt32Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) //gcassert:bce arg2 := col2.Get(i) @@ -6300,11 +6863,15 @@ func (p projPlusDatumInt32Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -6351,11 +6918,15 @@ func (p projPlusDatumInt32Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -6385,7 +6956,9 @@ func (p projPlusDatumInt64Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -6393,7 +6966,7 @@ func (p projPlusDatumInt64Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -6419,7 +6992,7 @@ func (p projPlusDatumInt64Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) //gcassert:bce arg2 := col2.Get(i) @@ -6440,11 +7013,15 @@ func (p projPlusDatumInt64Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -6491,11 +7068,15 @@ func (p projPlusDatumInt64Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -6523,7 +7104,9 @@ func (p projMinusDecimalInt16Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -6531,7 +7114,7 @@ func (p projMinusDecimalInt16Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -6553,7 +7136,7 @@ func (p projMinusDecimalInt16Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -6571,11 +7154,15 @@ func (p projMinusDecimalInt16Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -6615,11 +7202,15 @@ func (p projMinusDecimalInt16Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -6647,7 +7238,9 @@ func (p projMinusDecimalInt32Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -6655,7 +7248,7 @@ func (p projMinusDecimalInt32Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -6677,7 +7270,7 @@ func (p projMinusDecimalInt32Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -6695,11 +7288,15 @@ func (p projMinusDecimalInt32Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -6739,11 +7336,15 @@ func (p projMinusDecimalInt32Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -6771,7 +7372,9 @@ func (p projMinusDecimalInt64Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -6779,7 +7382,7 @@ func (p projMinusDecimalInt64Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -6801,7 +7404,7 @@ func (p projMinusDecimalInt64Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -6819,11 +7422,15 @@ func (p projMinusDecimalInt64Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -6863,11 +7470,15 @@ func (p projMinusDecimalInt64Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -6895,7 +7506,9 @@ func (p projMinusDecimalDecimalOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -6903,7 +7516,7 @@ func (p projMinusDecimalDecimalOp) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -6924,7 +7537,7 @@ func (p projMinusDecimalDecimalOp) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -6941,11 +7554,15 @@ func (p projMinusDecimalDecimalOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -6983,11 +7600,15 @@ func (p projMinusDecimalDecimalOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -7015,7 +7636,9 @@ func (p projMinusInt16Int16Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -7023,7 +7646,7 @@ func (p projMinusInt16Int16Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -7044,7 +7667,7 @@ func (p projMinusInt16Int16Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -7061,11 +7684,15 @@ func (p projMinusInt16Int16Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -7103,11 +7730,15 @@ func (p projMinusInt16Int16Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -7135,7 +7766,9 @@ func (p projMinusInt16Int32Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -7143,7 +7776,7 @@ func (p projMinusInt16Int32Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -7164,7 +7797,7 @@ func (p projMinusInt16Int32Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -7181,11 +7814,15 @@ func (p projMinusInt16Int32Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -7223,11 +7860,15 @@ func (p projMinusInt16Int32Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -7255,7 +7896,9 @@ func (p projMinusInt16Int64Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -7263,7 +7906,7 @@ func (p projMinusInt16Int64Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -7284,7 +7927,7 @@ func (p projMinusInt16Int64Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -7301,11 +7944,15 @@ func (p projMinusInt16Int64Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -7343,11 +7990,15 @@ func (p projMinusInt16Int64Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -7375,7 +8026,9 @@ func (p projMinusInt16DecimalOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -7383,7 +8036,7 @@ func (p projMinusInt16DecimalOp) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -7406,7 +8059,7 @@ func (p projMinusInt16DecimalOp) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -7425,11 +8078,15 @@ func (p projMinusInt16DecimalOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -7471,11 +8128,15 @@ func (p projMinusInt16DecimalOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -7505,7 +8166,9 @@ func (p projMinusInt16DatumOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -7513,7 +8176,7 @@ func (p projMinusInt16DatumOp) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -7539,7 +8202,7 @@ func (p projMinusInt16DatumOp) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -7560,11 +8223,15 @@ func (p projMinusInt16DatumOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -7611,11 +8278,15 @@ func (p projMinusInt16DatumOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -7643,7 +8314,9 @@ func (p projMinusInt32Int16Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -7651,7 +8324,7 @@ func (p projMinusInt32Int16Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -7672,7 +8345,7 @@ func (p projMinusInt32Int16Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -7689,11 +8362,15 @@ func (p projMinusInt32Int16Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -7731,11 +8408,15 @@ func (p projMinusInt32Int16Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -7763,7 +8444,9 @@ func (p projMinusInt32Int32Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -7771,7 +8454,7 @@ func (p projMinusInt32Int32Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -7792,7 +8475,7 @@ func (p projMinusInt32Int32Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -7809,11 +8492,15 @@ func (p projMinusInt32Int32Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -7851,11 +8538,15 @@ func (p projMinusInt32Int32Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -7883,7 +8574,9 @@ func (p projMinusInt32Int64Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -7891,7 +8584,7 @@ func (p projMinusInt32Int64Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -7912,7 +8605,7 @@ func (p projMinusInt32Int64Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -7929,11 +8622,15 @@ func (p projMinusInt32Int64Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -7971,11 +8668,15 @@ func (p projMinusInt32Int64Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -8003,7 +8704,9 @@ func (p projMinusInt32DecimalOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -8011,7 +8714,7 @@ func (p projMinusInt32DecimalOp) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -8034,7 +8737,7 @@ func (p projMinusInt32DecimalOp) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -8053,11 +8756,15 @@ func (p projMinusInt32DecimalOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -8099,11 +8806,15 @@ func (p projMinusInt32DecimalOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -8133,7 +8844,9 @@ func (p projMinusInt32DatumOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -8141,7 +8854,7 @@ func (p projMinusInt32DatumOp) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -8167,7 +8880,7 @@ func (p projMinusInt32DatumOp) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -8188,11 +8901,15 @@ func (p projMinusInt32DatumOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -8239,11 +8956,15 @@ func (p projMinusInt32DatumOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -8271,7 +8992,9 @@ func (p projMinusInt64Int16Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -8279,7 +9002,7 @@ func (p projMinusInt64Int16Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -8300,7 +9023,7 @@ func (p projMinusInt64Int16Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -8317,11 +9040,15 @@ func (p projMinusInt64Int16Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -8359,11 +9086,15 @@ func (p projMinusInt64Int16Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -8391,7 +9122,9 @@ func (p projMinusInt64Int32Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -8399,7 +9132,7 @@ func (p projMinusInt64Int32Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -8420,7 +9153,7 @@ func (p projMinusInt64Int32Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -8437,11 +9170,15 @@ func (p projMinusInt64Int32Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -8479,11 +9216,15 @@ func (p projMinusInt64Int32Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -8511,7 +9252,9 @@ func (p projMinusInt64Int64Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -8519,7 +9262,7 @@ func (p projMinusInt64Int64Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -8540,7 +9283,7 @@ func (p projMinusInt64Int64Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -8557,11 +9300,15 @@ func (p projMinusInt64Int64Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -8599,11 +9346,15 @@ func (p projMinusInt64Int64Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -8631,7 +9382,9 @@ func (p projMinusInt64DecimalOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -8639,7 +9392,7 @@ func (p projMinusInt64DecimalOp) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -8662,7 +9415,7 @@ func (p projMinusInt64DecimalOp) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -8681,11 +9434,15 @@ func (p projMinusInt64DecimalOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -8727,11 +9484,15 @@ func (p projMinusInt64DecimalOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -8761,7 +9522,9 @@ func (p projMinusInt64DatumOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -8769,7 +9532,7 @@ func (p projMinusInt64DatumOp) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -8795,7 +9558,7 @@ func (p projMinusInt64DatumOp) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -8816,11 +9579,15 @@ func (p projMinusInt64DatumOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -8867,11 +9634,15 @@ func (p projMinusInt64DatumOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -8899,7 +9670,9 @@ func (p projMinusFloat64Float64Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -8907,7 +9680,7 @@ func (p projMinusFloat64Float64Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -8925,7 +9698,7 @@ func (p projMinusFloat64Float64Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -8939,11 +9712,15 @@ func (p projMinusFloat64Float64Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -8975,11 +9752,15 @@ func (p projMinusFloat64Float64Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -9007,7 +9788,9 @@ func (p projMinusTimestampTimestampOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -9015,7 +9798,7 @@ func (p projMinusTimestampTimestampOp) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -9031,7 +9814,7 @@ func (p projMinusTimestampTimestampOp) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -9043,11 +9826,15 @@ func (p projMinusTimestampTimestampOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -9075,11 +9862,15 @@ func (p projMinusTimestampTimestampOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -9107,7 +9898,9 @@ func (p projMinusTimestampIntervalOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -9115,7 +9908,7 @@ func (p projMinusTimestampIntervalOp) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) t_res := duration.Add(arg1, arg2.Mul(-1)) @@ -9133,7 +9926,7 @@ func (p projMinusTimestampIntervalOp) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -9147,11 +9940,15 @@ func (p projMinusTimestampIntervalOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -9183,11 +9980,15 @@ func (p projMinusTimestampIntervalOp) Next() coldata.Batch { projCol[i] = t_res } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -9215,7 +10016,9 @@ func (p projMinusIntervalIntervalOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -9223,7 +10026,7 @@ func (p projMinusIntervalIntervalOp) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) projCol[i] = arg1.Sub(arg2) @@ -9236,7 +10039,7 @@ func (p projMinusIntervalIntervalOp) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -9245,11 +10048,15 @@ func (p projMinusIntervalIntervalOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -9271,11 +10078,15 @@ func (p projMinusIntervalIntervalOp) Next() coldata.Batch { projCol[i] = arg1.Sub(arg2) } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -9305,7 +10116,9 @@ func (p projMinusIntervalDatumOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -9313,7 +10126,7 @@ func (p projMinusIntervalDatumOp) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -9339,7 +10152,7 @@ func (p projMinusIntervalDatumOp) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -9360,11 +10173,15 @@ func (p projMinusIntervalDatumOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -9411,11 +10228,15 @@ func (p projMinusIntervalDatumOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -9443,7 +10264,9 @@ func (p projMinusJSONBytesOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -9451,7 +10274,7 @@ func (p projMinusJSONBytesOp) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -9473,7 +10296,7 @@ func (p projMinusJSONBytesOp) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -9489,11 +10312,15 @@ func (p projMinusJSONBytesOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -9531,11 +10358,15 @@ func (p projMinusJSONBytesOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -9563,7 +10394,9 @@ func (p projMinusJSONInt16Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -9571,7 +10404,7 @@ func (p projMinusJSONInt16Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -9589,7 +10422,7 @@ func (p projMinusJSONInt16Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) //gcassert:bce arg2 := col2.Get(i) @@ -9602,11 +10435,15 @@ func (p projMinusJSONInt16Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -9637,11 +10474,15 @@ func (p projMinusJSONInt16Op) Next() coldata.Batch { projCol.Set(i, _j) } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -9669,7 +10510,9 @@ func (p projMinusJSONInt32Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -9677,7 +10520,7 @@ func (p projMinusJSONInt32Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -9695,7 +10538,7 @@ func (p projMinusJSONInt32Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) //gcassert:bce arg2 := col2.Get(i) @@ -9708,11 +10551,15 @@ func (p projMinusJSONInt32Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -9743,11 +10590,15 @@ func (p projMinusJSONInt32Op) Next() coldata.Batch { projCol.Set(i, _j) } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -9775,7 +10626,9 @@ func (p projMinusJSONInt64Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -9783,7 +10636,7 @@ func (p projMinusJSONInt64Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -9801,7 +10654,7 @@ func (p projMinusJSONInt64Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) //gcassert:bce arg2 := col2.Get(i) @@ -9814,11 +10667,15 @@ func (p projMinusJSONInt64Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -9849,11 +10706,15 @@ func (p projMinusJSONInt64Op) Next() coldata.Batch { projCol.Set(i, _j) } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -9883,7 +10744,9 @@ func (p projMinusDatumDatumOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -9891,7 +10754,7 @@ func (p projMinusDatumDatumOp) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -9913,7 +10776,7 @@ func (p projMinusDatumDatumOp) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -9929,11 +10792,15 @@ func (p projMinusDatumDatumOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -9971,11 +10838,15 @@ func (p projMinusDatumDatumOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -10005,7 +10876,9 @@ func (p projMinusDatumIntervalOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -10013,7 +10886,7 @@ func (p projMinusDatumIntervalOp) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -10039,7 +10912,7 @@ func (p projMinusDatumIntervalOp) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) //gcassert:bce arg2 := col2.Get(i) @@ -10060,11 +10933,15 @@ func (p projMinusDatumIntervalOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -10111,11 +10988,15 @@ func (p projMinusDatumIntervalOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -10145,7 +11026,9 @@ func (p projMinusDatumBytesOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -10153,7 +11036,7 @@ func (p projMinusDatumBytesOp) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -10179,7 +11062,7 @@ func (p projMinusDatumBytesOp) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -10199,11 +11082,15 @@ func (p projMinusDatumBytesOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -10249,11 +11136,15 @@ func (p projMinusDatumBytesOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -10283,7 +11174,9 @@ func (p projMinusDatumInt16Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -10291,7 +11184,7 @@ func (p projMinusDatumInt16Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -10317,7 +11210,7 @@ func (p projMinusDatumInt16Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) //gcassert:bce arg2 := col2.Get(i) @@ -10338,11 +11231,15 @@ func (p projMinusDatumInt16Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -10389,11 +11286,15 @@ func (p projMinusDatumInt16Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -10423,7 +11324,9 @@ func (p projMinusDatumInt32Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -10431,7 +11334,7 @@ func (p projMinusDatumInt32Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -10457,7 +11360,7 @@ func (p projMinusDatumInt32Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) //gcassert:bce arg2 := col2.Get(i) @@ -10478,11 +11381,15 @@ func (p projMinusDatumInt32Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -10529,11 +11436,15 @@ func (p projMinusDatumInt32Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -10563,7 +11474,9 @@ func (p projMinusDatumInt64Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -10571,7 +11484,7 @@ func (p projMinusDatumInt64Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -10597,7 +11510,7 @@ func (p projMinusDatumInt64Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) //gcassert:bce arg2 := col2.Get(i) @@ -10618,11 +11531,15 @@ func (p projMinusDatumInt64Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -10669,11 +11586,15 @@ func (p projMinusDatumInt64Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -10701,7 +11622,9 @@ func (p projMultDecimalInt16Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -10709,7 +11632,7 @@ func (p projMultDecimalInt16Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -10731,7 +11654,7 @@ func (p projMultDecimalInt16Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -10749,11 +11672,15 @@ func (p projMultDecimalInt16Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -10793,11 +11720,15 @@ func (p projMultDecimalInt16Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -10825,7 +11756,9 @@ func (p projMultDecimalInt32Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -10833,7 +11766,7 @@ func (p projMultDecimalInt32Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -10855,7 +11788,7 @@ func (p projMultDecimalInt32Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -10873,11 +11806,15 @@ func (p projMultDecimalInt32Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -10917,11 +11854,15 @@ func (p projMultDecimalInt32Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -10949,7 +11890,9 @@ func (p projMultDecimalInt64Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -10957,7 +11900,7 @@ func (p projMultDecimalInt64Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -10979,7 +11922,7 @@ func (p projMultDecimalInt64Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -10997,11 +11940,15 @@ func (p projMultDecimalInt64Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -11041,11 +11988,15 @@ func (p projMultDecimalInt64Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -11073,7 +12024,9 @@ func (p projMultDecimalDecimalOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -11081,7 +12034,7 @@ func (p projMultDecimalDecimalOp) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -11102,7 +12055,7 @@ func (p projMultDecimalDecimalOp) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -11119,11 +12072,15 @@ func (p projMultDecimalDecimalOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -11161,11 +12118,15 @@ func (p projMultDecimalDecimalOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -11193,7 +12154,9 @@ func (p projMultDecimalIntervalOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -11201,7 +12164,7 @@ func (p projMultDecimalIntervalOp) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -11219,7 +12182,7 @@ func (p projMultDecimalIntervalOp) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -11233,11 +12196,15 @@ func (p projMultDecimalIntervalOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -11269,11 +12236,15 @@ func (p projMultDecimalIntervalOp) Next() coldata.Batch { projCol[i] = arg2.MulFloat(f) } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -11301,7 +12272,9 @@ func (p projMultInt16Int16Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -11309,7 +12282,7 @@ func (p projMultInt16Int16Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -11338,7 +12311,7 @@ func (p projMultInt16Int16Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -11363,11 +12336,15 @@ func (p projMultInt16Int16Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -11421,11 +12398,15 @@ func (p projMultInt16Int16Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -11453,7 +12434,9 @@ func (p projMultInt16Int32Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -11461,7 +12444,7 @@ func (p projMultInt16Int32Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -11490,7 +12473,7 @@ func (p projMultInt16Int32Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -11515,11 +12498,15 @@ func (p projMultInt16Int32Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -11573,11 +12560,15 @@ func (p projMultInt16Int32Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -11605,7 +12596,9 @@ func (p projMultInt16Int64Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -11613,7 +12606,7 @@ func (p projMultInt16Int64Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -11642,7 +12635,7 @@ func (p projMultInt16Int64Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -11667,11 +12660,15 @@ func (p projMultInt16Int64Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -11725,11 +12722,15 @@ func (p projMultInt16Int64Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -11757,7 +12758,9 @@ func (p projMultInt16DecimalOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -11765,7 +12768,7 @@ func (p projMultInt16DecimalOp) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -11788,7 +12791,7 @@ func (p projMultInt16DecimalOp) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -11807,11 +12810,15 @@ func (p projMultInt16DecimalOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -11853,11 +12860,15 @@ func (p projMultInt16DecimalOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -11885,7 +12896,9 @@ func (p projMultInt16IntervalOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -11893,7 +12906,7 @@ func (p projMultInt16IntervalOp) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) projCol[i] = arg2.Mul(int64(arg1)) @@ -11906,7 +12919,7 @@ func (p projMultInt16IntervalOp) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -11915,11 +12928,15 @@ func (p projMultInt16IntervalOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -11941,11 +12958,15 @@ func (p projMultInt16IntervalOp) Next() coldata.Batch { projCol[i] = arg2.Mul(int64(arg1)) } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -11973,7 +12994,9 @@ func (p projMultInt32Int16Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -11981,7 +13004,7 @@ func (p projMultInt32Int16Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -12010,7 +13033,7 @@ func (p projMultInt32Int16Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -12035,11 +13058,15 @@ func (p projMultInt32Int16Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -12093,11 +13120,15 @@ func (p projMultInt32Int16Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -12125,7 +13156,9 @@ func (p projMultInt32Int32Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -12133,7 +13166,7 @@ func (p projMultInt32Int32Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -12162,7 +13195,7 @@ func (p projMultInt32Int32Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -12187,11 +13220,15 @@ func (p projMultInt32Int32Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -12245,11 +13282,15 @@ func (p projMultInt32Int32Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -12277,7 +13318,9 @@ func (p projMultInt32Int64Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -12285,7 +13328,7 @@ func (p projMultInt32Int64Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -12314,7 +13357,7 @@ func (p projMultInt32Int64Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -12339,11 +13382,15 @@ func (p projMultInt32Int64Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -12397,11 +13444,15 @@ func (p projMultInt32Int64Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -12429,7 +13480,9 @@ func (p projMultInt32DecimalOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -12437,7 +13490,7 @@ func (p projMultInt32DecimalOp) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -12460,7 +13513,7 @@ func (p projMultInt32DecimalOp) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -12479,11 +13532,15 @@ func (p projMultInt32DecimalOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -12525,11 +13582,15 @@ func (p projMultInt32DecimalOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -12557,7 +13618,9 @@ func (p projMultInt32IntervalOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -12565,7 +13628,7 @@ func (p projMultInt32IntervalOp) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) projCol[i] = arg2.Mul(int64(arg1)) @@ -12578,7 +13641,7 @@ func (p projMultInt32IntervalOp) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -12587,11 +13650,15 @@ func (p projMultInt32IntervalOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -12613,11 +13680,15 @@ func (p projMultInt32IntervalOp) Next() coldata.Batch { projCol[i] = arg2.Mul(int64(arg1)) } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -12645,7 +13716,9 @@ func (p projMultInt64Int16Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -12653,7 +13726,7 @@ func (p projMultInt64Int16Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -12682,7 +13755,7 @@ func (p projMultInt64Int16Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -12707,11 +13780,15 @@ func (p projMultInt64Int16Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -12765,11 +13842,15 @@ func (p projMultInt64Int16Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -12797,7 +13878,9 @@ func (p projMultInt64Int32Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -12805,7 +13888,7 @@ func (p projMultInt64Int32Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -12834,7 +13917,7 @@ func (p projMultInt64Int32Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -12859,11 +13942,15 @@ func (p projMultInt64Int32Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -12917,11 +14004,15 @@ func (p projMultInt64Int32Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -12949,7 +14040,9 @@ func (p projMultInt64Int64Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -12957,7 +14050,7 @@ func (p projMultInt64Int64Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -12986,7 +14079,7 @@ func (p projMultInt64Int64Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -13011,11 +14104,15 @@ func (p projMultInt64Int64Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -13069,11 +14166,15 @@ func (p projMultInt64Int64Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -13101,7 +14202,9 @@ func (p projMultInt64DecimalOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -13109,7 +14212,7 @@ func (p projMultInt64DecimalOp) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -13132,7 +14235,7 @@ func (p projMultInt64DecimalOp) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -13151,11 +14254,15 @@ func (p projMultInt64DecimalOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -13197,11 +14304,15 @@ func (p projMultInt64DecimalOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -13229,7 +14340,9 @@ func (p projMultInt64IntervalOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -13237,7 +14350,7 @@ func (p projMultInt64IntervalOp) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) projCol[i] = arg2.Mul(int64(arg1)) @@ -13250,7 +14363,7 @@ func (p projMultInt64IntervalOp) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -13259,11 +14372,15 @@ func (p projMultInt64IntervalOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -13285,11 +14402,15 @@ func (p projMultInt64IntervalOp) Next() coldata.Batch { projCol[i] = arg2.Mul(int64(arg1)) } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -13317,7 +14438,9 @@ func (p projMultFloat64Float64Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -13325,7 +14448,7 @@ func (p projMultFloat64Float64Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -13343,7 +14466,7 @@ func (p projMultFloat64Float64Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -13357,11 +14480,15 @@ func (p projMultFloat64Float64Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -13393,11 +14520,15 @@ func (p projMultFloat64Float64Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -13425,7 +14556,9 @@ func (p projMultFloat64IntervalOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -13433,7 +14566,7 @@ func (p projMultFloat64IntervalOp) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) projCol[i] = arg2.MulFloat(float64(arg1)) @@ -13446,7 +14579,7 @@ func (p projMultFloat64IntervalOp) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -13455,11 +14588,15 @@ func (p projMultFloat64IntervalOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -13481,11 +14618,15 @@ func (p projMultFloat64IntervalOp) Next() coldata.Batch { projCol[i] = arg2.MulFloat(float64(arg1)) } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -13513,7 +14654,9 @@ func (p projMultIntervalInt16Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -13521,7 +14664,7 @@ func (p projMultIntervalInt16Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) projCol[i] = arg1.Mul(int64(arg2)) @@ -13534,7 +14677,7 @@ func (p projMultIntervalInt16Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -13543,11 +14686,15 @@ func (p projMultIntervalInt16Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -13569,11 +14716,15 @@ func (p projMultIntervalInt16Op) Next() coldata.Batch { projCol[i] = arg1.Mul(int64(arg2)) } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -13601,7 +14752,9 @@ func (p projMultIntervalInt32Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -13609,7 +14762,7 @@ func (p projMultIntervalInt32Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) projCol[i] = arg1.Mul(int64(arg2)) @@ -13622,7 +14775,7 @@ func (p projMultIntervalInt32Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -13631,11 +14784,15 @@ func (p projMultIntervalInt32Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -13657,11 +14814,15 @@ func (p projMultIntervalInt32Op) Next() coldata.Batch { projCol[i] = arg1.Mul(int64(arg2)) } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -13689,7 +14850,9 @@ func (p projMultIntervalInt64Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -13697,7 +14860,7 @@ func (p projMultIntervalInt64Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) projCol[i] = arg1.Mul(int64(arg2)) @@ -13710,7 +14873,7 @@ func (p projMultIntervalInt64Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -13719,11 +14882,15 @@ func (p projMultIntervalInt64Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -13745,11 +14912,15 @@ func (p projMultIntervalInt64Op) Next() coldata.Batch { projCol[i] = arg1.Mul(int64(arg2)) } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -13777,7 +14948,9 @@ func (p projMultIntervalFloat64Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -13785,7 +14958,7 @@ func (p projMultIntervalFloat64Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) projCol[i] = arg1.MulFloat(float64(arg2)) @@ -13798,7 +14971,7 @@ func (p projMultIntervalFloat64Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -13807,11 +14980,15 @@ func (p projMultIntervalFloat64Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -13833,11 +15010,15 @@ func (p projMultIntervalFloat64Op) Next() coldata.Batch { projCol[i] = arg1.MulFloat(float64(arg2)) } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -13865,7 +15046,9 @@ func (p projMultIntervalDecimalOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -13873,7 +15056,7 @@ func (p projMultIntervalDecimalOp) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -13891,7 +15074,7 @@ func (p projMultIntervalDecimalOp) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -13905,11 +15088,15 @@ func (p projMultIntervalDecimalOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -13941,11 +15128,15 @@ func (p projMultIntervalDecimalOp) Next() coldata.Batch { projCol[i] = arg1.MulFloat(f) } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -13973,7 +15164,9 @@ func (p projDivDecimalInt16Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -13981,7 +15174,7 @@ func (p projDivDecimalInt16Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -14007,7 +15200,7 @@ func (p projDivDecimalInt16Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -14029,11 +15222,15 @@ func (p projDivDecimalInt16Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -14081,11 +15278,15 @@ func (p projDivDecimalInt16Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -14113,7 +15314,9 @@ func (p projDivDecimalInt32Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -14121,7 +15324,7 @@ func (p projDivDecimalInt32Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -14147,7 +15350,7 @@ func (p projDivDecimalInt32Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -14169,11 +15372,15 @@ func (p projDivDecimalInt32Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -14221,11 +15428,15 @@ func (p projDivDecimalInt32Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -14253,7 +15464,9 @@ func (p projDivDecimalInt64Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -14261,7 +15474,7 @@ func (p projDivDecimalInt64Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -14287,7 +15500,7 @@ func (p projDivDecimalInt64Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -14309,11 +15522,15 @@ func (p projDivDecimalInt64Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -14361,11 +15578,15 @@ func (p projDivDecimalInt64Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -14393,7 +15614,9 @@ func (p projDivDecimalDecimalOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -14401,7 +15624,7 @@ func (p projDivDecimalDecimalOp) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -14426,7 +15649,7 @@ func (p projDivDecimalDecimalOp) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -14447,11 +15670,15 @@ func (p projDivDecimalDecimalOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -14497,11 +15724,15 @@ func (p projDivDecimalDecimalOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -14529,7 +15760,9 @@ func (p projDivInt16Int16Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -14537,7 +15770,7 @@ func (p projDivInt16Int16Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -14562,7 +15795,7 @@ func (p projDivInt16Int16Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -14583,11 +15816,15 @@ func (p projDivInt16Int16Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -14633,11 +15870,15 @@ func (p projDivInt16Int16Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -14665,7 +15906,9 @@ func (p projDivInt16Int32Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -14673,7 +15916,7 @@ func (p projDivInt16Int32Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -14698,7 +15941,7 @@ func (p projDivInt16Int32Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -14719,11 +15962,15 @@ func (p projDivInt16Int32Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -14769,11 +16016,15 @@ func (p projDivInt16Int32Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -14801,7 +16052,9 @@ func (p projDivInt16Int64Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -14809,7 +16062,7 @@ func (p projDivInt16Int64Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -14834,7 +16087,7 @@ func (p projDivInt16Int64Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -14855,11 +16108,15 @@ func (p projDivInt16Int64Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -14905,11 +16162,15 @@ func (p projDivInt16Int64Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -14937,7 +16198,9 @@ func (p projDivInt16DecimalOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -14945,7 +16208,7 @@ func (p projDivInt16DecimalOp) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -14972,7 +16235,7 @@ func (p projDivInt16DecimalOp) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -14995,11 +16258,15 @@ func (p projDivInt16DecimalOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -15049,11 +16316,15 @@ func (p projDivInt16DecimalOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -15081,7 +16352,9 @@ func (p projDivInt32Int16Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -15089,7 +16362,7 @@ func (p projDivInt32Int16Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -15114,7 +16387,7 @@ func (p projDivInt32Int16Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -15135,11 +16408,15 @@ func (p projDivInt32Int16Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -15185,11 +16462,15 @@ func (p projDivInt32Int16Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -15217,7 +16498,9 @@ func (p projDivInt32Int32Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -15225,7 +16508,7 @@ func (p projDivInt32Int32Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -15250,7 +16533,7 @@ func (p projDivInt32Int32Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -15271,11 +16554,15 @@ func (p projDivInt32Int32Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -15321,11 +16608,15 @@ func (p projDivInt32Int32Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -15353,7 +16644,9 @@ func (p projDivInt32Int64Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -15361,7 +16654,7 @@ func (p projDivInt32Int64Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -15386,7 +16679,7 @@ func (p projDivInt32Int64Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -15407,11 +16700,15 @@ func (p projDivInt32Int64Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -15457,11 +16754,15 @@ func (p projDivInt32Int64Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -15489,7 +16790,9 @@ func (p projDivInt32DecimalOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -15497,7 +16800,7 @@ func (p projDivInt32DecimalOp) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -15524,7 +16827,7 @@ func (p projDivInt32DecimalOp) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -15547,11 +16850,15 @@ func (p projDivInt32DecimalOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -15601,11 +16908,15 @@ func (p projDivInt32DecimalOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -15633,7 +16944,9 @@ func (p projDivInt64Int16Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -15641,7 +16954,7 @@ func (p projDivInt64Int16Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -15666,7 +16979,7 @@ func (p projDivInt64Int16Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -15687,11 +17000,15 @@ func (p projDivInt64Int16Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -15737,11 +17054,15 @@ func (p projDivInt64Int16Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -15769,7 +17090,9 @@ func (p projDivInt64Int32Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -15777,7 +17100,7 @@ func (p projDivInt64Int32Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -15802,7 +17125,7 @@ func (p projDivInt64Int32Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -15823,11 +17146,15 @@ func (p projDivInt64Int32Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -15873,11 +17200,15 @@ func (p projDivInt64Int32Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -15905,7 +17236,9 @@ func (p projDivInt64Int64Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -15913,7 +17246,7 @@ func (p projDivInt64Int64Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -15938,7 +17271,7 @@ func (p projDivInt64Int64Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -15959,11 +17292,15 @@ func (p projDivInt64Int64Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -16009,11 +17346,15 @@ func (p projDivInt64Int64Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -16041,7 +17382,9 @@ func (p projDivInt64DecimalOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -16049,7 +17392,7 @@ func (p projDivInt64DecimalOp) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -16076,7 +17419,7 @@ func (p projDivInt64DecimalOp) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -16099,11 +17442,15 @@ func (p projDivInt64DecimalOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -16153,11 +17500,15 @@ func (p projDivInt64DecimalOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -16185,7 +17536,9 @@ func (p projDivFloat64Float64Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -16193,7 +17546,7 @@ func (p projDivFloat64Float64Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -16215,7 +17568,7 @@ func (p projDivFloat64Float64Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -16233,11 +17586,15 @@ func (p projDivFloat64Float64Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -16277,11 +17634,15 @@ func (p projDivFloat64Float64Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -16309,7 +17670,9 @@ func (p projDivIntervalInt16Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -16317,7 +17680,7 @@ func (p projDivIntervalInt16Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -16334,7 +17697,7 @@ func (p projDivIntervalInt16Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -16347,11 +17710,15 @@ func (p projDivIntervalInt16Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -16381,11 +17748,15 @@ func (p projDivIntervalInt16Op) Next() coldata.Batch { projCol[i] = arg1.Div(int64(arg2)) } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -16413,7 +17784,9 @@ func (p projDivIntervalInt32Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -16421,7 +17794,7 @@ func (p projDivIntervalInt32Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -16438,7 +17811,7 @@ func (p projDivIntervalInt32Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -16451,11 +17824,15 @@ func (p projDivIntervalInt32Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -16485,11 +17862,15 @@ func (p projDivIntervalInt32Op) Next() coldata.Batch { projCol[i] = arg1.Div(int64(arg2)) } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -16517,7 +17898,9 @@ func (p projDivIntervalInt64Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -16525,7 +17908,7 @@ func (p projDivIntervalInt64Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -16542,7 +17925,7 @@ func (p projDivIntervalInt64Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -16555,11 +17938,15 @@ func (p projDivIntervalInt64Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -16589,11 +17976,15 @@ func (p projDivIntervalInt64Op) Next() coldata.Batch { projCol[i] = arg1.Div(int64(arg2)) } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -16621,7 +18012,9 @@ func (p projDivIntervalFloat64Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -16629,7 +18022,7 @@ func (p projDivIntervalFloat64Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -16646,7 +18039,7 @@ func (p projDivIntervalFloat64Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -16659,11 +18052,15 @@ func (p projDivIntervalFloat64Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -16693,11 +18090,15 @@ func (p projDivIntervalFloat64Op) Next() coldata.Batch { projCol[i] = arg1.DivFloat(float64(arg2)) } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -16725,7 +18126,9 @@ func (p projFloorDivDecimalInt16Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -16733,7 +18136,7 @@ func (p projFloorDivDecimalInt16Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -16759,7 +18162,7 @@ func (p projFloorDivDecimalInt16Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -16781,11 +18184,15 @@ func (p projFloorDivDecimalInt16Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -16833,11 +18240,15 @@ func (p projFloorDivDecimalInt16Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -16865,7 +18276,9 @@ func (p projFloorDivDecimalInt32Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -16873,7 +18286,7 @@ func (p projFloorDivDecimalInt32Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -16899,7 +18312,7 @@ func (p projFloorDivDecimalInt32Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -16921,11 +18334,15 @@ func (p projFloorDivDecimalInt32Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -16973,11 +18390,15 @@ func (p projFloorDivDecimalInt32Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -17005,7 +18426,9 @@ func (p projFloorDivDecimalInt64Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -17013,7 +18436,7 @@ func (p projFloorDivDecimalInt64Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -17039,7 +18462,7 @@ func (p projFloorDivDecimalInt64Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -17061,11 +18484,15 @@ func (p projFloorDivDecimalInt64Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -17113,11 +18540,15 @@ func (p projFloorDivDecimalInt64Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -17145,7 +18576,9 @@ func (p projFloorDivDecimalDecimalOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -17153,7 +18586,7 @@ func (p projFloorDivDecimalDecimalOp) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -17178,7 +18611,7 @@ func (p projFloorDivDecimalDecimalOp) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -17199,11 +18632,15 @@ func (p projFloorDivDecimalDecimalOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -17249,11 +18686,15 @@ func (p projFloorDivDecimalDecimalOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -17281,7 +18722,9 @@ func (p projFloorDivInt16Int16Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -17289,7 +18732,7 @@ func (p projFloorDivInt16Int16Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -17309,7 +18752,7 @@ func (p projFloorDivInt16Int16Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -17325,11 +18768,15 @@ func (p projFloorDivInt16Int16Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -17365,11 +18812,15 @@ func (p projFloorDivInt16Int16Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -17397,7 +18848,9 @@ func (p projFloorDivInt16Int32Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -17405,7 +18858,7 @@ func (p projFloorDivInt16Int32Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -17425,7 +18878,7 @@ func (p projFloorDivInt16Int32Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -17441,11 +18894,15 @@ func (p projFloorDivInt16Int32Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -17481,11 +18938,15 @@ func (p projFloorDivInt16Int32Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -17513,7 +18974,9 @@ func (p projFloorDivInt16Int64Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -17521,7 +18984,7 @@ func (p projFloorDivInt16Int64Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -17541,7 +19004,7 @@ func (p projFloorDivInt16Int64Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -17557,11 +19020,15 @@ func (p projFloorDivInt16Int64Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -17597,11 +19064,15 @@ func (p projFloorDivInt16Int64Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -17629,7 +19100,9 @@ func (p projFloorDivInt16DecimalOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -17637,7 +19110,7 @@ func (p projFloorDivInt16DecimalOp) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -17664,7 +19137,7 @@ func (p projFloorDivInt16DecimalOp) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -17687,11 +19160,15 @@ func (p projFloorDivInt16DecimalOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -17741,11 +19218,15 @@ func (p projFloorDivInt16DecimalOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -17773,7 +19254,9 @@ func (p projFloorDivInt32Int16Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -17781,7 +19264,7 @@ func (p projFloorDivInt32Int16Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -17801,7 +19284,7 @@ func (p projFloorDivInt32Int16Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -17817,11 +19300,15 @@ func (p projFloorDivInt32Int16Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -17857,11 +19344,15 @@ func (p projFloorDivInt32Int16Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -17889,7 +19380,9 @@ func (p projFloorDivInt32Int32Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -17897,7 +19390,7 @@ func (p projFloorDivInt32Int32Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -17917,7 +19410,7 @@ func (p projFloorDivInt32Int32Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -17933,11 +19426,15 @@ func (p projFloorDivInt32Int32Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -17973,11 +19470,15 @@ func (p projFloorDivInt32Int32Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -18005,7 +19506,9 @@ func (p projFloorDivInt32Int64Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -18013,7 +19516,7 @@ func (p projFloorDivInt32Int64Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -18033,7 +19536,7 @@ func (p projFloorDivInt32Int64Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -18049,11 +19552,15 @@ func (p projFloorDivInt32Int64Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -18089,11 +19596,15 @@ func (p projFloorDivInt32Int64Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -18121,7 +19632,9 @@ func (p projFloorDivInt32DecimalOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -18129,7 +19642,7 @@ func (p projFloorDivInt32DecimalOp) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -18156,7 +19669,7 @@ func (p projFloorDivInt32DecimalOp) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -18179,11 +19692,15 @@ func (p projFloorDivInt32DecimalOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -18233,11 +19750,15 @@ func (p projFloorDivInt32DecimalOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -18265,7 +19786,9 @@ func (p projFloorDivInt64Int16Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -18273,7 +19796,7 @@ func (p projFloorDivInt64Int16Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -18293,7 +19816,7 @@ func (p projFloorDivInt64Int16Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -18309,11 +19832,15 @@ func (p projFloorDivInt64Int16Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -18349,11 +19876,15 @@ func (p projFloorDivInt64Int16Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -18381,7 +19912,9 @@ func (p projFloorDivInt64Int32Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -18389,7 +19922,7 @@ func (p projFloorDivInt64Int32Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -18409,7 +19942,7 @@ func (p projFloorDivInt64Int32Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -18425,11 +19958,15 @@ func (p projFloorDivInt64Int32Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -18465,11 +20002,15 @@ func (p projFloorDivInt64Int32Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -18497,7 +20038,9 @@ func (p projFloorDivInt64Int64Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -18505,7 +20048,7 @@ func (p projFloorDivInt64Int64Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -18525,7 +20068,7 @@ func (p projFloorDivInt64Int64Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -18541,11 +20084,15 @@ func (p projFloorDivInt64Int64Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -18581,11 +20128,15 @@ func (p projFloorDivInt64Int64Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -18613,7 +20164,9 @@ func (p projFloorDivInt64DecimalOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -18621,7 +20174,7 @@ func (p projFloorDivInt64DecimalOp) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -18648,7 +20201,7 @@ func (p projFloorDivInt64DecimalOp) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -18671,11 +20224,15 @@ func (p projFloorDivInt64DecimalOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -18725,11 +20282,15 @@ func (p projFloorDivInt64DecimalOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -18757,7 +20318,9 @@ func (p projFloorDivFloat64Float64Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -18765,7 +20328,7 @@ func (p projFloorDivFloat64Float64Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -18787,7 +20350,7 @@ func (p projFloorDivFloat64Float64Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -18805,11 +20368,15 @@ func (p projFloorDivFloat64Float64Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -18849,11 +20416,15 @@ func (p projFloorDivFloat64Float64Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -18881,7 +20452,9 @@ func (p projModDecimalInt16Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -18889,7 +20462,7 @@ func (p projModDecimalInt16Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -18915,7 +20488,7 @@ func (p projModDecimalInt16Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -18937,11 +20510,15 @@ func (p projModDecimalInt16Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -18989,11 +20566,15 @@ func (p projModDecimalInt16Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -19021,7 +20602,9 @@ func (p projModDecimalInt32Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -19029,7 +20612,7 @@ func (p projModDecimalInt32Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -19055,7 +20638,7 @@ func (p projModDecimalInt32Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -19077,11 +20660,15 @@ func (p projModDecimalInt32Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -19129,11 +20716,15 @@ func (p projModDecimalInt32Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -19161,7 +20752,9 @@ func (p projModDecimalInt64Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -19169,7 +20762,7 @@ func (p projModDecimalInt64Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -19195,7 +20788,7 @@ func (p projModDecimalInt64Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -19217,11 +20810,15 @@ func (p projModDecimalInt64Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -19269,11 +20866,15 @@ func (p projModDecimalInt64Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -19301,7 +20902,9 @@ func (p projModDecimalDecimalOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -19309,7 +20912,7 @@ func (p projModDecimalDecimalOp) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -19334,7 +20937,7 @@ func (p projModDecimalDecimalOp) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -19355,11 +20958,15 @@ func (p projModDecimalDecimalOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -19405,11 +21012,15 @@ func (p projModDecimalDecimalOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -19437,7 +21048,9 @@ func (p projModInt16Int16Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -19445,7 +21058,7 @@ func (p projModInt16Int16Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -19465,7 +21078,7 @@ func (p projModInt16Int16Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -19481,11 +21094,15 @@ func (p projModInt16Int16Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -19521,11 +21138,15 @@ func (p projModInt16Int16Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -19553,7 +21174,9 @@ func (p projModInt16Int32Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -19561,7 +21184,7 @@ func (p projModInt16Int32Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -19581,7 +21204,7 @@ func (p projModInt16Int32Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -19597,11 +21220,15 @@ func (p projModInt16Int32Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -19637,11 +21264,15 @@ func (p projModInt16Int32Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -19669,7 +21300,9 @@ func (p projModInt16Int64Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -19677,7 +21310,7 @@ func (p projModInt16Int64Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -19697,7 +21330,7 @@ func (p projModInt16Int64Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -19713,11 +21346,15 @@ func (p projModInt16Int64Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -19753,11 +21390,15 @@ func (p projModInt16Int64Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -19785,7 +21426,9 @@ func (p projModInt16DecimalOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -19793,7 +21436,7 @@ func (p projModInt16DecimalOp) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -19820,7 +21463,7 @@ func (p projModInt16DecimalOp) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -19843,11 +21486,15 @@ func (p projModInt16DecimalOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -19897,11 +21544,15 @@ func (p projModInt16DecimalOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -19929,7 +21580,9 @@ func (p projModInt32Int16Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -19937,7 +21590,7 @@ func (p projModInt32Int16Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -19957,7 +21610,7 @@ func (p projModInt32Int16Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -19973,11 +21626,15 @@ func (p projModInt32Int16Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -20013,11 +21670,15 @@ func (p projModInt32Int16Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -20045,7 +21706,9 @@ func (p projModInt32Int32Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -20053,7 +21716,7 @@ func (p projModInt32Int32Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -20073,7 +21736,7 @@ func (p projModInt32Int32Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -20089,11 +21752,15 @@ func (p projModInt32Int32Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -20129,11 +21796,15 @@ func (p projModInt32Int32Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -20161,7 +21832,9 @@ func (p projModInt32Int64Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -20169,7 +21842,7 @@ func (p projModInt32Int64Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -20189,7 +21862,7 @@ func (p projModInt32Int64Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -20205,11 +21878,15 @@ func (p projModInt32Int64Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -20245,11 +21922,15 @@ func (p projModInt32Int64Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -20277,7 +21958,9 @@ func (p projModInt32DecimalOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -20285,7 +21968,7 @@ func (p projModInt32DecimalOp) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -20312,7 +21995,7 @@ func (p projModInt32DecimalOp) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -20335,11 +22018,15 @@ func (p projModInt32DecimalOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -20389,11 +22076,15 @@ func (p projModInt32DecimalOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -20421,7 +22112,9 @@ func (p projModInt64Int16Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -20429,7 +22122,7 @@ func (p projModInt64Int16Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -20449,7 +22142,7 @@ func (p projModInt64Int16Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -20465,11 +22158,15 @@ func (p projModInt64Int16Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -20505,11 +22202,15 @@ func (p projModInt64Int16Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -20537,7 +22238,9 @@ func (p projModInt64Int32Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -20545,7 +22248,7 @@ func (p projModInt64Int32Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -20565,7 +22268,7 @@ func (p projModInt64Int32Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -20581,11 +22284,15 @@ func (p projModInt64Int32Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -20621,11 +22328,15 @@ func (p projModInt64Int32Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -20653,7 +22364,9 @@ func (p projModInt64Int64Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -20661,7 +22374,7 @@ func (p projModInt64Int64Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -20681,7 +22394,7 @@ func (p projModInt64Int64Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -20697,11 +22410,15 @@ func (p projModInt64Int64Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -20737,11 +22454,15 @@ func (p projModInt64Int64Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -20769,7 +22490,9 @@ func (p projModInt64DecimalOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -20777,7 +22500,7 @@ func (p projModInt64DecimalOp) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -20804,7 +22527,7 @@ func (p projModInt64DecimalOp) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -20827,11 +22550,15 @@ func (p projModInt64DecimalOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -20881,11 +22608,15 @@ func (p projModInt64DecimalOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -20913,7 +22644,9 @@ func (p projModFloat64Float64Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -20921,7 +22654,7 @@ func (p projModFloat64Float64Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -20943,7 +22676,7 @@ func (p projModFloat64Float64Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -20961,11 +22694,15 @@ func (p projModFloat64Float64Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -21005,11 +22742,15 @@ func (p projModFloat64Float64Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -21037,7 +22778,9 @@ func (p projPowDecimalInt16Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -21045,7 +22788,7 @@ func (p projPowDecimalInt16Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -21067,7 +22810,7 @@ func (p projPowDecimalInt16Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -21085,11 +22828,15 @@ func (p projPowDecimalInt16Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -21129,11 +22876,15 @@ func (p projPowDecimalInt16Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -21161,7 +22912,9 @@ func (p projPowDecimalInt32Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -21169,7 +22922,7 @@ func (p projPowDecimalInt32Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -21191,7 +22944,7 @@ func (p projPowDecimalInt32Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -21209,11 +22962,15 @@ func (p projPowDecimalInt32Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -21253,11 +23010,15 @@ func (p projPowDecimalInt32Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -21285,7 +23046,9 @@ func (p projPowDecimalInt64Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -21293,7 +23056,7 @@ func (p projPowDecimalInt64Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -21315,7 +23078,7 @@ func (p projPowDecimalInt64Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -21333,11 +23096,15 @@ func (p projPowDecimalInt64Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -21377,11 +23144,15 @@ func (p projPowDecimalInt64Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -21409,7 +23180,9 @@ func (p projPowDecimalDecimalOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -21417,7 +23190,7 @@ func (p projPowDecimalDecimalOp) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -21438,7 +23211,7 @@ func (p projPowDecimalDecimalOp) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -21455,11 +23228,15 @@ func (p projPowDecimalDecimalOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -21497,11 +23274,15 @@ func (p projPowDecimalDecimalOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -21529,7 +23310,9 @@ func (p projPowInt16Int16Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -21537,7 +23320,7 @@ func (p projPowInt16Int16Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -21564,7 +23347,7 @@ func (p projPowInt16Int16Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -21587,11 +23370,15 @@ func (p projPowInt16Int16Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -21641,11 +23428,15 @@ func (p projPowInt16Int16Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -21673,7 +23464,9 @@ func (p projPowInt16Int32Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -21681,7 +23474,7 @@ func (p projPowInt16Int32Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -21708,7 +23501,7 @@ func (p projPowInt16Int32Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -21731,11 +23524,15 @@ func (p projPowInt16Int32Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -21785,11 +23582,15 @@ func (p projPowInt16Int32Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -21817,7 +23618,9 @@ func (p projPowInt16Int64Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -21825,7 +23628,7 @@ func (p projPowInt16Int64Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -21852,7 +23655,7 @@ func (p projPowInt16Int64Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -21875,11 +23678,15 @@ func (p projPowInt16Int64Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -21929,11 +23736,15 @@ func (p projPowInt16Int64Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -21961,7 +23772,9 @@ func (p projPowInt16DecimalOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -21969,7 +23782,7 @@ func (p projPowInt16DecimalOp) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -21992,7 +23805,7 @@ func (p projPowInt16DecimalOp) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -22011,11 +23824,15 @@ func (p projPowInt16DecimalOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -22057,11 +23874,15 @@ func (p projPowInt16DecimalOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -22089,7 +23910,9 @@ func (p projPowInt32Int16Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -22097,7 +23920,7 @@ func (p projPowInt32Int16Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -22124,7 +23947,7 @@ func (p projPowInt32Int16Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -22147,11 +23970,15 @@ func (p projPowInt32Int16Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -22201,11 +24028,15 @@ func (p projPowInt32Int16Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -22233,7 +24064,9 @@ func (p projPowInt32Int32Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -22241,7 +24074,7 @@ func (p projPowInt32Int32Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -22268,7 +24101,7 @@ func (p projPowInt32Int32Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -22291,11 +24124,15 @@ func (p projPowInt32Int32Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -22345,11 +24182,15 @@ func (p projPowInt32Int32Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -22377,7 +24218,9 @@ func (p projPowInt32Int64Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -22385,7 +24228,7 @@ func (p projPowInt32Int64Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -22412,7 +24255,7 @@ func (p projPowInt32Int64Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -22435,11 +24278,15 @@ func (p projPowInt32Int64Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -22489,11 +24336,15 @@ func (p projPowInt32Int64Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -22521,7 +24372,9 @@ func (p projPowInt32DecimalOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -22529,7 +24382,7 @@ func (p projPowInt32DecimalOp) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -22552,7 +24405,7 @@ func (p projPowInt32DecimalOp) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -22571,11 +24424,15 @@ func (p projPowInt32DecimalOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -22617,11 +24474,15 @@ func (p projPowInt32DecimalOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -22649,7 +24510,9 @@ func (p projPowInt64Int16Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -22657,7 +24520,7 @@ func (p projPowInt64Int16Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -22684,7 +24547,7 @@ func (p projPowInt64Int16Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -22707,11 +24570,15 @@ func (p projPowInt64Int16Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -22761,11 +24628,15 @@ func (p projPowInt64Int16Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -22793,7 +24664,9 @@ func (p projPowInt64Int32Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -22801,7 +24674,7 @@ func (p projPowInt64Int32Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -22828,7 +24701,7 @@ func (p projPowInt64Int32Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -22851,11 +24724,15 @@ func (p projPowInt64Int32Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -22905,11 +24782,15 @@ func (p projPowInt64Int32Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -22937,7 +24818,9 @@ func (p projPowInt64Int64Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -22945,7 +24828,7 @@ func (p projPowInt64Int64Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -22972,7 +24855,7 @@ func (p projPowInt64Int64Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -22995,11 +24878,15 @@ func (p projPowInt64Int64Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -23049,11 +24936,15 @@ func (p projPowInt64Int64Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -23081,7 +24972,9 @@ func (p projPowInt64DecimalOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -23089,7 +24982,7 @@ func (p projPowInt64DecimalOp) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -23112,7 +25005,7 @@ func (p projPowInt64DecimalOp) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -23131,11 +25024,15 @@ func (p projPowInt64DecimalOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -23177,11 +25074,15 @@ func (p projPowInt64DecimalOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -23209,7 +25110,9 @@ func (p projPowFloat64Float64Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -23217,7 +25120,7 @@ func (p projPowFloat64Float64Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -23235,7 +25138,7 @@ func (p projPowFloat64Float64Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -23249,11 +25152,15 @@ func (p projPowFloat64Float64Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -23285,11 +25192,15 @@ func (p projPowFloat64Float64Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -23317,7 +25228,9 @@ func (p projConcatBytesBytesOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -23325,7 +25238,7 @@ func (p projConcatBytesBytesOp) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -23345,7 +25258,7 @@ func (p projConcatBytesBytesOp) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -23359,11 +25272,15 @@ func (p projConcatBytesBytesOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -23397,11 +25314,15 @@ func (p projConcatBytesBytesOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -23429,7 +25350,9 @@ func (p projConcatJSONJSONOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -23437,7 +25360,7 @@ func (p projConcatJSONJSONOp) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -23456,7 +25379,7 @@ func (p projConcatJSONJSONOp) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -23469,11 +25392,15 @@ func (p projConcatJSONJSONOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -23505,11 +25432,15 @@ func (p projConcatJSONJSONOp) Next() coldata.Batch { projCol.Set(i, _j) } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -23539,7 +25470,9 @@ func (p projConcatDatumDatumOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) && !p.nullableArgs + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -23547,7 +25480,7 @@ func (p projConcatDatumDatumOp) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -23569,7 +25502,7 @@ func (p projConcatDatumDatumOp) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -23585,11 +25518,15 @@ func (p projConcatDatumDatumOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -23627,11 +25564,15 @@ func (p projConcatDatumDatumOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -23659,7 +25600,9 @@ func (p projLShiftInt16Int16Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -23667,7 +25610,7 @@ func (p projLShiftInt16Int16Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -23688,7 +25631,7 @@ func (p projLShiftInt16Int16Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -23705,11 +25648,15 @@ func (p projLShiftInt16Int16Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -23747,11 +25694,15 @@ func (p projLShiftInt16Int16Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -23779,7 +25730,9 @@ func (p projLShiftInt16Int32Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -23787,7 +25740,7 @@ func (p projLShiftInt16Int32Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -23808,7 +25761,7 @@ func (p projLShiftInt16Int32Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -23825,11 +25778,15 @@ func (p projLShiftInt16Int32Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -23867,11 +25824,15 @@ func (p projLShiftInt16Int32Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -23899,7 +25860,9 @@ func (p projLShiftInt16Int64Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -23907,7 +25870,7 @@ func (p projLShiftInt16Int64Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -23928,7 +25891,7 @@ func (p projLShiftInt16Int64Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -23945,11 +25908,15 @@ func (p projLShiftInt16Int64Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -23987,11 +25954,15 @@ func (p projLShiftInt16Int64Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -24019,7 +25990,9 @@ func (p projLShiftInt32Int16Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -24027,7 +26000,7 @@ func (p projLShiftInt32Int16Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -24048,7 +26021,7 @@ func (p projLShiftInt32Int16Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -24065,11 +26038,15 @@ func (p projLShiftInt32Int16Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -24107,11 +26084,15 @@ func (p projLShiftInt32Int16Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -24139,7 +26120,9 @@ func (p projLShiftInt32Int32Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -24147,7 +26130,7 @@ func (p projLShiftInt32Int32Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -24168,7 +26151,7 @@ func (p projLShiftInt32Int32Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -24185,11 +26168,15 @@ func (p projLShiftInt32Int32Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -24227,11 +26214,15 @@ func (p projLShiftInt32Int32Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -24259,7 +26250,9 @@ func (p projLShiftInt32Int64Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -24267,7 +26260,7 @@ func (p projLShiftInt32Int64Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -24288,7 +26281,7 @@ func (p projLShiftInt32Int64Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -24305,11 +26298,15 @@ func (p projLShiftInt32Int64Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -24347,11 +26344,15 @@ func (p projLShiftInt32Int64Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -24379,7 +26380,9 @@ func (p projLShiftInt64Int16Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -24387,7 +26390,7 @@ func (p projLShiftInt64Int16Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -24408,7 +26411,7 @@ func (p projLShiftInt64Int16Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -24425,11 +26428,15 @@ func (p projLShiftInt64Int16Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -24467,11 +26474,15 @@ func (p projLShiftInt64Int16Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -24499,7 +26510,9 @@ func (p projLShiftInt64Int32Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -24507,7 +26520,7 @@ func (p projLShiftInt64Int32Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -24528,7 +26541,7 @@ func (p projLShiftInt64Int32Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -24545,11 +26558,15 @@ func (p projLShiftInt64Int32Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -24587,11 +26604,15 @@ func (p projLShiftInt64Int32Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -24619,7 +26640,9 @@ func (p projLShiftInt64Int64Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -24627,7 +26650,7 @@ func (p projLShiftInt64Int64Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -24648,7 +26671,7 @@ func (p projLShiftInt64Int64Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -24665,11 +26688,15 @@ func (p projLShiftInt64Int64Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -24707,11 +26734,15 @@ func (p projLShiftInt64Int64Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -24741,7 +26772,9 @@ func (p projLShiftDatumInt16Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -24749,7 +26782,7 @@ func (p projLShiftDatumInt16Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -24775,7 +26808,7 @@ func (p projLShiftDatumInt16Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) //gcassert:bce arg2 := col2.Get(i) @@ -24796,11 +26829,15 @@ func (p projLShiftDatumInt16Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -24847,11 +26884,15 @@ func (p projLShiftDatumInt16Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -24881,7 +26922,9 @@ func (p projLShiftDatumInt32Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -24889,7 +26932,7 @@ func (p projLShiftDatumInt32Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -24915,7 +26958,7 @@ func (p projLShiftDatumInt32Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) //gcassert:bce arg2 := col2.Get(i) @@ -24936,11 +26979,15 @@ func (p projLShiftDatumInt32Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -24987,11 +27034,15 @@ func (p projLShiftDatumInt32Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -25021,7 +27072,9 @@ func (p projLShiftDatumInt64Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -25029,7 +27082,7 @@ func (p projLShiftDatumInt64Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -25055,7 +27108,7 @@ func (p projLShiftDatumInt64Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) //gcassert:bce arg2 := col2.Get(i) @@ -25076,11 +27129,15 @@ func (p projLShiftDatumInt64Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -25127,11 +27184,15 @@ func (p projLShiftDatumInt64Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -25159,7 +27220,9 @@ func (p projRShiftInt16Int16Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -25167,7 +27230,7 @@ func (p projRShiftInt16Int16Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -25188,7 +27251,7 @@ func (p projRShiftInt16Int16Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -25205,11 +27268,15 @@ func (p projRShiftInt16Int16Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -25247,11 +27314,15 @@ func (p projRShiftInt16Int16Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -25279,7 +27350,9 @@ func (p projRShiftInt16Int32Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -25287,7 +27360,7 @@ func (p projRShiftInt16Int32Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -25308,7 +27381,7 @@ func (p projRShiftInt16Int32Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -25325,11 +27398,15 @@ func (p projRShiftInt16Int32Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -25367,11 +27444,15 @@ func (p projRShiftInt16Int32Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -25399,7 +27480,9 @@ func (p projRShiftInt16Int64Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -25407,7 +27490,7 @@ func (p projRShiftInt16Int64Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -25428,7 +27511,7 @@ func (p projRShiftInt16Int64Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -25445,11 +27528,15 @@ func (p projRShiftInt16Int64Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -25487,11 +27574,15 @@ func (p projRShiftInt16Int64Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -25519,7 +27610,9 @@ func (p projRShiftInt32Int16Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -25527,7 +27620,7 @@ func (p projRShiftInt32Int16Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -25548,7 +27641,7 @@ func (p projRShiftInt32Int16Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -25565,11 +27658,15 @@ func (p projRShiftInt32Int16Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -25607,11 +27704,15 @@ func (p projRShiftInt32Int16Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -25639,7 +27740,9 @@ func (p projRShiftInt32Int32Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -25647,7 +27750,7 @@ func (p projRShiftInt32Int32Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -25668,7 +27771,7 @@ func (p projRShiftInt32Int32Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -25685,11 +27788,15 @@ func (p projRShiftInt32Int32Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -25727,11 +27834,15 @@ func (p projRShiftInt32Int32Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -25759,7 +27870,9 @@ func (p projRShiftInt32Int64Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -25767,7 +27880,7 @@ func (p projRShiftInt32Int64Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -25788,7 +27901,7 @@ func (p projRShiftInt32Int64Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -25805,11 +27918,15 @@ func (p projRShiftInt32Int64Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -25847,11 +27964,15 @@ func (p projRShiftInt32Int64Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -25879,7 +28000,9 @@ func (p projRShiftInt64Int16Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -25887,7 +28010,7 @@ func (p projRShiftInt64Int16Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -25908,7 +28031,7 @@ func (p projRShiftInt64Int16Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -25925,11 +28048,15 @@ func (p projRShiftInt64Int16Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -25967,11 +28094,15 @@ func (p projRShiftInt64Int16Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -25999,7 +28130,9 @@ func (p projRShiftInt64Int32Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -26007,7 +28140,7 @@ func (p projRShiftInt64Int32Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -26028,7 +28161,7 @@ func (p projRShiftInt64Int32Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -26045,11 +28178,15 @@ func (p projRShiftInt64Int32Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -26087,11 +28224,15 @@ func (p projRShiftInt64Int32Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -26119,7 +28260,9 @@ func (p projRShiftInt64Int64Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -26127,7 +28270,7 @@ func (p projRShiftInt64Int64Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -26148,7 +28291,7 @@ func (p projRShiftInt64Int64Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -26165,11 +28308,15 @@ func (p projRShiftInt64Int64Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -26207,11 +28354,15 @@ func (p projRShiftInt64Int64Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -26241,7 +28392,9 @@ func (p projRShiftDatumInt16Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -26249,7 +28402,7 @@ func (p projRShiftDatumInt16Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -26275,7 +28428,7 @@ func (p projRShiftDatumInt16Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) //gcassert:bce arg2 := col2.Get(i) @@ -26296,11 +28449,15 @@ func (p projRShiftDatumInt16Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -26347,11 +28504,15 @@ func (p projRShiftDatumInt16Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -26381,7 +28542,9 @@ func (p projRShiftDatumInt32Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -26389,7 +28552,7 @@ func (p projRShiftDatumInt32Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -26415,7 +28578,7 @@ func (p projRShiftDatumInt32Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) //gcassert:bce arg2 := col2.Get(i) @@ -26436,11 +28599,15 @@ func (p projRShiftDatumInt32Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -26487,11 +28654,15 @@ func (p projRShiftDatumInt32Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -26521,7 +28692,9 @@ func (p projRShiftDatumInt64Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -26529,7 +28702,7 @@ func (p projRShiftDatumInt64Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -26555,7 +28728,7 @@ func (p projRShiftDatumInt64Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) //gcassert:bce arg2 := col2.Get(i) @@ -26576,11 +28749,15 @@ func (p projRShiftDatumInt64Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -26627,11 +28804,15 @@ func (p projRShiftDatumInt64Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -26659,7 +28840,9 @@ func (p projJSONFetchValJSONBytesOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -26667,7 +28850,7 @@ func (p projJSONFetchValJSONBytesOp) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -26692,7 +28875,7 @@ func (p projJSONFetchValJSONBytesOp) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -26711,11 +28894,15 @@ func (p projJSONFetchValJSONBytesOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -26759,11 +28946,15 @@ func (p projJSONFetchValJSONBytesOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -26791,7 +28982,9 @@ func (p projJSONFetchValJSONInt16Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -26799,7 +28992,7 @@ func (p projJSONFetchValJSONInt16Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -26821,7 +29014,7 @@ func (p projJSONFetchValJSONInt16Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) //gcassert:bce arg2 := col2.Get(i) @@ -26838,11 +29031,15 @@ func (p projJSONFetchValJSONInt16Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -26881,11 +29078,15 @@ func (p projJSONFetchValJSONInt16Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -26913,7 +29114,9 @@ func (p projJSONFetchValJSONInt32Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -26921,7 +29124,7 @@ func (p projJSONFetchValJSONInt32Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -26943,7 +29146,7 @@ func (p projJSONFetchValJSONInt32Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) //gcassert:bce arg2 := col2.Get(i) @@ -26960,11 +29163,15 @@ func (p projJSONFetchValJSONInt32Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -27003,11 +29210,15 @@ func (p projJSONFetchValJSONInt32Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -27035,7 +29246,9 @@ func (p projJSONFetchValJSONInt64Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -27043,7 +29256,7 @@ func (p projJSONFetchValJSONInt64Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -27065,7 +29278,7 @@ func (p projJSONFetchValJSONInt64Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) //gcassert:bce arg2 := col2.Get(i) @@ -27082,11 +29295,15 @@ func (p projJSONFetchValJSONInt64Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -27125,11 +29342,15 @@ func (p projJSONFetchValJSONInt64Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -27157,7 +29378,9 @@ func (p projJSONFetchTextJSONBytesOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -27165,7 +29388,7 @@ func (p projJSONFetchTextJSONBytesOp) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -27199,7 +29422,7 @@ func (p projJSONFetchTextJSONBytesOp) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -27227,11 +29450,15 @@ func (p projJSONFetchTextJSONBytesOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -27293,11 +29520,15 @@ func (p projJSONFetchTextJSONBytesOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -27325,7 +29556,9 @@ func (p projJSONFetchTextJSONInt16Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -27333,7 +29566,7 @@ func (p projJSONFetchTextJSONInt16Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -27364,7 +29597,7 @@ func (p projJSONFetchTextJSONInt16Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) //gcassert:bce arg2 := col2.Get(i) @@ -27390,11 +29623,15 @@ func (p projJSONFetchTextJSONInt16Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -27451,11 +29688,15 @@ func (p projJSONFetchTextJSONInt16Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -27483,7 +29724,9 @@ func (p projJSONFetchTextJSONInt32Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -27491,7 +29734,7 @@ func (p projJSONFetchTextJSONInt32Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -27522,7 +29765,7 @@ func (p projJSONFetchTextJSONInt32Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) //gcassert:bce arg2 := col2.Get(i) @@ -27548,11 +29791,15 @@ func (p projJSONFetchTextJSONInt32Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -27609,11 +29856,15 @@ func (p projJSONFetchTextJSONInt32Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -27641,7 +29892,9 @@ func (p projJSONFetchTextJSONInt64Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -27649,7 +29902,7 @@ func (p projJSONFetchTextJSONInt64Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -27680,7 +29933,7 @@ func (p projJSONFetchTextJSONInt64Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) //gcassert:bce arg2 := col2.Get(i) @@ -27706,11 +29959,15 @@ func (p projJSONFetchTextJSONInt64Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -27767,11 +30024,15 @@ func (p projJSONFetchTextJSONInt64Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -27799,7 +30060,9 @@ func (p projJSONFetchValPathJSONDatumOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -27807,7 +30070,7 @@ func (p projJSONFetchValPathJSONDatumOp) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -27829,7 +30092,7 @@ func (p projJSONFetchValPathJSONDatumOp) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -27845,11 +30108,15 @@ func (p projJSONFetchValPathJSONDatumOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -27887,11 +30154,15 @@ func (p projJSONFetchValPathJSONDatumOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -27919,7 +30190,9 @@ func (p projJSONFetchTextPathJSONDatumOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -27927,7 +30200,7 @@ func (p projJSONFetchTextPathJSONDatumOp) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -27959,7 +30232,7 @@ func (p projJSONFetchTextPathJSONDatumOp) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -27985,11 +30258,15 @@ func (p projJSONFetchTextPathJSONDatumOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -28047,11 +30324,15 @@ func (p projJSONFetchTextPathJSONDatumOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -28079,7 +30360,9 @@ func (p projEQBoolBoolOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -28087,7 +30370,7 @@ func (p projEQBoolBoolOp) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -28114,7 +30397,7 @@ func (p projEQBoolBoolOp) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -28137,11 +30420,15 @@ func (p projEQBoolBoolOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -28191,11 +30478,15 @@ func (p projEQBoolBoolOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -28223,7 +30514,9 @@ func (p projEQBytesBytesOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -28231,7 +30524,7 @@ func (p projEQBytesBytesOp) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -28250,7 +30543,7 @@ func (p projEQBytesBytesOp) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -28263,11 +30556,15 @@ func (p projEQBytesBytesOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -28299,11 +30596,15 @@ func (p projEQBytesBytesOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -28331,7 +30632,9 @@ func (p projEQDecimalInt16Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -28339,7 +30642,7 @@ func (p projEQDecimalInt16Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -28364,7 +30667,7 @@ func (p projEQDecimalInt16Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -28385,11 +30688,15 @@ func (p projEQDecimalInt16Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -28435,11 +30742,15 @@ func (p projEQDecimalInt16Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -28467,7 +30778,9 @@ func (p projEQDecimalInt32Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -28475,7 +30788,7 @@ func (p projEQDecimalInt32Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -28500,7 +30813,7 @@ func (p projEQDecimalInt32Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -28521,11 +30834,15 @@ func (p projEQDecimalInt32Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -28571,11 +30888,15 @@ func (p projEQDecimalInt32Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -28603,7 +30924,9 @@ func (p projEQDecimalInt64Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -28611,7 +30934,7 @@ func (p projEQDecimalInt64Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -28636,7 +30959,7 @@ func (p projEQDecimalInt64Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -28657,11 +30980,15 @@ func (p projEQDecimalInt64Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -28707,11 +31034,15 @@ func (p projEQDecimalInt64Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -28739,7 +31070,9 @@ func (p projEQDecimalFloat64Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -28747,7 +31080,7 @@ func (p projEQDecimalFloat64Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -28774,7 +31107,7 @@ func (p projEQDecimalFloat64Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -28797,11 +31130,15 @@ func (p projEQDecimalFloat64Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -28851,11 +31188,15 @@ func (p projEQDecimalFloat64Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -28883,7 +31224,9 @@ func (p projEQDecimalDecimalOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -28891,7 +31234,7 @@ func (p projEQDecimalDecimalOp) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -28910,7 +31253,7 @@ func (p projEQDecimalDecimalOp) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -28925,11 +31268,15 @@ func (p projEQDecimalDecimalOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -28963,11 +31310,15 @@ func (p projEQDecimalDecimalOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -28995,7 +31346,9 @@ func (p projEQInt16Int16Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -29003,7 +31356,7 @@ func (p projEQInt16Int16Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -29033,7 +31386,7 @@ func (p projEQInt16Int16Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -29059,11 +31412,15 @@ func (p projEQInt16Int16Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -29119,11 +31476,15 @@ func (p projEQInt16Int16Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -29151,7 +31512,9 @@ func (p projEQInt16Int32Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -29159,7 +31522,7 @@ func (p projEQInt16Int32Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -29189,7 +31552,7 @@ func (p projEQInt16Int32Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -29215,11 +31578,15 @@ func (p projEQInt16Int32Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -29275,11 +31642,15 @@ func (p projEQInt16Int32Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -29307,7 +31678,9 @@ func (p projEQInt16Int64Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -29315,7 +31688,7 @@ func (p projEQInt16Int64Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -29345,7 +31718,7 @@ func (p projEQInt16Int64Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -29371,11 +31744,15 @@ func (p projEQInt16Int64Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -29431,11 +31808,15 @@ func (p projEQInt16Int64Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -29463,7 +31844,9 @@ func (p projEQInt16Float64Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -29471,7 +31854,7 @@ func (p projEQInt16Float64Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -29509,7 +31892,7 @@ func (p projEQInt16Float64Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -29543,11 +31926,15 @@ func (p projEQInt16Float64Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -29619,11 +32006,15 @@ func (p projEQInt16Float64Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -29651,7 +32042,9 @@ func (p projEQInt16DecimalOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -29659,7 +32052,7 @@ func (p projEQInt16DecimalOp) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -29684,7 +32077,7 @@ func (p projEQInt16DecimalOp) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -29705,11 +32098,15 @@ func (p projEQInt16DecimalOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -29755,11 +32152,15 @@ func (p projEQInt16DecimalOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -29787,7 +32188,9 @@ func (p projEQInt32Int16Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -29795,7 +32198,7 @@ func (p projEQInt32Int16Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -29825,7 +32228,7 @@ func (p projEQInt32Int16Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -29851,11 +32254,15 @@ func (p projEQInt32Int16Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -29911,11 +32318,15 @@ func (p projEQInt32Int16Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -29943,7 +32354,9 @@ func (p projEQInt32Int32Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -29951,7 +32364,7 @@ func (p projEQInt32Int32Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -29981,7 +32394,7 @@ func (p projEQInt32Int32Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -30007,11 +32420,15 @@ func (p projEQInt32Int32Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -30067,11 +32484,15 @@ func (p projEQInt32Int32Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -30099,7 +32520,9 @@ func (p projEQInt32Int64Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -30107,7 +32530,7 @@ func (p projEQInt32Int64Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -30137,7 +32560,7 @@ func (p projEQInt32Int64Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -30163,11 +32586,15 @@ func (p projEQInt32Int64Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -30223,11 +32650,15 @@ func (p projEQInt32Int64Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -30255,7 +32686,9 @@ func (p projEQInt32Float64Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -30263,7 +32696,7 @@ func (p projEQInt32Float64Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -30301,7 +32734,7 @@ func (p projEQInt32Float64Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -30335,11 +32768,15 @@ func (p projEQInt32Float64Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -30411,11 +32848,15 @@ func (p projEQInt32Float64Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -30443,7 +32884,9 @@ func (p projEQInt32DecimalOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -30451,7 +32894,7 @@ func (p projEQInt32DecimalOp) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -30476,7 +32919,7 @@ func (p projEQInt32DecimalOp) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -30497,11 +32940,15 @@ func (p projEQInt32DecimalOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -30547,11 +32994,15 @@ func (p projEQInt32DecimalOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -30579,7 +33030,9 @@ func (p projEQInt64Int16Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -30587,7 +33040,7 @@ func (p projEQInt64Int16Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -30617,7 +33070,7 @@ func (p projEQInt64Int16Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -30643,11 +33096,15 @@ func (p projEQInt64Int16Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -30703,11 +33160,15 @@ func (p projEQInt64Int16Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -30735,7 +33196,9 @@ func (p projEQInt64Int32Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -30743,7 +33206,7 @@ func (p projEQInt64Int32Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -30773,7 +33236,7 @@ func (p projEQInt64Int32Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -30799,11 +33262,15 @@ func (p projEQInt64Int32Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -30859,11 +33326,15 @@ func (p projEQInt64Int32Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -30891,7 +33362,9 @@ func (p projEQInt64Int64Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -30899,7 +33372,7 @@ func (p projEQInt64Int64Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -30929,7 +33402,7 @@ func (p projEQInt64Int64Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -30955,11 +33428,15 @@ func (p projEQInt64Int64Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -31015,11 +33492,15 @@ func (p projEQInt64Int64Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -31047,7 +33528,9 @@ func (p projEQInt64Float64Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -31055,7 +33538,7 @@ func (p projEQInt64Float64Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -31093,7 +33576,7 @@ func (p projEQInt64Float64Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -31127,11 +33610,15 @@ func (p projEQInt64Float64Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -31203,11 +33690,15 @@ func (p projEQInt64Float64Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -31235,7 +33726,9 @@ func (p projEQInt64DecimalOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -31243,7 +33736,7 @@ func (p projEQInt64DecimalOp) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -31268,7 +33761,7 @@ func (p projEQInt64DecimalOp) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -31289,11 +33782,15 @@ func (p projEQInt64DecimalOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -31339,11 +33836,15 @@ func (p projEQInt64DecimalOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -31371,7 +33872,9 @@ func (p projEQFloat64Int16Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -31379,7 +33882,7 @@ func (p projEQFloat64Int16Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -31417,7 +33920,7 @@ func (p projEQFloat64Int16Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -31451,11 +33954,15 @@ func (p projEQFloat64Int16Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -31527,11 +34034,15 @@ func (p projEQFloat64Int16Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -31559,7 +34070,9 @@ func (p projEQFloat64Int32Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -31567,7 +34080,7 @@ func (p projEQFloat64Int32Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -31605,7 +34118,7 @@ func (p projEQFloat64Int32Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -31639,11 +34152,15 @@ func (p projEQFloat64Int32Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -31715,11 +34232,15 @@ func (p projEQFloat64Int32Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -31747,7 +34268,9 @@ func (p projEQFloat64Int64Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -31755,7 +34278,7 @@ func (p projEQFloat64Int64Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -31793,7 +34316,7 @@ func (p projEQFloat64Int64Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -31827,11 +34350,15 @@ func (p projEQFloat64Int64Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -31903,11 +34430,15 @@ func (p projEQFloat64Int64Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -31935,7 +34466,9 @@ func (p projEQFloat64Float64Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -31943,7 +34476,7 @@ func (p projEQFloat64Float64Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -31981,7 +34514,7 @@ func (p projEQFloat64Float64Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -32015,11 +34548,15 @@ func (p projEQFloat64Float64Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -32091,11 +34628,15 @@ func (p projEQFloat64Float64Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -32123,7 +34664,9 @@ func (p projEQFloat64DecimalOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -32131,7 +34674,7 @@ func (p projEQFloat64DecimalOp) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -32158,7 +34701,7 @@ func (p projEQFloat64DecimalOp) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -32181,11 +34724,15 @@ func (p projEQFloat64DecimalOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -32235,11 +34782,15 @@ func (p projEQFloat64DecimalOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -32267,7 +34818,9 @@ func (p projEQTimestampTimestampOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -32275,7 +34828,7 @@ func (p projEQTimestampTimestampOp) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -32301,7 +34854,7 @@ func (p projEQTimestampTimestampOp) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -32323,11 +34876,15 @@ func (p projEQTimestampTimestampOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -32375,11 +34932,15 @@ func (p projEQTimestampTimestampOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -32407,7 +34968,9 @@ func (p projEQIntervalIntervalOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -32415,7 +34978,7 @@ func (p projEQIntervalIntervalOp) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -32434,7 +34997,7 @@ func (p projEQIntervalIntervalOp) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -32449,11 +35012,15 @@ func (p projEQIntervalIntervalOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -32487,11 +35054,15 @@ func (p projEQIntervalIntervalOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -32519,7 +35090,9 @@ func (p projEQJSONJSONOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -32527,7 +35100,7 @@ func (p projEQJSONJSONOp) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -32552,7 +35125,7 @@ func (p projEQJSONJSONOp) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -32571,11 +35144,15 @@ func (p projEQJSONJSONOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -32619,11 +35196,15 @@ func (p projEQJSONJSONOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -32651,7 +35232,9 @@ func (p projEQDatumDatumOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -32659,7 +35242,7 @@ func (p projEQDatumDatumOp) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -32680,7 +35263,7 @@ func (p projEQDatumDatumOp) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -32695,11 +35278,15 @@ func (p projEQDatumDatumOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -32735,11 +35322,15 @@ func (p projEQDatumDatumOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -32767,7 +35358,9 @@ func (p projNEBoolBoolOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -32775,7 +35368,7 @@ func (p projNEBoolBoolOp) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -32802,7 +35395,7 @@ func (p projNEBoolBoolOp) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -32825,11 +35418,15 @@ func (p projNEBoolBoolOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -32879,11 +35476,15 @@ func (p projNEBoolBoolOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -32911,7 +35512,9 @@ func (p projNEBytesBytesOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -32919,7 +35522,7 @@ func (p projNEBytesBytesOp) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -32938,7 +35541,7 @@ func (p projNEBytesBytesOp) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -32951,11 +35554,15 @@ func (p projNEBytesBytesOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -32987,11 +35594,15 @@ func (p projNEBytesBytesOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -33019,7 +35630,9 @@ func (p projNEDecimalInt16Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -33027,7 +35640,7 @@ func (p projNEDecimalInt16Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -33052,7 +35665,7 @@ func (p projNEDecimalInt16Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -33073,11 +35686,15 @@ func (p projNEDecimalInt16Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -33123,11 +35740,15 @@ func (p projNEDecimalInt16Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -33155,7 +35776,9 @@ func (p projNEDecimalInt32Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -33163,7 +35786,7 @@ func (p projNEDecimalInt32Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -33188,7 +35811,7 @@ func (p projNEDecimalInt32Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -33209,11 +35832,15 @@ func (p projNEDecimalInt32Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -33259,11 +35886,15 @@ func (p projNEDecimalInt32Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -33291,7 +35922,9 @@ func (p projNEDecimalInt64Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -33299,7 +35932,7 @@ func (p projNEDecimalInt64Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -33324,7 +35957,7 @@ func (p projNEDecimalInt64Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -33345,11 +35978,15 @@ func (p projNEDecimalInt64Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -33395,11 +36032,15 @@ func (p projNEDecimalInt64Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -33427,7 +36068,9 @@ func (p projNEDecimalFloat64Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -33435,7 +36078,7 @@ func (p projNEDecimalFloat64Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -33462,7 +36105,7 @@ func (p projNEDecimalFloat64Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -33485,11 +36128,15 @@ func (p projNEDecimalFloat64Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -33539,11 +36186,15 @@ func (p projNEDecimalFloat64Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -33571,7 +36222,9 @@ func (p projNEDecimalDecimalOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -33579,7 +36232,7 @@ func (p projNEDecimalDecimalOp) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -33598,7 +36251,7 @@ func (p projNEDecimalDecimalOp) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -33613,11 +36266,15 @@ func (p projNEDecimalDecimalOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -33651,11 +36308,15 @@ func (p projNEDecimalDecimalOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -33683,7 +36344,9 @@ func (p projNEInt16Int16Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -33691,7 +36354,7 @@ func (p projNEInt16Int16Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -33721,7 +36384,7 @@ func (p projNEInt16Int16Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -33747,11 +36410,15 @@ func (p projNEInt16Int16Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -33807,11 +36474,15 @@ func (p projNEInt16Int16Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -33839,7 +36510,9 @@ func (p projNEInt16Int32Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -33847,7 +36520,7 @@ func (p projNEInt16Int32Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -33877,7 +36550,7 @@ func (p projNEInt16Int32Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -33903,11 +36576,15 @@ func (p projNEInt16Int32Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -33963,11 +36640,15 @@ func (p projNEInt16Int32Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -33995,7 +36676,9 @@ func (p projNEInt16Int64Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -34003,7 +36686,7 @@ func (p projNEInt16Int64Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -34033,7 +36716,7 @@ func (p projNEInt16Int64Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -34059,11 +36742,15 @@ func (p projNEInt16Int64Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -34119,11 +36806,15 @@ func (p projNEInt16Int64Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -34151,7 +36842,9 @@ func (p projNEInt16Float64Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -34159,7 +36852,7 @@ func (p projNEInt16Float64Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -34197,7 +36890,7 @@ func (p projNEInt16Float64Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -34231,11 +36924,15 @@ func (p projNEInt16Float64Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -34307,11 +37004,15 @@ func (p projNEInt16Float64Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -34339,7 +37040,9 @@ func (p projNEInt16DecimalOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -34347,7 +37050,7 @@ func (p projNEInt16DecimalOp) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -34372,7 +37075,7 @@ func (p projNEInt16DecimalOp) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -34393,11 +37096,15 @@ func (p projNEInt16DecimalOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -34443,11 +37150,15 @@ func (p projNEInt16DecimalOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -34475,7 +37186,9 @@ func (p projNEInt32Int16Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -34483,7 +37196,7 @@ func (p projNEInt32Int16Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -34513,7 +37226,7 @@ func (p projNEInt32Int16Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -34539,11 +37252,15 @@ func (p projNEInt32Int16Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -34599,11 +37316,15 @@ func (p projNEInt32Int16Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -34631,7 +37352,9 @@ func (p projNEInt32Int32Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -34639,7 +37362,7 @@ func (p projNEInt32Int32Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -34669,7 +37392,7 @@ func (p projNEInt32Int32Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -34695,11 +37418,15 @@ func (p projNEInt32Int32Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -34755,11 +37482,15 @@ func (p projNEInt32Int32Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -34787,7 +37518,9 @@ func (p projNEInt32Int64Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -34795,7 +37528,7 @@ func (p projNEInt32Int64Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -34825,7 +37558,7 @@ func (p projNEInt32Int64Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -34851,11 +37584,15 @@ func (p projNEInt32Int64Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -34911,11 +37648,15 @@ func (p projNEInt32Int64Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -34943,7 +37684,9 @@ func (p projNEInt32Float64Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -34951,7 +37694,7 @@ func (p projNEInt32Float64Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -34989,7 +37732,7 @@ func (p projNEInt32Float64Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -35023,11 +37766,15 @@ func (p projNEInt32Float64Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -35099,11 +37846,15 @@ func (p projNEInt32Float64Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -35131,7 +37882,9 @@ func (p projNEInt32DecimalOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -35139,7 +37892,7 @@ func (p projNEInt32DecimalOp) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -35164,7 +37917,7 @@ func (p projNEInt32DecimalOp) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -35185,11 +37938,15 @@ func (p projNEInt32DecimalOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -35235,11 +37992,15 @@ func (p projNEInt32DecimalOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -35267,7 +38028,9 @@ func (p projNEInt64Int16Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -35275,7 +38038,7 @@ func (p projNEInt64Int16Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -35305,7 +38068,7 @@ func (p projNEInt64Int16Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -35331,11 +38094,15 @@ func (p projNEInt64Int16Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -35391,11 +38158,15 @@ func (p projNEInt64Int16Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -35423,7 +38194,9 @@ func (p projNEInt64Int32Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -35431,7 +38204,7 @@ func (p projNEInt64Int32Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -35461,7 +38234,7 @@ func (p projNEInt64Int32Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -35487,11 +38260,15 @@ func (p projNEInt64Int32Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -35547,11 +38324,15 @@ func (p projNEInt64Int32Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -35579,7 +38360,9 @@ func (p projNEInt64Int64Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -35587,7 +38370,7 @@ func (p projNEInt64Int64Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -35617,7 +38400,7 @@ func (p projNEInt64Int64Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -35643,11 +38426,15 @@ func (p projNEInt64Int64Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -35703,11 +38490,15 @@ func (p projNEInt64Int64Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -35735,7 +38526,9 @@ func (p projNEInt64Float64Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -35743,7 +38536,7 @@ func (p projNEInt64Float64Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -35781,7 +38574,7 @@ func (p projNEInt64Float64Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -35815,11 +38608,15 @@ func (p projNEInt64Float64Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -35891,11 +38688,15 @@ func (p projNEInt64Float64Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -35923,7 +38724,9 @@ func (p projNEInt64DecimalOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -35931,7 +38734,7 @@ func (p projNEInt64DecimalOp) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -35956,7 +38759,7 @@ func (p projNEInt64DecimalOp) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -35977,11 +38780,15 @@ func (p projNEInt64DecimalOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -36027,11 +38834,15 @@ func (p projNEInt64DecimalOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -36059,7 +38870,9 @@ func (p projNEFloat64Int16Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -36067,7 +38880,7 @@ func (p projNEFloat64Int16Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -36105,7 +38918,7 @@ func (p projNEFloat64Int16Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -36139,11 +38952,15 @@ func (p projNEFloat64Int16Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -36215,11 +39032,15 @@ func (p projNEFloat64Int16Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -36247,7 +39068,9 @@ func (p projNEFloat64Int32Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -36255,7 +39078,7 @@ func (p projNEFloat64Int32Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -36293,7 +39116,7 @@ func (p projNEFloat64Int32Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -36327,11 +39150,15 @@ func (p projNEFloat64Int32Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -36403,11 +39230,15 @@ func (p projNEFloat64Int32Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -36435,7 +39266,9 @@ func (p projNEFloat64Int64Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -36443,7 +39276,7 @@ func (p projNEFloat64Int64Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -36481,7 +39314,7 @@ func (p projNEFloat64Int64Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -36515,11 +39348,15 @@ func (p projNEFloat64Int64Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -36591,11 +39428,15 @@ func (p projNEFloat64Int64Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -36623,7 +39464,9 @@ func (p projNEFloat64Float64Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -36631,7 +39474,7 @@ func (p projNEFloat64Float64Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -36669,7 +39512,7 @@ func (p projNEFloat64Float64Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -36703,11 +39546,15 @@ func (p projNEFloat64Float64Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -36779,11 +39626,15 @@ func (p projNEFloat64Float64Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -36811,7 +39662,9 @@ func (p projNEFloat64DecimalOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -36819,7 +39672,7 @@ func (p projNEFloat64DecimalOp) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -36846,7 +39699,7 @@ func (p projNEFloat64DecimalOp) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -36869,11 +39722,15 @@ func (p projNEFloat64DecimalOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -36923,11 +39780,15 @@ func (p projNEFloat64DecimalOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -36955,7 +39816,9 @@ func (p projNETimestampTimestampOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -36963,7 +39826,7 @@ func (p projNETimestampTimestampOp) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -36989,7 +39852,7 @@ func (p projNETimestampTimestampOp) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -37011,11 +39874,15 @@ func (p projNETimestampTimestampOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -37063,11 +39930,15 @@ func (p projNETimestampTimestampOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -37095,7 +39966,9 @@ func (p projNEIntervalIntervalOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -37103,7 +39976,7 @@ func (p projNEIntervalIntervalOp) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -37122,7 +39995,7 @@ func (p projNEIntervalIntervalOp) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -37137,11 +40010,15 @@ func (p projNEIntervalIntervalOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -37175,11 +40052,15 @@ func (p projNEIntervalIntervalOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -37207,7 +40088,9 @@ func (p projNEJSONJSONOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -37215,7 +40098,7 @@ func (p projNEJSONJSONOp) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -37240,7 +40123,7 @@ func (p projNEJSONJSONOp) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -37259,11 +40142,15 @@ func (p projNEJSONJSONOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -37307,11 +40194,15 @@ func (p projNEJSONJSONOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -37339,7 +40230,9 @@ func (p projNEDatumDatumOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -37347,7 +40240,7 @@ func (p projNEDatumDatumOp) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -37368,7 +40261,7 @@ func (p projNEDatumDatumOp) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -37383,11 +40276,15 @@ func (p projNEDatumDatumOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -37423,11 +40320,15 @@ func (p projNEDatumDatumOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -37455,7 +40356,9 @@ func (p projLTBoolBoolOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -37463,7 +40366,7 @@ func (p projLTBoolBoolOp) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -37490,7 +40393,7 @@ func (p projLTBoolBoolOp) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -37513,11 +40416,15 @@ func (p projLTBoolBoolOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -37567,11 +40474,15 @@ func (p projLTBoolBoolOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -37599,7 +40510,9 @@ func (p projLTBytesBytesOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -37607,7 +40520,7 @@ func (p projLTBytesBytesOp) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -37626,7 +40539,7 @@ func (p projLTBytesBytesOp) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -37639,11 +40552,15 @@ func (p projLTBytesBytesOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -37675,11 +40592,15 @@ func (p projLTBytesBytesOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -37707,7 +40628,9 @@ func (p projLTDecimalInt16Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -37715,7 +40638,7 @@ func (p projLTDecimalInt16Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -37740,7 +40663,7 @@ func (p projLTDecimalInt16Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -37761,11 +40684,15 @@ func (p projLTDecimalInt16Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -37811,11 +40738,15 @@ func (p projLTDecimalInt16Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -37843,7 +40774,9 @@ func (p projLTDecimalInt32Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -37851,7 +40784,7 @@ func (p projLTDecimalInt32Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -37876,7 +40809,7 @@ func (p projLTDecimalInt32Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -37897,11 +40830,15 @@ func (p projLTDecimalInt32Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -37947,11 +40884,15 @@ func (p projLTDecimalInt32Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -37979,7 +40920,9 @@ func (p projLTDecimalInt64Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -37987,7 +40930,7 @@ func (p projLTDecimalInt64Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -38012,7 +40955,7 @@ func (p projLTDecimalInt64Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -38033,11 +40976,15 @@ func (p projLTDecimalInt64Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -38083,11 +41030,15 @@ func (p projLTDecimalInt64Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -38115,7 +41066,9 @@ func (p projLTDecimalFloat64Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -38123,7 +41076,7 @@ func (p projLTDecimalFloat64Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -38150,7 +41103,7 @@ func (p projLTDecimalFloat64Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -38173,11 +41126,15 @@ func (p projLTDecimalFloat64Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -38227,11 +41184,15 @@ func (p projLTDecimalFloat64Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -38259,7 +41220,9 @@ func (p projLTDecimalDecimalOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -38267,7 +41230,7 @@ func (p projLTDecimalDecimalOp) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -38286,7 +41249,7 @@ func (p projLTDecimalDecimalOp) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -38301,11 +41264,15 @@ func (p projLTDecimalDecimalOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -38339,11 +41306,15 @@ func (p projLTDecimalDecimalOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -38371,7 +41342,9 @@ func (p projLTInt16Int16Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -38379,7 +41352,7 @@ func (p projLTInt16Int16Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -38409,7 +41382,7 @@ func (p projLTInt16Int16Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -38435,11 +41408,15 @@ func (p projLTInt16Int16Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -38495,11 +41472,15 @@ func (p projLTInt16Int16Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -38527,7 +41508,9 @@ func (p projLTInt16Int32Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -38535,7 +41518,7 @@ func (p projLTInt16Int32Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -38565,7 +41548,7 @@ func (p projLTInt16Int32Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -38591,11 +41574,15 @@ func (p projLTInt16Int32Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -38651,11 +41638,15 @@ func (p projLTInt16Int32Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -38683,7 +41674,9 @@ func (p projLTInt16Int64Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -38691,7 +41684,7 @@ func (p projLTInt16Int64Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -38721,7 +41714,7 @@ func (p projLTInt16Int64Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -38747,11 +41740,15 @@ func (p projLTInt16Int64Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -38807,11 +41804,15 @@ func (p projLTInt16Int64Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -38839,7 +41840,9 @@ func (p projLTInt16Float64Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -38847,7 +41850,7 @@ func (p projLTInt16Float64Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -38885,7 +41888,7 @@ func (p projLTInt16Float64Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -38919,11 +41922,15 @@ func (p projLTInt16Float64Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -38995,11 +42002,15 @@ func (p projLTInt16Float64Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -39027,7 +42038,9 @@ func (p projLTInt16DecimalOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -39035,7 +42048,7 @@ func (p projLTInt16DecimalOp) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -39060,7 +42073,7 @@ func (p projLTInt16DecimalOp) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -39081,11 +42094,15 @@ func (p projLTInt16DecimalOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -39131,11 +42148,15 @@ func (p projLTInt16DecimalOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -39163,7 +42184,9 @@ func (p projLTInt32Int16Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -39171,7 +42194,7 @@ func (p projLTInt32Int16Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -39201,7 +42224,7 @@ func (p projLTInt32Int16Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -39227,11 +42250,15 @@ func (p projLTInt32Int16Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -39287,11 +42314,15 @@ func (p projLTInt32Int16Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -39319,7 +42350,9 @@ func (p projLTInt32Int32Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -39327,7 +42360,7 @@ func (p projLTInt32Int32Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -39357,7 +42390,7 @@ func (p projLTInt32Int32Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -39383,11 +42416,15 @@ func (p projLTInt32Int32Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -39443,11 +42480,15 @@ func (p projLTInt32Int32Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -39475,7 +42516,9 @@ func (p projLTInt32Int64Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -39483,7 +42526,7 @@ func (p projLTInt32Int64Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -39513,7 +42556,7 @@ func (p projLTInt32Int64Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -39539,11 +42582,15 @@ func (p projLTInt32Int64Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -39599,11 +42646,15 @@ func (p projLTInt32Int64Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -39631,7 +42682,9 @@ func (p projLTInt32Float64Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -39639,7 +42692,7 @@ func (p projLTInt32Float64Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -39677,7 +42730,7 @@ func (p projLTInt32Float64Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -39711,11 +42764,15 @@ func (p projLTInt32Float64Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -39787,11 +42844,15 @@ func (p projLTInt32Float64Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -39819,7 +42880,9 @@ func (p projLTInt32DecimalOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -39827,7 +42890,7 @@ func (p projLTInt32DecimalOp) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -39852,7 +42915,7 @@ func (p projLTInt32DecimalOp) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -39873,11 +42936,15 @@ func (p projLTInt32DecimalOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -39923,11 +42990,15 @@ func (p projLTInt32DecimalOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -39955,7 +43026,9 @@ func (p projLTInt64Int16Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -39963,7 +43036,7 @@ func (p projLTInt64Int16Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -39993,7 +43066,7 @@ func (p projLTInt64Int16Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -40019,11 +43092,15 @@ func (p projLTInt64Int16Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -40079,11 +43156,15 @@ func (p projLTInt64Int16Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -40111,7 +43192,9 @@ func (p projLTInt64Int32Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -40119,7 +43202,7 @@ func (p projLTInt64Int32Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -40149,7 +43232,7 @@ func (p projLTInt64Int32Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -40175,11 +43258,15 @@ func (p projLTInt64Int32Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -40235,11 +43322,15 @@ func (p projLTInt64Int32Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -40267,7 +43358,9 @@ func (p projLTInt64Int64Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -40275,7 +43368,7 @@ func (p projLTInt64Int64Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -40305,7 +43398,7 @@ func (p projLTInt64Int64Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -40331,11 +43424,15 @@ func (p projLTInt64Int64Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -40391,11 +43488,15 @@ func (p projLTInt64Int64Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -40423,7 +43524,9 @@ func (p projLTInt64Float64Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -40431,7 +43534,7 @@ func (p projLTInt64Float64Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -40469,7 +43572,7 @@ func (p projLTInt64Float64Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -40503,11 +43606,15 @@ func (p projLTInt64Float64Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -40579,11 +43686,15 @@ func (p projLTInt64Float64Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -40611,7 +43722,9 @@ func (p projLTInt64DecimalOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -40619,7 +43732,7 @@ func (p projLTInt64DecimalOp) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -40644,7 +43757,7 @@ func (p projLTInt64DecimalOp) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -40665,11 +43778,15 @@ func (p projLTInt64DecimalOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -40715,11 +43832,15 @@ func (p projLTInt64DecimalOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -40747,7 +43868,9 @@ func (p projLTFloat64Int16Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -40755,7 +43878,7 @@ func (p projLTFloat64Int16Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -40793,7 +43916,7 @@ func (p projLTFloat64Int16Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -40827,11 +43950,15 @@ func (p projLTFloat64Int16Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -40903,11 +44030,15 @@ func (p projLTFloat64Int16Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -40935,7 +44066,9 @@ func (p projLTFloat64Int32Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -40943,7 +44076,7 @@ func (p projLTFloat64Int32Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -40981,7 +44114,7 @@ func (p projLTFloat64Int32Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -41015,11 +44148,15 @@ func (p projLTFloat64Int32Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -41091,11 +44228,15 @@ func (p projLTFloat64Int32Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -41123,7 +44264,9 @@ func (p projLTFloat64Int64Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -41131,7 +44274,7 @@ func (p projLTFloat64Int64Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -41169,7 +44312,7 @@ func (p projLTFloat64Int64Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -41203,11 +44346,15 @@ func (p projLTFloat64Int64Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -41279,11 +44426,15 @@ func (p projLTFloat64Int64Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -41311,7 +44462,9 @@ func (p projLTFloat64Float64Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -41319,7 +44472,7 @@ func (p projLTFloat64Float64Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -41357,7 +44510,7 @@ func (p projLTFloat64Float64Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -41391,11 +44544,15 @@ func (p projLTFloat64Float64Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -41467,11 +44624,15 @@ func (p projLTFloat64Float64Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -41499,7 +44660,9 @@ func (p projLTFloat64DecimalOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -41507,7 +44670,7 @@ func (p projLTFloat64DecimalOp) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -41534,7 +44697,7 @@ func (p projLTFloat64DecimalOp) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -41557,11 +44720,15 @@ func (p projLTFloat64DecimalOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -41611,11 +44778,15 @@ func (p projLTFloat64DecimalOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -41643,7 +44814,9 @@ func (p projLTTimestampTimestampOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -41651,7 +44824,7 @@ func (p projLTTimestampTimestampOp) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -41677,7 +44850,7 @@ func (p projLTTimestampTimestampOp) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -41699,11 +44872,15 @@ func (p projLTTimestampTimestampOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -41751,11 +44928,15 @@ func (p projLTTimestampTimestampOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -41783,7 +44964,9 @@ func (p projLTIntervalIntervalOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -41791,7 +44974,7 @@ func (p projLTIntervalIntervalOp) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -41810,7 +44993,7 @@ func (p projLTIntervalIntervalOp) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -41825,11 +45008,15 @@ func (p projLTIntervalIntervalOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -41863,11 +45050,15 @@ func (p projLTIntervalIntervalOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -41895,7 +45086,9 @@ func (p projLTJSONJSONOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -41903,7 +45096,7 @@ func (p projLTJSONJSONOp) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -41928,7 +45121,7 @@ func (p projLTJSONJSONOp) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -41947,11 +45140,15 @@ func (p projLTJSONJSONOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -41995,11 +45192,15 @@ func (p projLTJSONJSONOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -42027,7 +45228,9 @@ func (p projLTDatumDatumOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -42035,7 +45238,7 @@ func (p projLTDatumDatumOp) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -42056,7 +45259,7 @@ func (p projLTDatumDatumOp) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -42071,11 +45274,15 @@ func (p projLTDatumDatumOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -42111,11 +45318,15 @@ func (p projLTDatumDatumOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -42143,7 +45354,9 @@ func (p projLEBoolBoolOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -42151,7 +45364,7 @@ func (p projLEBoolBoolOp) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -42178,7 +45391,7 @@ func (p projLEBoolBoolOp) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -42201,11 +45414,15 @@ func (p projLEBoolBoolOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -42255,11 +45472,15 @@ func (p projLEBoolBoolOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -42287,7 +45508,9 @@ func (p projLEBytesBytesOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -42295,7 +45518,7 @@ func (p projLEBytesBytesOp) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -42314,7 +45537,7 @@ func (p projLEBytesBytesOp) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -42327,11 +45550,15 @@ func (p projLEBytesBytesOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -42363,11 +45590,15 @@ func (p projLEBytesBytesOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -42395,7 +45626,9 @@ func (p projLEDecimalInt16Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -42403,7 +45636,7 @@ func (p projLEDecimalInt16Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -42428,7 +45661,7 @@ func (p projLEDecimalInt16Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -42449,11 +45682,15 @@ func (p projLEDecimalInt16Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -42499,11 +45736,15 @@ func (p projLEDecimalInt16Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -42531,7 +45772,9 @@ func (p projLEDecimalInt32Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -42539,7 +45782,7 @@ func (p projLEDecimalInt32Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -42564,7 +45807,7 @@ func (p projLEDecimalInt32Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -42585,11 +45828,15 @@ func (p projLEDecimalInt32Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -42635,11 +45882,15 @@ func (p projLEDecimalInt32Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -42667,7 +45918,9 @@ func (p projLEDecimalInt64Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -42675,7 +45928,7 @@ func (p projLEDecimalInt64Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -42700,7 +45953,7 @@ func (p projLEDecimalInt64Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -42721,11 +45974,15 @@ func (p projLEDecimalInt64Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -42771,11 +46028,15 @@ func (p projLEDecimalInt64Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -42803,7 +46064,9 @@ func (p projLEDecimalFloat64Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -42811,7 +46074,7 @@ func (p projLEDecimalFloat64Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -42838,7 +46101,7 @@ func (p projLEDecimalFloat64Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -42861,11 +46124,15 @@ func (p projLEDecimalFloat64Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -42915,11 +46182,15 @@ func (p projLEDecimalFloat64Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -42947,7 +46218,9 @@ func (p projLEDecimalDecimalOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -42955,7 +46228,7 @@ func (p projLEDecimalDecimalOp) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -42974,7 +46247,7 @@ func (p projLEDecimalDecimalOp) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -42989,11 +46262,15 @@ func (p projLEDecimalDecimalOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -43027,11 +46304,15 @@ func (p projLEDecimalDecimalOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -43059,7 +46340,9 @@ func (p projLEInt16Int16Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -43067,7 +46350,7 @@ func (p projLEInt16Int16Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -43097,7 +46380,7 @@ func (p projLEInt16Int16Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -43123,11 +46406,15 @@ func (p projLEInt16Int16Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -43183,11 +46470,15 @@ func (p projLEInt16Int16Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -43215,7 +46506,9 @@ func (p projLEInt16Int32Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -43223,7 +46516,7 @@ func (p projLEInt16Int32Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -43253,7 +46546,7 @@ func (p projLEInt16Int32Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -43279,11 +46572,15 @@ func (p projLEInt16Int32Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -43339,11 +46636,15 @@ func (p projLEInt16Int32Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -43371,7 +46672,9 @@ func (p projLEInt16Int64Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -43379,7 +46682,7 @@ func (p projLEInt16Int64Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -43409,7 +46712,7 @@ func (p projLEInt16Int64Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -43435,11 +46738,15 @@ func (p projLEInt16Int64Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -43495,11 +46802,15 @@ func (p projLEInt16Int64Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -43527,7 +46838,9 @@ func (p projLEInt16Float64Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -43535,7 +46848,7 @@ func (p projLEInt16Float64Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -43573,7 +46886,7 @@ func (p projLEInt16Float64Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -43607,11 +46920,15 @@ func (p projLEInt16Float64Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -43683,11 +47000,15 @@ func (p projLEInt16Float64Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -43715,7 +47036,9 @@ func (p projLEInt16DecimalOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -43723,7 +47046,7 @@ func (p projLEInt16DecimalOp) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -43748,7 +47071,7 @@ func (p projLEInt16DecimalOp) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -43769,11 +47092,15 @@ func (p projLEInt16DecimalOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -43819,11 +47146,15 @@ func (p projLEInt16DecimalOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -43851,7 +47182,9 @@ func (p projLEInt32Int16Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -43859,7 +47192,7 @@ func (p projLEInt32Int16Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -43889,7 +47222,7 @@ func (p projLEInt32Int16Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -43915,11 +47248,15 @@ func (p projLEInt32Int16Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -43975,11 +47312,15 @@ func (p projLEInt32Int16Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -44007,7 +47348,9 @@ func (p projLEInt32Int32Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -44015,7 +47358,7 @@ func (p projLEInt32Int32Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -44045,7 +47388,7 @@ func (p projLEInt32Int32Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -44071,11 +47414,15 @@ func (p projLEInt32Int32Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -44131,11 +47478,15 @@ func (p projLEInt32Int32Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -44163,7 +47514,9 @@ func (p projLEInt32Int64Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -44171,7 +47524,7 @@ func (p projLEInt32Int64Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -44201,7 +47554,7 @@ func (p projLEInt32Int64Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -44227,11 +47580,15 @@ func (p projLEInt32Int64Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -44287,11 +47644,15 @@ func (p projLEInt32Int64Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -44319,7 +47680,9 @@ func (p projLEInt32Float64Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -44327,7 +47690,7 @@ func (p projLEInt32Float64Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -44365,7 +47728,7 @@ func (p projLEInt32Float64Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -44399,11 +47762,15 @@ func (p projLEInt32Float64Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -44475,11 +47842,15 @@ func (p projLEInt32Float64Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -44507,7 +47878,9 @@ func (p projLEInt32DecimalOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -44515,7 +47888,7 @@ func (p projLEInt32DecimalOp) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -44540,7 +47913,7 @@ func (p projLEInt32DecimalOp) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -44561,11 +47934,15 @@ func (p projLEInt32DecimalOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -44611,11 +47988,15 @@ func (p projLEInt32DecimalOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -44643,7 +48024,9 @@ func (p projLEInt64Int16Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -44651,7 +48034,7 @@ func (p projLEInt64Int16Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -44681,7 +48064,7 @@ func (p projLEInt64Int16Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -44707,11 +48090,15 @@ func (p projLEInt64Int16Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -44767,11 +48154,15 @@ func (p projLEInt64Int16Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -44799,7 +48190,9 @@ func (p projLEInt64Int32Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -44807,7 +48200,7 @@ func (p projLEInt64Int32Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -44837,7 +48230,7 @@ func (p projLEInt64Int32Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -44863,11 +48256,15 @@ func (p projLEInt64Int32Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -44923,11 +48320,15 @@ func (p projLEInt64Int32Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -44955,7 +48356,9 @@ func (p projLEInt64Int64Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -44963,7 +48366,7 @@ func (p projLEInt64Int64Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -44993,7 +48396,7 @@ func (p projLEInt64Int64Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -45019,11 +48422,15 @@ func (p projLEInt64Int64Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -45079,11 +48486,15 @@ func (p projLEInt64Int64Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -45111,7 +48522,9 @@ func (p projLEInt64Float64Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -45119,7 +48532,7 @@ func (p projLEInt64Float64Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -45157,7 +48570,7 @@ func (p projLEInt64Float64Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -45191,11 +48604,15 @@ func (p projLEInt64Float64Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -45267,11 +48684,15 @@ func (p projLEInt64Float64Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -45299,7 +48720,9 @@ func (p projLEInt64DecimalOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -45307,7 +48730,7 @@ func (p projLEInt64DecimalOp) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -45332,7 +48755,7 @@ func (p projLEInt64DecimalOp) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -45353,11 +48776,15 @@ func (p projLEInt64DecimalOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -45403,11 +48830,15 @@ func (p projLEInt64DecimalOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -45435,7 +48866,9 @@ func (p projLEFloat64Int16Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -45443,7 +48876,7 @@ func (p projLEFloat64Int16Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -45481,7 +48914,7 @@ func (p projLEFloat64Int16Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -45515,11 +48948,15 @@ func (p projLEFloat64Int16Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -45591,11 +49028,15 @@ func (p projLEFloat64Int16Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -45623,7 +49064,9 @@ func (p projLEFloat64Int32Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -45631,7 +49074,7 @@ func (p projLEFloat64Int32Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -45669,7 +49112,7 @@ func (p projLEFloat64Int32Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -45703,11 +49146,15 @@ func (p projLEFloat64Int32Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -45779,11 +49226,15 @@ func (p projLEFloat64Int32Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -45811,7 +49262,9 @@ func (p projLEFloat64Int64Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -45819,7 +49272,7 @@ func (p projLEFloat64Int64Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -45857,7 +49310,7 @@ func (p projLEFloat64Int64Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -45891,11 +49344,15 @@ func (p projLEFloat64Int64Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -45967,11 +49424,15 @@ func (p projLEFloat64Int64Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -45999,7 +49460,9 @@ func (p projLEFloat64Float64Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -46007,7 +49470,7 @@ func (p projLEFloat64Float64Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -46045,7 +49508,7 @@ func (p projLEFloat64Float64Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -46079,11 +49542,15 @@ func (p projLEFloat64Float64Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -46155,11 +49622,15 @@ func (p projLEFloat64Float64Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -46187,7 +49658,9 @@ func (p projLEFloat64DecimalOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -46195,7 +49668,7 @@ func (p projLEFloat64DecimalOp) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -46222,7 +49695,7 @@ func (p projLEFloat64DecimalOp) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -46245,11 +49718,15 @@ func (p projLEFloat64DecimalOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -46299,11 +49776,15 @@ func (p projLEFloat64DecimalOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -46331,7 +49812,9 @@ func (p projLETimestampTimestampOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -46339,7 +49822,7 @@ func (p projLETimestampTimestampOp) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -46365,7 +49848,7 @@ func (p projLETimestampTimestampOp) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -46387,11 +49870,15 @@ func (p projLETimestampTimestampOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -46439,11 +49926,15 @@ func (p projLETimestampTimestampOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -46471,7 +49962,9 @@ func (p projLEIntervalIntervalOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -46479,7 +49972,7 @@ func (p projLEIntervalIntervalOp) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -46498,7 +49991,7 @@ func (p projLEIntervalIntervalOp) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -46513,11 +50006,15 @@ func (p projLEIntervalIntervalOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -46551,11 +50048,15 @@ func (p projLEIntervalIntervalOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -46583,7 +50084,9 @@ func (p projLEJSONJSONOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -46591,7 +50094,7 @@ func (p projLEJSONJSONOp) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -46616,7 +50119,7 @@ func (p projLEJSONJSONOp) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -46635,11 +50138,15 @@ func (p projLEJSONJSONOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -46683,11 +50190,15 @@ func (p projLEJSONJSONOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -46715,7 +50226,9 @@ func (p projLEDatumDatumOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -46723,7 +50236,7 @@ func (p projLEDatumDatumOp) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -46744,7 +50257,7 @@ func (p projLEDatumDatumOp) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -46759,11 +50272,15 @@ func (p projLEDatumDatumOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -46799,11 +50316,15 @@ func (p projLEDatumDatumOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -46831,7 +50352,9 @@ func (p projGTBoolBoolOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -46839,7 +50362,7 @@ func (p projGTBoolBoolOp) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -46866,7 +50389,7 @@ func (p projGTBoolBoolOp) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -46889,11 +50412,15 @@ func (p projGTBoolBoolOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -46943,11 +50470,15 @@ func (p projGTBoolBoolOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -46975,7 +50506,9 @@ func (p projGTBytesBytesOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -46983,7 +50516,7 @@ func (p projGTBytesBytesOp) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -47002,7 +50535,7 @@ func (p projGTBytesBytesOp) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -47015,11 +50548,15 @@ func (p projGTBytesBytesOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -47051,11 +50588,15 @@ func (p projGTBytesBytesOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -47083,7 +50624,9 @@ func (p projGTDecimalInt16Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -47091,7 +50634,7 @@ func (p projGTDecimalInt16Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -47116,7 +50659,7 @@ func (p projGTDecimalInt16Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -47137,11 +50680,15 @@ func (p projGTDecimalInt16Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -47187,11 +50734,15 @@ func (p projGTDecimalInt16Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -47219,7 +50770,9 @@ func (p projGTDecimalInt32Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -47227,7 +50780,7 @@ func (p projGTDecimalInt32Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -47252,7 +50805,7 @@ func (p projGTDecimalInt32Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -47273,11 +50826,15 @@ func (p projGTDecimalInt32Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -47323,11 +50880,15 @@ func (p projGTDecimalInt32Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -47355,7 +50916,9 @@ func (p projGTDecimalInt64Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -47363,7 +50926,7 @@ func (p projGTDecimalInt64Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -47388,7 +50951,7 @@ func (p projGTDecimalInt64Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -47409,11 +50972,15 @@ func (p projGTDecimalInt64Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -47459,11 +51026,15 @@ func (p projGTDecimalInt64Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -47491,7 +51062,9 @@ func (p projGTDecimalFloat64Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -47499,7 +51072,7 @@ func (p projGTDecimalFloat64Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -47526,7 +51099,7 @@ func (p projGTDecimalFloat64Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -47549,11 +51122,15 @@ func (p projGTDecimalFloat64Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -47603,11 +51180,15 @@ func (p projGTDecimalFloat64Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -47635,7 +51216,9 @@ func (p projGTDecimalDecimalOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -47643,7 +51226,7 @@ func (p projGTDecimalDecimalOp) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -47662,7 +51245,7 @@ func (p projGTDecimalDecimalOp) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -47677,11 +51260,15 @@ func (p projGTDecimalDecimalOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -47715,11 +51302,15 @@ func (p projGTDecimalDecimalOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -47747,7 +51338,9 @@ func (p projGTInt16Int16Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -47755,7 +51348,7 @@ func (p projGTInt16Int16Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -47785,7 +51378,7 @@ func (p projGTInt16Int16Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -47811,11 +51404,15 @@ func (p projGTInt16Int16Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -47871,11 +51468,15 @@ func (p projGTInt16Int16Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -47903,7 +51504,9 @@ func (p projGTInt16Int32Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -47911,7 +51514,7 @@ func (p projGTInt16Int32Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -47941,7 +51544,7 @@ func (p projGTInt16Int32Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -47967,11 +51570,15 @@ func (p projGTInt16Int32Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -48027,11 +51634,15 @@ func (p projGTInt16Int32Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -48059,7 +51670,9 @@ func (p projGTInt16Int64Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -48067,7 +51680,7 @@ func (p projGTInt16Int64Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -48097,7 +51710,7 @@ func (p projGTInt16Int64Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -48123,11 +51736,15 @@ func (p projGTInt16Int64Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -48183,11 +51800,15 @@ func (p projGTInt16Int64Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -48215,7 +51836,9 @@ func (p projGTInt16Float64Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -48223,7 +51846,7 @@ func (p projGTInt16Float64Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -48261,7 +51884,7 @@ func (p projGTInt16Float64Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -48295,11 +51918,15 @@ func (p projGTInt16Float64Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -48371,11 +51998,15 @@ func (p projGTInt16Float64Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -48403,7 +52034,9 @@ func (p projGTInt16DecimalOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -48411,7 +52044,7 @@ func (p projGTInt16DecimalOp) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -48436,7 +52069,7 @@ func (p projGTInt16DecimalOp) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -48457,11 +52090,15 @@ func (p projGTInt16DecimalOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -48507,11 +52144,15 @@ func (p projGTInt16DecimalOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -48539,7 +52180,9 @@ func (p projGTInt32Int16Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -48547,7 +52190,7 @@ func (p projGTInt32Int16Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -48577,7 +52220,7 @@ func (p projGTInt32Int16Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -48603,11 +52246,15 @@ func (p projGTInt32Int16Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -48663,11 +52310,15 @@ func (p projGTInt32Int16Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -48695,7 +52346,9 @@ func (p projGTInt32Int32Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -48703,7 +52356,7 @@ func (p projGTInt32Int32Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -48733,7 +52386,7 @@ func (p projGTInt32Int32Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -48759,11 +52412,15 @@ func (p projGTInt32Int32Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -48819,11 +52476,15 @@ func (p projGTInt32Int32Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -48851,7 +52512,9 @@ func (p projGTInt32Int64Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -48859,7 +52522,7 @@ func (p projGTInt32Int64Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -48889,7 +52552,7 @@ func (p projGTInt32Int64Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -48915,11 +52578,15 @@ func (p projGTInt32Int64Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -48975,11 +52642,15 @@ func (p projGTInt32Int64Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -49007,7 +52678,9 @@ func (p projGTInt32Float64Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -49015,7 +52688,7 @@ func (p projGTInt32Float64Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -49053,7 +52726,7 @@ func (p projGTInt32Float64Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -49087,11 +52760,15 @@ func (p projGTInt32Float64Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -49163,11 +52840,15 @@ func (p projGTInt32Float64Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -49195,7 +52876,9 @@ func (p projGTInt32DecimalOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -49203,7 +52886,7 @@ func (p projGTInt32DecimalOp) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -49228,7 +52911,7 @@ func (p projGTInt32DecimalOp) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -49249,11 +52932,15 @@ func (p projGTInt32DecimalOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -49299,11 +52986,15 @@ func (p projGTInt32DecimalOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -49331,7 +53022,9 @@ func (p projGTInt64Int16Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -49339,7 +53032,7 @@ func (p projGTInt64Int16Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -49369,7 +53062,7 @@ func (p projGTInt64Int16Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -49395,11 +53088,15 @@ func (p projGTInt64Int16Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -49455,11 +53152,15 @@ func (p projGTInt64Int16Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -49487,7 +53188,9 @@ func (p projGTInt64Int32Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -49495,7 +53198,7 @@ func (p projGTInt64Int32Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -49525,7 +53228,7 @@ func (p projGTInt64Int32Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -49551,11 +53254,15 @@ func (p projGTInt64Int32Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -49611,11 +53318,15 @@ func (p projGTInt64Int32Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -49643,7 +53354,9 @@ func (p projGTInt64Int64Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -49651,7 +53364,7 @@ func (p projGTInt64Int64Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -49681,7 +53394,7 @@ func (p projGTInt64Int64Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -49707,11 +53420,15 @@ func (p projGTInt64Int64Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -49767,11 +53484,15 @@ func (p projGTInt64Int64Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -49799,7 +53520,9 @@ func (p projGTInt64Float64Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -49807,7 +53530,7 @@ func (p projGTInt64Float64Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -49845,7 +53568,7 @@ func (p projGTInt64Float64Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -49879,11 +53602,15 @@ func (p projGTInt64Float64Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -49955,11 +53682,15 @@ func (p projGTInt64Float64Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -49987,7 +53718,9 @@ func (p projGTInt64DecimalOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -49995,7 +53728,7 @@ func (p projGTInt64DecimalOp) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -50020,7 +53753,7 @@ func (p projGTInt64DecimalOp) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -50041,11 +53774,15 @@ func (p projGTInt64DecimalOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -50091,11 +53828,15 @@ func (p projGTInt64DecimalOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -50123,7 +53864,9 @@ func (p projGTFloat64Int16Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -50131,7 +53874,7 @@ func (p projGTFloat64Int16Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -50169,7 +53912,7 @@ func (p projGTFloat64Int16Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -50203,11 +53946,15 @@ func (p projGTFloat64Int16Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -50279,11 +54026,15 @@ func (p projGTFloat64Int16Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -50311,7 +54062,9 @@ func (p projGTFloat64Int32Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -50319,7 +54072,7 @@ func (p projGTFloat64Int32Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -50357,7 +54110,7 @@ func (p projGTFloat64Int32Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -50391,11 +54144,15 @@ func (p projGTFloat64Int32Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -50467,11 +54224,15 @@ func (p projGTFloat64Int32Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -50499,7 +54260,9 @@ func (p projGTFloat64Int64Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -50507,7 +54270,7 @@ func (p projGTFloat64Int64Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -50545,7 +54308,7 @@ func (p projGTFloat64Int64Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -50579,11 +54342,15 @@ func (p projGTFloat64Int64Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -50655,11 +54422,15 @@ func (p projGTFloat64Int64Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -50687,7 +54458,9 @@ func (p projGTFloat64Float64Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -50695,7 +54468,7 @@ func (p projGTFloat64Float64Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -50733,7 +54506,7 @@ func (p projGTFloat64Float64Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -50767,11 +54540,15 @@ func (p projGTFloat64Float64Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -50843,11 +54620,15 @@ func (p projGTFloat64Float64Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -50875,7 +54656,9 @@ func (p projGTFloat64DecimalOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -50883,7 +54666,7 @@ func (p projGTFloat64DecimalOp) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -50910,7 +54693,7 @@ func (p projGTFloat64DecimalOp) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -50933,11 +54716,15 @@ func (p projGTFloat64DecimalOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -50987,11 +54774,15 @@ func (p projGTFloat64DecimalOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -51019,7 +54810,9 @@ func (p projGTTimestampTimestampOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -51027,7 +54820,7 @@ func (p projGTTimestampTimestampOp) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -51053,7 +54846,7 @@ func (p projGTTimestampTimestampOp) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -51075,11 +54868,15 @@ func (p projGTTimestampTimestampOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -51127,11 +54924,15 @@ func (p projGTTimestampTimestampOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -51159,7 +54960,9 @@ func (p projGTIntervalIntervalOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -51167,7 +54970,7 @@ func (p projGTIntervalIntervalOp) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -51186,7 +54989,7 @@ func (p projGTIntervalIntervalOp) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -51201,11 +55004,15 @@ func (p projGTIntervalIntervalOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -51239,11 +55046,15 @@ func (p projGTIntervalIntervalOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -51271,7 +55082,9 @@ func (p projGTJSONJSONOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -51279,7 +55092,7 @@ func (p projGTJSONJSONOp) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -51304,7 +55117,7 @@ func (p projGTJSONJSONOp) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -51323,11 +55136,15 @@ func (p projGTJSONJSONOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -51371,11 +55188,15 @@ func (p projGTJSONJSONOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -51403,7 +55224,9 @@ func (p projGTDatumDatumOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -51411,7 +55234,7 @@ func (p projGTDatumDatumOp) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -51432,7 +55255,7 @@ func (p projGTDatumDatumOp) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -51447,11 +55270,15 @@ func (p projGTDatumDatumOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -51487,11 +55314,15 @@ func (p projGTDatumDatumOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -51519,7 +55350,9 @@ func (p projGEBoolBoolOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -51527,7 +55360,7 @@ func (p projGEBoolBoolOp) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -51554,7 +55387,7 @@ func (p projGEBoolBoolOp) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -51577,11 +55410,15 @@ func (p projGEBoolBoolOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -51631,11 +55468,15 @@ func (p projGEBoolBoolOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -51663,7 +55504,9 @@ func (p projGEBytesBytesOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -51671,7 +55514,7 @@ func (p projGEBytesBytesOp) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -51690,7 +55533,7 @@ func (p projGEBytesBytesOp) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -51703,11 +55546,15 @@ func (p projGEBytesBytesOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -51739,11 +55586,15 @@ func (p projGEBytesBytesOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -51771,7 +55622,9 @@ func (p projGEDecimalInt16Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -51779,7 +55632,7 @@ func (p projGEDecimalInt16Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -51804,7 +55657,7 @@ func (p projGEDecimalInt16Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -51825,11 +55678,15 @@ func (p projGEDecimalInt16Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -51875,11 +55732,15 @@ func (p projGEDecimalInt16Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -51907,7 +55768,9 @@ func (p projGEDecimalInt32Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -51915,7 +55778,7 @@ func (p projGEDecimalInt32Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -51940,7 +55803,7 @@ func (p projGEDecimalInt32Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -51961,11 +55824,15 @@ func (p projGEDecimalInt32Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -52011,11 +55878,15 @@ func (p projGEDecimalInt32Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -52043,7 +55914,9 @@ func (p projGEDecimalInt64Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -52051,7 +55924,7 @@ func (p projGEDecimalInt64Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -52076,7 +55949,7 @@ func (p projGEDecimalInt64Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -52097,11 +55970,15 @@ func (p projGEDecimalInt64Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -52147,11 +56024,15 @@ func (p projGEDecimalInt64Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -52179,7 +56060,9 @@ func (p projGEDecimalFloat64Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -52187,7 +56070,7 @@ func (p projGEDecimalFloat64Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -52214,7 +56097,7 @@ func (p projGEDecimalFloat64Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -52237,11 +56120,15 @@ func (p projGEDecimalFloat64Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -52291,11 +56178,15 @@ func (p projGEDecimalFloat64Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -52323,7 +56214,9 @@ func (p projGEDecimalDecimalOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -52331,7 +56224,7 @@ func (p projGEDecimalDecimalOp) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -52350,7 +56243,7 @@ func (p projGEDecimalDecimalOp) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -52365,11 +56258,15 @@ func (p projGEDecimalDecimalOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -52403,11 +56300,15 @@ func (p projGEDecimalDecimalOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -52435,7 +56336,9 @@ func (p projGEInt16Int16Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -52443,7 +56346,7 @@ func (p projGEInt16Int16Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -52473,7 +56376,7 @@ func (p projGEInt16Int16Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -52499,11 +56402,15 @@ func (p projGEInt16Int16Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -52559,11 +56466,15 @@ func (p projGEInt16Int16Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -52591,7 +56502,9 @@ func (p projGEInt16Int32Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -52599,7 +56512,7 @@ func (p projGEInt16Int32Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -52629,7 +56542,7 @@ func (p projGEInt16Int32Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -52655,11 +56568,15 @@ func (p projGEInt16Int32Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -52715,11 +56632,15 @@ func (p projGEInt16Int32Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -52747,7 +56668,9 @@ func (p projGEInt16Int64Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -52755,7 +56678,7 @@ func (p projGEInt16Int64Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -52785,7 +56708,7 @@ func (p projGEInt16Int64Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -52811,11 +56734,15 @@ func (p projGEInt16Int64Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -52871,11 +56798,15 @@ func (p projGEInt16Int64Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -52903,7 +56834,9 @@ func (p projGEInt16Float64Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -52911,7 +56844,7 @@ func (p projGEInt16Float64Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -52949,7 +56882,7 @@ func (p projGEInt16Float64Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -52983,11 +56916,15 @@ func (p projGEInt16Float64Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -53059,11 +56996,15 @@ func (p projGEInt16Float64Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -53091,7 +57032,9 @@ func (p projGEInt16DecimalOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -53099,7 +57042,7 @@ func (p projGEInt16DecimalOp) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -53124,7 +57067,7 @@ func (p projGEInt16DecimalOp) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -53145,11 +57088,15 @@ func (p projGEInt16DecimalOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -53195,11 +57142,15 @@ func (p projGEInt16DecimalOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -53227,7 +57178,9 @@ func (p projGEInt32Int16Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -53235,7 +57188,7 @@ func (p projGEInt32Int16Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -53265,7 +57218,7 @@ func (p projGEInt32Int16Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -53291,11 +57244,15 @@ func (p projGEInt32Int16Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -53351,11 +57308,15 @@ func (p projGEInt32Int16Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -53383,7 +57344,9 @@ func (p projGEInt32Int32Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -53391,7 +57354,7 @@ func (p projGEInt32Int32Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -53421,7 +57384,7 @@ func (p projGEInt32Int32Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -53447,11 +57410,15 @@ func (p projGEInt32Int32Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -53507,11 +57474,15 @@ func (p projGEInt32Int32Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -53539,7 +57510,9 @@ func (p projGEInt32Int64Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -53547,7 +57520,7 @@ func (p projGEInt32Int64Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -53577,7 +57550,7 @@ func (p projGEInt32Int64Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -53603,11 +57576,15 @@ func (p projGEInt32Int64Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -53663,11 +57640,15 @@ func (p projGEInt32Int64Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -53695,7 +57676,9 @@ func (p projGEInt32Float64Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -53703,7 +57686,7 @@ func (p projGEInt32Float64Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -53741,7 +57724,7 @@ func (p projGEInt32Float64Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -53775,11 +57758,15 @@ func (p projGEInt32Float64Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -53851,11 +57838,15 @@ func (p projGEInt32Float64Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -53883,7 +57874,9 @@ func (p projGEInt32DecimalOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -53891,7 +57884,7 @@ func (p projGEInt32DecimalOp) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -53916,7 +57909,7 @@ func (p projGEInt32DecimalOp) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -53937,11 +57930,15 @@ func (p projGEInt32DecimalOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -53987,11 +57984,15 @@ func (p projGEInt32DecimalOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -54019,7 +58020,9 @@ func (p projGEInt64Int16Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -54027,7 +58030,7 @@ func (p projGEInt64Int16Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -54057,7 +58060,7 @@ func (p projGEInt64Int16Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -54083,11 +58086,15 @@ func (p projGEInt64Int16Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -54143,11 +58150,15 @@ func (p projGEInt64Int16Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -54175,7 +58186,9 @@ func (p projGEInt64Int32Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -54183,7 +58196,7 @@ func (p projGEInt64Int32Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -54213,7 +58226,7 @@ func (p projGEInt64Int32Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -54239,11 +58252,15 @@ func (p projGEInt64Int32Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -54299,11 +58316,15 @@ func (p projGEInt64Int32Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -54331,7 +58352,9 @@ func (p projGEInt64Int64Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -54339,7 +58362,7 @@ func (p projGEInt64Int64Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -54369,7 +58392,7 @@ func (p projGEInt64Int64Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -54395,11 +58418,15 @@ func (p projGEInt64Int64Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -54455,11 +58482,15 @@ func (p projGEInt64Int64Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -54487,7 +58518,9 @@ func (p projGEInt64Float64Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -54495,7 +58528,7 @@ func (p projGEInt64Float64Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -54533,7 +58566,7 @@ func (p projGEInt64Float64Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -54567,11 +58600,15 @@ func (p projGEInt64Float64Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -54643,11 +58680,15 @@ func (p projGEInt64Float64Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -54675,7 +58716,9 @@ func (p projGEInt64DecimalOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -54683,7 +58726,7 @@ func (p projGEInt64DecimalOp) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -54708,7 +58751,7 @@ func (p projGEInt64DecimalOp) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -54729,11 +58772,15 @@ func (p projGEInt64DecimalOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -54779,11 +58826,15 @@ func (p projGEInt64DecimalOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -54811,7 +58862,9 @@ func (p projGEFloat64Int16Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -54819,7 +58872,7 @@ func (p projGEFloat64Int16Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -54857,7 +58910,7 @@ func (p projGEFloat64Int16Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -54891,11 +58944,15 @@ func (p projGEFloat64Int16Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -54967,11 +59024,15 @@ func (p projGEFloat64Int16Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -54999,7 +59060,9 @@ func (p projGEFloat64Int32Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -55007,7 +59070,7 @@ func (p projGEFloat64Int32Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -55045,7 +59108,7 @@ func (p projGEFloat64Int32Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -55079,11 +59142,15 @@ func (p projGEFloat64Int32Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -55155,11 +59222,15 @@ func (p projGEFloat64Int32Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -55187,7 +59258,9 @@ func (p projGEFloat64Int64Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -55195,7 +59268,7 @@ func (p projGEFloat64Int64Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -55233,7 +59306,7 @@ func (p projGEFloat64Int64Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -55267,11 +59340,15 @@ func (p projGEFloat64Int64Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -55343,11 +59420,15 @@ func (p projGEFloat64Int64Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -55375,7 +59456,9 @@ func (p projGEFloat64Float64Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -55383,7 +59466,7 @@ func (p projGEFloat64Float64Op) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -55421,7 +59504,7 @@ func (p projGEFloat64Float64Op) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -55455,11 +59538,15 @@ func (p projGEFloat64Float64Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -55531,11 +59618,15 @@ func (p projGEFloat64Float64Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -55563,7 +59654,9 @@ func (p projGEFloat64DecimalOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -55571,7 +59664,7 @@ func (p projGEFloat64DecimalOp) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -55598,7 +59691,7 @@ func (p projGEFloat64DecimalOp) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -55621,11 +59714,15 @@ func (p projGEFloat64DecimalOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -55675,11 +59772,15 @@ func (p projGEFloat64DecimalOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -55707,7 +59808,9 @@ func (p projGETimestampTimestampOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -55715,7 +59818,7 @@ func (p projGETimestampTimestampOp) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -55741,7 +59844,7 @@ func (p projGETimestampTimestampOp) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -55763,11 +59866,15 @@ func (p projGETimestampTimestampOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -55815,11 +59922,15 @@ func (p projGETimestampTimestampOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -55847,7 +59958,9 @@ func (p projGEIntervalIntervalOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -55855,7 +59968,7 @@ func (p projGEIntervalIntervalOp) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -55874,7 +59987,7 @@ func (p projGEIntervalIntervalOp) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. //gcassert:bce arg1 := col1.Get(i) //gcassert:bce @@ -55889,11 +60002,15 @@ func (p projGEIntervalIntervalOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -55927,11 +60044,15 @@ func (p projGEIntervalIntervalOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -55959,7 +60080,9 @@ func (p projGEJSONJSONOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -55967,7 +60090,7 @@ func (p projGEJSONJSONOp) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -55992,7 +60115,7 @@ func (p projGEJSONJSONOp) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -56011,11 +60134,15 @@ func (p projGEJSONJSONOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -56059,11 +60186,15 @@ func (p projGEJSONJSONOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -56091,7 +60222,9 @@ func (p projGEDatumDatumOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + if hasNullsAndNotNullable { col1Nulls := vec1.Nulls() col2Nulls := vec2.Nulls() if sel := batch.Selection(); sel != nil { @@ -56099,7 +60232,7 @@ func (p projGEDatumDatumOp) Next() coldata.Batch { for _, i := range sel { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -56120,7 +60253,7 @@ func (p projGEDatumDatumOp) Next() coldata.Batch { for i := 0; i < n; i++ { if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. arg1 := col1.Get(i) arg2 := col2.Get(i) @@ -56135,11 +60268,15 @@ func (p projGEDatumDatumOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) } else { if sel := batch.Selection(); sel != nil { @@ -56175,11 +60312,15 @@ func (p projGEDatumDatumOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -56199,6 +60340,7 @@ func GetProjectionOperator( evalCtx *eval.Context, binOp tree.BinaryEvalOp, cmpExpr *tree.ComparisonExpr, + nullableArgs bool, ) (colexecop.Operator, error) { input = colexecutils.NewVectorTypeEnforcer(allocator, input, outputType, outputIdx) projOpBase := projOpBase{ @@ -56207,6 +60349,7 @@ func GetProjectionOperator( col1Idx: col1Idx, col2Idx: col2Idx, outputIdx: outputIdx, + nullableArgs: nullableArgs, } leftType, rightType := inputTypes[col1Idx], inputTypes[col2Idx] 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 95d67bd9ab1e..a4450fe98255 100644 --- a/pkg/sql/colexec/colexecproj/proj_non_const_ops_tmpl.go +++ b/pkg/sql/colexec/colexecproj/proj_non_const_ops_tmpl.go @@ -79,10 +79,11 @@ func _ASSIGN(_, _, _, _, _, _ interface{}) { // projOpBase contains all of the fields for non-constant projections. type projOpBase struct { colexecop.OneInputHelper - allocator *colmem.Allocator - col1Idx int - col2Idx int - outputIdx int + allocator *colmem.Allocator + col1Idx int + col2Idx int + outputIdx int + nullableArgs bool } // {{define "projOp"}} @@ -120,7 +121,20 @@ func (p _OP_NAME) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls() { + + // If nullableArgs 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. The logic for nullableArgs is only added to the if + // statement for function related to concatDatum. If we later introduce + // another projection operation that has nullableArgs == true, we should + // update this code accordingly. + // {{if and (eq .Left.VecMethod "Datum") (eq .Right.VecMethod "Datum") (eq .Name "Concat")}} + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) && !p.nullableArgs + // {{else}} + hasNullsAndNotNullable := (vec1.Nulls().MaybeHasNulls() || vec2.Nulls().MaybeHasNulls()) + //{{end}} + if hasNullsAndNotNullable { _SET_PROJECTION(true) } else { _SET_PROJECTION(false) @@ -154,11 +168,11 @@ func _SET_PROJECTION(_HAS_NULLS bool) { _SET_SINGLE_TUPLE_PROJECTION(_HAS_NULLS, false) } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If _HAS_NULLS is true, union _outNulls with the set of input Nulls. - // If _HAS_NULLS is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // If _HAS_NULLS is true, union _outNulls with the set of input Nulls. + // If _HAS_NULLS is false, then there are no input Nulls or nullableArgs is true. + // _outNulls is projVec.Nulls() so there is no need to call projVec.SetNulls(). // {{if _HAS_NULLS}} projVec.SetNulls(_outNulls.Or(*col1Nulls).Or(*col2Nulls)) // {{end}} @@ -178,7 +192,7 @@ func _SET_SINGLE_TUPLE_PROJECTION(_HAS_NULLS bool, _HAS_SEL bool) { // */}} // {{if _HAS_NULLS}} if !col1Nulls.NullAt(i) && !col2Nulls.NullAt(i) { // We only want to perform the projection operation if both values are not - // null. + // null or if the function can handle null arguments. // {{end}} // {{if and (.Left.Sliceable) (not _HAS_SEL)}} //gcassert:bce @@ -241,6 +255,7 @@ func GetProjectionOperator( evalCtx *eval.Context, binOp tree.BinaryEvalOp, cmpExpr *tree.ComparisonExpr, + nullableArgs bool, ) (colexecop.Operator, error) { input = colexecutils.NewVectorTypeEnforcer(allocator, input, outputType, outputIdx) projOpBase := projOpBase{ @@ -249,6 +264,7 @@ func GetProjectionOperator( col1Idx: col1Idx, col2Idx: col2Idx, outputIdx: outputIdx, + nullableArgs: nullableArgs, } leftType, rightType := inputTypes[col1Idx], inputTypes[col2Idx] diff --git a/pkg/sql/colexec/colexecproj/projection_ops_test.go b/pkg/sql/colexec/colexecproj/projection_ops_test.go index e8711cc13102..b61b6c3d6ea8 100644 --- a/pkg/sql/colexec/colexecproj/projection_ops_test.go +++ b/pkg/sql/colexec/colexecproj/projection_ops_test.go @@ -211,9 +211,10 @@ func TestGetProjectionOperator(t *testing.T) { inputTypes[col1Idx] = typ inputTypes[col2Idx] = typ outputIdx := 9 + nullableArgs := false op, err := GetProjectionOperator( testAllocator, inputTypes, types.Int2, binOp, input, col1Idx, col2Idx, - outputIdx, nil /* EvalCtx */, nil /* BinFn */, nil, /* cmpExpr */ + outputIdx, nil /* EvalCtx */, nil /* BinFn */, nil /* cmpExpr */, nullableArgs, ) if err != nil { t.Error(err) @@ -225,6 +226,7 @@ func TestGetProjectionOperator(t *testing.T) { col1Idx: col1Idx, col2Idx: col2Idx, outputIdx: outputIdx, + nullableArgs: nullableArgs, }, } if !reflect.DeepEqual(op, expected) { 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 c11ae18c5927..37a2d1907541 100644 --- a/pkg/sql/colexec/colexecprojconst/proj_const_left_ops.eg.go +++ b/pkg/sql/colexec/colexecprojconst/proj_const_left_ops.eg.go @@ -70,13 +70,16 @@ func (p projBitandInt16ConstInt16Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) projCol[i] = int64(p.constArg) & int64(arg) @@ -88,7 +91,8 @@ func (p projBitandInt16ConstInt16Op) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -97,11 +101,15 @@ func (p projBitandInt16ConstInt16Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -123,11 +131,15 @@ func (p projBitandInt16ConstInt16Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -158,13 +170,16 @@ func (p projBitandInt16ConstInt32Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) projCol[i] = int64(p.constArg) & int64(arg) @@ -176,7 +191,8 @@ func (p projBitandInt16ConstInt32Op) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -185,11 +201,15 @@ func (p projBitandInt16ConstInt32Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -211,11 +231,15 @@ func (p projBitandInt16ConstInt32Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -246,13 +270,16 @@ func (p projBitandInt16ConstInt64Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) projCol[i] = int64(p.constArg) & int64(arg) @@ -264,7 +291,8 @@ func (p projBitandInt16ConstInt64Op) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -273,11 +301,15 @@ func (p projBitandInt16ConstInt64Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -299,11 +331,15 @@ func (p projBitandInt16ConstInt64Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -334,13 +370,16 @@ func (p projBitandInt32ConstInt16Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) projCol[i] = int64(p.constArg) & int64(arg) @@ -352,7 +391,8 @@ func (p projBitandInt32ConstInt16Op) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -361,11 +401,15 @@ func (p projBitandInt32ConstInt16Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -387,11 +431,15 @@ func (p projBitandInt32ConstInt16Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -422,13 +470,16 @@ func (p projBitandInt32ConstInt32Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) projCol[i] = int64(p.constArg) & int64(arg) @@ -440,7 +491,8 @@ func (p projBitandInt32ConstInt32Op) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -449,11 +501,15 @@ func (p projBitandInt32ConstInt32Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -475,11 +531,15 @@ func (p projBitandInt32ConstInt32Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -510,13 +570,16 @@ func (p projBitandInt32ConstInt64Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) projCol[i] = int64(p.constArg) & int64(arg) @@ -528,7 +591,8 @@ func (p projBitandInt32ConstInt64Op) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -537,11 +601,15 @@ func (p projBitandInt32ConstInt64Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -563,11 +631,15 @@ func (p projBitandInt32ConstInt64Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -598,13 +670,16 @@ func (p projBitandInt64ConstInt16Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) projCol[i] = int64(p.constArg) & int64(arg) @@ -616,7 +691,8 @@ func (p projBitandInt64ConstInt16Op) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -625,11 +701,15 @@ func (p projBitandInt64ConstInt16Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -651,11 +731,15 @@ func (p projBitandInt64ConstInt16Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -686,13 +770,16 @@ func (p projBitandInt64ConstInt32Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) projCol[i] = int64(p.constArg) & int64(arg) @@ -704,7 +791,8 @@ func (p projBitandInt64ConstInt32Op) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -713,11 +801,15 @@ func (p projBitandInt64ConstInt32Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -739,11 +831,15 @@ func (p projBitandInt64ConstInt32Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -774,13 +870,16 @@ func (p projBitandInt64ConstInt64Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) projCol[i] = int64(p.constArg) & int64(arg) @@ -792,7 +891,8 @@ func (p projBitandInt64ConstInt64Op) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -801,11 +901,15 @@ func (p projBitandInt64ConstInt64Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -827,11 +931,15 @@ func (p projBitandInt64ConstInt64Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -864,13 +972,16 @@ func (p projBitandDatumConstDatumOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) _res, err := eval.BinaryOp(_overloadHelper.EvalCtx, _overloadHelper.BinOp, p.constArg.(tree.Datum), arg.(tree.Datum)) @@ -889,7 +1000,8 @@ func (p projBitandDatumConstDatumOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) _res, err := eval.BinaryOp(_overloadHelper.EvalCtx, _overloadHelper.BinOp, p.constArg.(tree.Datum), arg.(tree.Datum)) @@ -904,11 +1016,15 @@ func (p projBitandDatumConstDatumOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -943,11 +1059,15 @@ func (p projBitandDatumConstDatumOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -978,13 +1098,16 @@ func (p projBitorInt16ConstInt16Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) projCol[i] = int64(p.constArg) | int64(arg) @@ -996,7 +1119,8 @@ func (p projBitorInt16ConstInt16Op) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -1005,11 +1129,15 @@ func (p projBitorInt16ConstInt16Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -1031,11 +1159,15 @@ func (p projBitorInt16ConstInt16Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -1066,13 +1198,16 @@ func (p projBitorInt16ConstInt32Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) projCol[i] = int64(p.constArg) | int64(arg) @@ -1084,7 +1219,8 @@ func (p projBitorInt16ConstInt32Op) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -1093,11 +1229,15 @@ func (p projBitorInt16ConstInt32Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -1119,11 +1259,15 @@ func (p projBitorInt16ConstInt32Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -1154,13 +1298,16 @@ func (p projBitorInt16ConstInt64Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) projCol[i] = int64(p.constArg) | int64(arg) @@ -1172,7 +1319,8 @@ func (p projBitorInt16ConstInt64Op) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -1181,11 +1329,15 @@ func (p projBitorInt16ConstInt64Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -1207,11 +1359,15 @@ func (p projBitorInt16ConstInt64Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -1242,13 +1398,16 @@ func (p projBitorInt32ConstInt16Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) projCol[i] = int64(p.constArg) | int64(arg) @@ -1260,7 +1419,8 @@ func (p projBitorInt32ConstInt16Op) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -1269,11 +1429,15 @@ func (p projBitorInt32ConstInt16Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -1295,11 +1459,15 @@ func (p projBitorInt32ConstInt16Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -1330,13 +1498,16 @@ func (p projBitorInt32ConstInt32Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) projCol[i] = int64(p.constArg) | int64(arg) @@ -1348,7 +1519,8 @@ func (p projBitorInt32ConstInt32Op) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -1357,11 +1529,15 @@ func (p projBitorInt32ConstInt32Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -1383,11 +1559,15 @@ func (p projBitorInt32ConstInt32Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -1418,13 +1598,16 @@ func (p projBitorInt32ConstInt64Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) projCol[i] = int64(p.constArg) | int64(arg) @@ -1436,7 +1619,8 @@ func (p projBitorInt32ConstInt64Op) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -1445,11 +1629,15 @@ func (p projBitorInt32ConstInt64Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -1471,11 +1659,15 @@ func (p projBitorInt32ConstInt64Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -1506,13 +1698,16 @@ func (p projBitorInt64ConstInt16Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) projCol[i] = int64(p.constArg) | int64(arg) @@ -1524,7 +1719,8 @@ func (p projBitorInt64ConstInt16Op) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -1533,11 +1729,15 @@ func (p projBitorInt64ConstInt16Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -1559,11 +1759,15 @@ func (p projBitorInt64ConstInt16Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -1594,13 +1798,16 @@ func (p projBitorInt64ConstInt32Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) projCol[i] = int64(p.constArg) | int64(arg) @@ -1612,7 +1819,8 @@ func (p projBitorInt64ConstInt32Op) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -1621,11 +1829,15 @@ func (p projBitorInt64ConstInt32Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -1647,11 +1859,15 @@ func (p projBitorInt64ConstInt32Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -1682,13 +1898,16 @@ func (p projBitorInt64ConstInt64Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) projCol[i] = int64(p.constArg) | int64(arg) @@ -1700,7 +1919,8 @@ func (p projBitorInt64ConstInt64Op) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -1709,11 +1929,15 @@ func (p projBitorInt64ConstInt64Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -1735,11 +1959,15 @@ func (p projBitorInt64ConstInt64Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -1772,13 +2000,16 @@ func (p projBitorDatumConstDatumOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) _res, err := eval.BinaryOp(_overloadHelper.EvalCtx, _overloadHelper.BinOp, p.constArg.(tree.Datum), arg.(tree.Datum)) @@ -1797,7 +2028,8 @@ func (p projBitorDatumConstDatumOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) _res, err := eval.BinaryOp(_overloadHelper.EvalCtx, _overloadHelper.BinOp, p.constArg.(tree.Datum), arg.(tree.Datum)) @@ -1812,11 +2044,15 @@ func (p projBitorDatumConstDatumOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -1851,11 +2087,15 @@ func (p projBitorDatumConstDatumOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -1886,13 +2126,16 @@ func (p projBitxorInt16ConstInt16Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) projCol[i] = int64(p.constArg) ^ int64(arg) @@ -1904,7 +2147,8 @@ func (p projBitxorInt16ConstInt16Op) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -1913,11 +2157,15 @@ func (p projBitxorInt16ConstInt16Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -1939,11 +2187,15 @@ func (p projBitxorInt16ConstInt16Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -1974,13 +2226,16 @@ func (p projBitxorInt16ConstInt32Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) projCol[i] = int64(p.constArg) ^ int64(arg) @@ -1992,7 +2247,8 @@ func (p projBitxorInt16ConstInt32Op) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -2001,11 +2257,15 @@ func (p projBitxorInt16ConstInt32Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -2027,11 +2287,15 @@ func (p projBitxorInt16ConstInt32Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -2062,13 +2326,16 @@ func (p projBitxorInt16ConstInt64Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) projCol[i] = int64(p.constArg) ^ int64(arg) @@ -2080,7 +2347,8 @@ func (p projBitxorInt16ConstInt64Op) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -2089,11 +2357,15 @@ func (p projBitxorInt16ConstInt64Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -2115,11 +2387,15 @@ func (p projBitxorInt16ConstInt64Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -2150,13 +2426,16 @@ func (p projBitxorInt32ConstInt16Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) projCol[i] = int64(p.constArg) ^ int64(arg) @@ -2168,7 +2447,8 @@ func (p projBitxorInt32ConstInt16Op) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -2177,11 +2457,15 @@ func (p projBitxorInt32ConstInt16Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -2203,11 +2487,15 @@ func (p projBitxorInt32ConstInt16Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -2238,13 +2526,16 @@ func (p projBitxorInt32ConstInt32Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) projCol[i] = int64(p.constArg) ^ int64(arg) @@ -2256,7 +2547,8 @@ func (p projBitxorInt32ConstInt32Op) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -2265,11 +2557,15 @@ func (p projBitxorInt32ConstInt32Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -2291,11 +2587,15 @@ func (p projBitxorInt32ConstInt32Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -2326,13 +2626,16 @@ func (p projBitxorInt32ConstInt64Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) projCol[i] = int64(p.constArg) ^ int64(arg) @@ -2344,7 +2647,8 @@ func (p projBitxorInt32ConstInt64Op) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -2353,11 +2657,15 @@ func (p projBitxorInt32ConstInt64Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -2379,11 +2687,15 @@ func (p projBitxorInt32ConstInt64Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -2414,13 +2726,16 @@ func (p projBitxorInt64ConstInt16Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) projCol[i] = int64(p.constArg) ^ int64(arg) @@ -2432,7 +2747,8 @@ func (p projBitxorInt64ConstInt16Op) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -2441,11 +2757,15 @@ func (p projBitxorInt64ConstInt16Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -2467,11 +2787,15 @@ func (p projBitxorInt64ConstInt16Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -2502,13 +2826,16 @@ func (p projBitxorInt64ConstInt32Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) projCol[i] = int64(p.constArg) ^ int64(arg) @@ -2520,7 +2847,8 @@ func (p projBitxorInt64ConstInt32Op) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -2529,11 +2857,15 @@ func (p projBitxorInt64ConstInt32Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -2555,11 +2887,15 @@ func (p projBitxorInt64ConstInt32Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -2590,13 +2926,16 @@ func (p projBitxorInt64ConstInt64Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) projCol[i] = int64(p.constArg) ^ int64(arg) @@ -2608,7 +2947,8 @@ func (p projBitxorInt64ConstInt64Op) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -2617,11 +2957,15 @@ func (p projBitxorInt64ConstInt64Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -2643,11 +2987,15 @@ func (p projBitxorInt64ConstInt64Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -2680,13 +3028,16 @@ func (p projBitxorDatumConstDatumOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) _res, err := eval.BinaryOp(_overloadHelper.EvalCtx, _overloadHelper.BinOp, p.constArg.(tree.Datum), arg.(tree.Datum)) @@ -2705,7 +3056,8 @@ func (p projBitxorDatumConstDatumOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) _res, err := eval.BinaryOp(_overloadHelper.EvalCtx, _overloadHelper.BinOp, p.constArg.(tree.Datum), arg.(tree.Datum)) @@ -2720,11 +3072,15 @@ func (p projBitxorDatumConstDatumOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -2759,11 +3115,15 @@ func (p projBitxorDatumConstDatumOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -2794,13 +3154,16 @@ func (p projPlusDecimalConstInt16Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -2819,7 +3182,8 @@ func (p projPlusDecimalConstInt16Op) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -2835,11 +3199,15 @@ func (p projPlusDecimalConstInt16Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -2875,11 +3243,15 @@ func (p projPlusDecimalConstInt16Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -2910,13 +3282,16 @@ func (p projPlusDecimalConstInt32Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -2935,7 +3310,8 @@ func (p projPlusDecimalConstInt32Op) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -2951,11 +3327,15 @@ func (p projPlusDecimalConstInt32Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -2991,11 +3371,15 @@ func (p projPlusDecimalConstInt32Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -3026,13 +3410,16 @@ func (p projPlusDecimalConstInt64Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -3051,7 +3438,8 @@ func (p projPlusDecimalConstInt64Op) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -3067,11 +3455,15 @@ func (p projPlusDecimalConstInt64Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -3107,11 +3499,15 @@ func (p projPlusDecimalConstInt64Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -3142,13 +3538,16 @@ func (p projPlusDecimalConstDecimalOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -3166,7 +3565,8 @@ func (p projPlusDecimalConstDecimalOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -3181,11 +3581,15 @@ func (p projPlusDecimalConstDecimalOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -3219,11 +3623,15 @@ func (p projPlusDecimalConstDecimalOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -3254,13 +3662,16 @@ func (p projPlusInt16ConstInt16Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -3278,7 +3689,8 @@ func (p projPlusInt16ConstInt16Op) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -3293,11 +3705,15 @@ func (p projPlusInt16ConstInt16Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -3331,11 +3747,15 @@ func (p projPlusInt16ConstInt16Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -3366,13 +3786,16 @@ func (p projPlusInt16ConstInt32Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -3390,7 +3813,8 @@ func (p projPlusInt16ConstInt32Op) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -3405,11 +3829,15 @@ func (p projPlusInt16ConstInt32Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -3443,11 +3871,15 @@ func (p projPlusInt16ConstInt32Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -3478,13 +3910,16 @@ func (p projPlusInt16ConstInt64Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -3502,7 +3937,8 @@ func (p projPlusInt16ConstInt64Op) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -3517,11 +3953,15 @@ func (p projPlusInt16ConstInt64Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -3555,11 +3995,15 @@ func (p projPlusInt16ConstInt64Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -3590,13 +4034,16 @@ func (p projPlusInt16ConstDecimalOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -3616,7 +4063,8 @@ func (p projPlusInt16ConstDecimalOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -3633,11 +4081,15 @@ func (p projPlusInt16ConstDecimalOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -3675,11 +4127,15 @@ func (p projPlusInt16ConstDecimalOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -3712,13 +4168,16 @@ func (p projPlusInt16ConstDatumOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) _convertedNativeElem := tree.DInt(p.constArg) @@ -3741,7 +4200,8 @@ func (p projPlusInt16ConstDatumOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -3761,11 +4221,15 @@ func (p projPlusInt16ConstDatumOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -3809,11 +4273,15 @@ func (p projPlusInt16ConstDatumOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -3844,13 +4312,16 @@ func (p projPlusInt32ConstInt16Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -3868,7 +4339,8 @@ func (p projPlusInt32ConstInt16Op) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -3883,11 +4355,15 @@ func (p projPlusInt32ConstInt16Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -3921,11 +4397,15 @@ func (p projPlusInt32ConstInt16Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -3956,13 +4436,16 @@ func (p projPlusInt32ConstInt32Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -3980,7 +4463,8 @@ func (p projPlusInt32ConstInt32Op) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -3995,11 +4479,15 @@ func (p projPlusInt32ConstInt32Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -4033,11 +4521,15 @@ func (p projPlusInt32ConstInt32Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -4068,13 +4560,16 @@ func (p projPlusInt32ConstInt64Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -4092,7 +4587,8 @@ func (p projPlusInt32ConstInt64Op) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -4107,11 +4603,15 @@ func (p projPlusInt32ConstInt64Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -4145,11 +4645,15 @@ func (p projPlusInt32ConstInt64Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -4180,13 +4684,16 @@ func (p projPlusInt32ConstDecimalOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -4206,7 +4713,8 @@ func (p projPlusInt32ConstDecimalOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -4223,11 +4731,15 @@ func (p projPlusInt32ConstDecimalOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -4265,11 +4777,15 @@ func (p projPlusInt32ConstDecimalOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -4302,13 +4818,16 @@ func (p projPlusInt32ConstDatumOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) _convertedNativeElem := tree.DInt(p.constArg) @@ -4331,7 +4850,8 @@ func (p projPlusInt32ConstDatumOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -4351,11 +4871,15 @@ func (p projPlusInt32ConstDatumOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -4399,11 +4923,15 @@ func (p projPlusInt32ConstDatumOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -4434,13 +4962,16 @@ func (p projPlusInt64ConstInt16Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -4458,7 +4989,8 @@ func (p projPlusInt64ConstInt16Op) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -4473,11 +5005,15 @@ func (p projPlusInt64ConstInt16Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -4511,11 +5047,15 @@ func (p projPlusInt64ConstInt16Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -4546,13 +5086,16 @@ func (p projPlusInt64ConstInt32Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -4570,7 +5113,8 @@ func (p projPlusInt64ConstInt32Op) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -4585,11 +5129,15 @@ func (p projPlusInt64ConstInt32Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -4623,11 +5171,15 @@ func (p projPlusInt64ConstInt32Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -4658,13 +5210,16 @@ func (p projPlusInt64ConstInt64Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -4682,7 +5237,8 @@ func (p projPlusInt64ConstInt64Op) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -4697,11 +5253,15 @@ func (p projPlusInt64ConstInt64Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -4735,11 +5295,15 @@ func (p projPlusInt64ConstInt64Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -4770,13 +5334,16 @@ func (p projPlusInt64ConstDecimalOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -4796,7 +5363,8 @@ func (p projPlusInt64ConstDecimalOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -4813,11 +5381,15 @@ func (p projPlusInt64ConstDecimalOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -4855,11 +5427,15 @@ func (p projPlusInt64ConstDecimalOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -4892,13 +5468,16 @@ func (p projPlusInt64ConstDatumOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) _convertedNativeElem := tree.DInt(p.constArg) @@ -4921,7 +5500,8 @@ func (p projPlusInt64ConstDatumOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -4941,11 +5521,15 @@ func (p projPlusInt64ConstDatumOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -4989,11 +5573,15 @@ func (p projPlusInt64ConstDatumOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -5024,13 +5612,16 @@ func (p projPlusFloat64ConstFloat64Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -5045,7 +5636,8 @@ func (p projPlusFloat64ConstFloat64Op) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -5057,11 +5649,15 @@ func (p projPlusFloat64ConstFloat64Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -5089,11 +5685,15 @@ func (p projPlusFloat64ConstFloat64Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -5124,13 +5724,16 @@ func (p projPlusTimestampConstIntervalOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) t_res := duration.Add(p.constArg, arg) rounded_res := t_res.Round(time.Microsecond) @@ -5145,7 +5748,8 @@ func (p projPlusTimestampConstIntervalOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) t_res := duration.Add(p.constArg, arg) @@ -5157,11 +5761,15 @@ func (p projPlusTimestampConstIntervalOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -5189,11 +5797,15 @@ func (p projPlusTimestampConstIntervalOp) Next() coldata.Batch { projCol[i] = t_res } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -5224,13 +5836,16 @@ func (p projPlusIntervalConstTimestampOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) t_res := duration.Add(arg, p.constArg) rounded_res := t_res.Round(time.Microsecond) @@ -5245,7 +5860,8 @@ func (p projPlusIntervalConstTimestampOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) t_res := duration.Add(arg, p.constArg) @@ -5257,11 +5873,15 @@ func (p projPlusIntervalConstTimestampOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -5289,11 +5909,15 @@ func (p projPlusIntervalConstTimestampOp) Next() coldata.Batch { projCol[i] = t_res } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -5324,13 +5948,16 @@ func (p projPlusIntervalConstIntervalOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) projCol[i] = p.constArg.Add(arg) } @@ -5340,18 +5967,23 @@ func (p projPlusIntervalConstIntervalOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) projCol[i] = p.constArg.Add(arg) } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -5369,11 +6001,15 @@ func (p projPlusIntervalConstIntervalOp) Next() coldata.Batch { projCol[i] = p.constArg.Add(arg) } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -5406,13 +6042,16 @@ func (p projPlusIntervalConstDatumOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) _convertedNativeElem := tree.DInterval{Duration: p.constArg} @@ -5435,7 +6074,8 @@ func (p projPlusIntervalConstDatumOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -5455,11 +6095,15 @@ func (p projPlusIntervalConstDatumOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -5503,11 +6147,15 @@ func (p projPlusIntervalConstDatumOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -5540,13 +6188,16 @@ func (p projPlusDatumConstIntervalOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) _convertedNativeElem := tree.DInterval{Duration: arg} @@ -5569,7 +6220,8 @@ func (p projPlusDatumConstIntervalOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) _convertedNativeElem := tree.DInterval{Duration: arg} @@ -5588,11 +6240,15 @@ func (p projPlusDatumConstIntervalOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -5635,11 +6291,15 @@ func (p projPlusDatumConstIntervalOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -5672,13 +6332,16 @@ func (p projPlusDatumConstInt16Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) _convertedNativeElem := tree.DInt(arg) @@ -5701,7 +6364,8 @@ func (p projPlusDatumConstInt16Op) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) _convertedNativeElem := tree.DInt(arg) @@ -5720,11 +6384,15 @@ func (p projPlusDatumConstInt16Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -5767,11 +6435,15 @@ func (p projPlusDatumConstInt16Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -5804,13 +6476,16 @@ func (p projPlusDatumConstInt32Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) _convertedNativeElem := tree.DInt(arg) @@ -5833,7 +6508,8 @@ func (p projPlusDatumConstInt32Op) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) _convertedNativeElem := tree.DInt(arg) @@ -5852,11 +6528,15 @@ func (p projPlusDatumConstInt32Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -5899,11 +6579,15 @@ func (p projPlusDatumConstInt32Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -5936,13 +6620,16 @@ func (p projPlusDatumConstInt64Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) _convertedNativeElem := tree.DInt(arg) @@ -5965,7 +6652,8 @@ func (p projPlusDatumConstInt64Op) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) _convertedNativeElem := tree.DInt(arg) @@ -5984,11 +6672,15 @@ func (p projPlusDatumConstInt64Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -6031,11 +6723,15 @@ func (p projPlusDatumConstInt64Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -6066,13 +6762,16 @@ func (p projMinusDecimalConstInt16Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -6091,7 +6790,8 @@ func (p projMinusDecimalConstInt16Op) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -6107,11 +6807,15 @@ func (p projMinusDecimalConstInt16Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -6147,11 +6851,15 @@ func (p projMinusDecimalConstInt16Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -6182,13 +6890,16 @@ func (p projMinusDecimalConstInt32Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -6207,7 +6918,8 @@ func (p projMinusDecimalConstInt32Op) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -6223,11 +6935,15 @@ func (p projMinusDecimalConstInt32Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -6263,11 +6979,15 @@ func (p projMinusDecimalConstInt32Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -6298,13 +7018,16 @@ func (p projMinusDecimalConstInt64Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -6323,7 +7046,8 @@ func (p projMinusDecimalConstInt64Op) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -6339,11 +7063,15 @@ func (p projMinusDecimalConstInt64Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -6379,11 +7107,15 @@ func (p projMinusDecimalConstInt64Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -6414,13 +7146,16 @@ func (p projMinusDecimalConstDecimalOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -6438,7 +7173,8 @@ func (p projMinusDecimalConstDecimalOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -6453,11 +7189,15 @@ func (p projMinusDecimalConstDecimalOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -6491,11 +7231,15 @@ func (p projMinusDecimalConstDecimalOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -6526,13 +7270,16 @@ func (p projMinusInt16ConstInt16Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -6550,7 +7297,8 @@ func (p projMinusInt16ConstInt16Op) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -6565,11 +7313,15 @@ func (p projMinusInt16ConstInt16Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -6603,11 +7355,15 @@ func (p projMinusInt16ConstInt16Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -6638,13 +7394,16 @@ func (p projMinusInt16ConstInt32Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -6662,7 +7421,8 @@ func (p projMinusInt16ConstInt32Op) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -6677,11 +7437,15 @@ func (p projMinusInt16ConstInt32Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -6715,11 +7479,15 @@ func (p projMinusInt16ConstInt32Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -6750,13 +7518,16 @@ func (p projMinusInt16ConstInt64Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -6774,7 +7545,8 @@ func (p projMinusInt16ConstInt64Op) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -6789,11 +7561,15 @@ func (p projMinusInt16ConstInt64Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -6827,11 +7603,15 @@ func (p projMinusInt16ConstInt64Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -6862,13 +7642,16 @@ func (p projMinusInt16ConstDecimalOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -6888,7 +7671,8 @@ func (p projMinusInt16ConstDecimalOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -6905,11 +7689,15 @@ func (p projMinusInt16ConstDecimalOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -6947,11 +7735,15 @@ func (p projMinusInt16ConstDecimalOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -6984,13 +7776,16 @@ func (p projMinusInt16ConstDatumOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) _convertedNativeElem := tree.DInt(p.constArg) @@ -7013,7 +7808,8 @@ func (p projMinusInt16ConstDatumOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -7033,11 +7829,15 @@ func (p projMinusInt16ConstDatumOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -7081,11 +7881,15 @@ func (p projMinusInt16ConstDatumOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -7116,13 +7920,16 @@ func (p projMinusInt32ConstInt16Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -7140,7 +7947,8 @@ func (p projMinusInt32ConstInt16Op) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -7155,11 +7963,15 @@ func (p projMinusInt32ConstInt16Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -7193,11 +8005,15 @@ func (p projMinusInt32ConstInt16Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -7228,13 +8044,16 @@ func (p projMinusInt32ConstInt32Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -7252,7 +8071,8 @@ func (p projMinusInt32ConstInt32Op) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -7267,11 +8087,15 @@ func (p projMinusInt32ConstInt32Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -7305,11 +8129,15 @@ func (p projMinusInt32ConstInt32Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -7340,13 +8168,16 @@ func (p projMinusInt32ConstInt64Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -7364,7 +8195,8 @@ func (p projMinusInt32ConstInt64Op) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -7379,11 +8211,15 @@ func (p projMinusInt32ConstInt64Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -7417,11 +8253,15 @@ func (p projMinusInt32ConstInt64Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -7452,13 +8292,16 @@ func (p projMinusInt32ConstDecimalOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -7478,7 +8321,8 @@ func (p projMinusInt32ConstDecimalOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -7495,11 +8339,15 @@ func (p projMinusInt32ConstDecimalOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -7537,11 +8385,15 @@ func (p projMinusInt32ConstDecimalOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -7574,13 +8426,16 @@ func (p projMinusInt32ConstDatumOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) _convertedNativeElem := tree.DInt(p.constArg) @@ -7603,7 +8458,8 @@ func (p projMinusInt32ConstDatumOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -7623,11 +8479,15 @@ func (p projMinusInt32ConstDatumOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -7671,11 +8531,15 @@ func (p projMinusInt32ConstDatumOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -7706,13 +8570,16 @@ func (p projMinusInt64ConstInt16Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -7730,7 +8597,8 @@ func (p projMinusInt64ConstInt16Op) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -7745,11 +8613,15 @@ func (p projMinusInt64ConstInt16Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -7783,11 +8655,15 @@ func (p projMinusInt64ConstInt16Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -7818,13 +8694,16 @@ func (p projMinusInt64ConstInt32Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -7842,7 +8721,8 @@ func (p projMinusInt64ConstInt32Op) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -7857,11 +8737,15 @@ func (p projMinusInt64ConstInt32Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -7895,11 +8779,15 @@ func (p projMinusInt64ConstInt32Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -7930,13 +8818,16 @@ func (p projMinusInt64ConstInt64Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -7954,7 +8845,8 @@ func (p projMinusInt64ConstInt64Op) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -7969,11 +8861,15 @@ func (p projMinusInt64ConstInt64Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -8007,11 +8903,15 @@ func (p projMinusInt64ConstInt64Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -8042,13 +8942,16 @@ func (p projMinusInt64ConstDecimalOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -8068,7 +8971,8 @@ func (p projMinusInt64ConstDecimalOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -8085,11 +8989,15 @@ func (p projMinusInt64ConstDecimalOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -8127,11 +9035,15 @@ func (p projMinusInt64ConstDecimalOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -8164,13 +9076,16 @@ func (p projMinusInt64ConstDatumOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) _convertedNativeElem := tree.DInt(p.constArg) @@ -8193,7 +9108,8 @@ func (p projMinusInt64ConstDatumOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -8213,11 +9129,15 @@ func (p projMinusInt64ConstDatumOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -8261,11 +9181,15 @@ func (p projMinusInt64ConstDatumOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -8296,13 +9220,16 @@ func (p projMinusFloat64ConstFloat64Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -8317,7 +9244,8 @@ func (p projMinusFloat64ConstFloat64Op) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -8329,11 +9257,15 @@ func (p projMinusFloat64ConstFloat64Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -8361,11 +9293,15 @@ func (p projMinusFloat64ConstFloat64Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -8396,13 +9332,16 @@ func (p projMinusTimestampConstTimestampOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) nanos := p.constArg.Sub(arg).Nanoseconds() @@ -8415,7 +9354,8 @@ func (p projMinusTimestampConstTimestampOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -8425,11 +9365,15 @@ func (p projMinusTimestampConstTimestampOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -8453,11 +9397,15 @@ func (p projMinusTimestampConstTimestampOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -8488,13 +9436,16 @@ func (p projMinusTimestampConstIntervalOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) t_res := duration.Add(p.constArg, arg.Mul(-1)) rounded_res := t_res.Round(time.Microsecond) @@ -8509,7 +9460,8 @@ func (p projMinusTimestampConstIntervalOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) t_res := duration.Add(p.constArg, arg.Mul(-1)) @@ -8521,11 +9473,15 @@ func (p projMinusTimestampConstIntervalOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -8553,11 +9509,15 @@ func (p projMinusTimestampConstIntervalOp) Next() coldata.Batch { projCol[i] = t_res } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -8588,13 +9548,16 @@ func (p projMinusIntervalConstIntervalOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) projCol[i] = p.constArg.Sub(arg) } @@ -8604,18 +9567,23 @@ func (p projMinusIntervalConstIntervalOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) projCol[i] = p.constArg.Sub(arg) } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -8633,11 +9601,15 @@ func (p projMinusIntervalConstIntervalOp) Next() coldata.Batch { projCol[i] = p.constArg.Sub(arg) } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -8670,13 +9642,16 @@ func (p projMinusIntervalConstDatumOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) _convertedNativeElem := tree.DInterval{Duration: p.constArg} @@ -8699,7 +9674,8 @@ func (p projMinusIntervalConstDatumOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -8719,11 +9695,15 @@ func (p projMinusIntervalConstDatumOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -8767,11 +9747,15 @@ func (p projMinusIntervalConstDatumOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -8802,13 +9786,16 @@ func (p projMinusJSONConstBytesOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) // Get an unsafe string handle onto the bytes, to avoid a spurious copy. This @@ -8827,7 +9814,8 @@ func (p projMinusJSONConstBytesOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) // Get an unsafe string handle onto the bytes, to avoid a spurious copy. This @@ -8842,11 +9830,15 @@ func (p projMinusJSONConstBytesOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -8881,11 +9873,15 @@ func (p projMinusJSONConstBytesOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -8916,13 +9912,16 @@ func (p projMinusJSONConstInt16Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) _j, _, _err := p.constArg.RemoveIndex(int(arg)) @@ -8937,7 +9936,8 @@ func (p projMinusJSONConstInt16Op) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) _j, _, _err := p.constArg.RemoveIndex(int(arg)) @@ -8948,11 +9948,15 @@ func (p projMinusJSONConstInt16Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -8979,11 +9983,15 @@ func (p projMinusJSONConstInt16Op) Next() coldata.Batch { projCol.Set(i, _j) } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -9014,13 +10022,16 @@ func (p projMinusJSONConstInt32Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) _j, _, _err := p.constArg.RemoveIndex(int(arg)) @@ -9035,7 +10046,8 @@ func (p projMinusJSONConstInt32Op) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) _j, _, _err := p.constArg.RemoveIndex(int(arg)) @@ -9046,11 +10058,15 @@ func (p projMinusJSONConstInt32Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -9077,11 +10093,15 @@ func (p projMinusJSONConstInt32Op) Next() coldata.Batch { projCol.Set(i, _j) } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -9112,13 +10132,16 @@ func (p projMinusJSONConstInt64Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) _j, _, _err := p.constArg.RemoveIndex(int(arg)) @@ -9133,7 +10156,8 @@ func (p projMinusJSONConstInt64Op) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) _j, _, _err := p.constArg.RemoveIndex(int(arg)) @@ -9144,11 +10168,15 @@ func (p projMinusJSONConstInt64Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -9175,11 +10203,15 @@ func (p projMinusJSONConstInt64Op) Next() coldata.Batch { projCol.Set(i, _j) } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -9212,13 +10244,16 @@ func (p projMinusDatumConstDatumOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) _res, err := eval.BinaryOp(_overloadHelper.EvalCtx, _overloadHelper.BinOp, p.constArg.(tree.Datum), arg.(tree.Datum)) @@ -9237,7 +10272,8 @@ func (p projMinusDatumConstDatumOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) _res, err := eval.BinaryOp(_overloadHelper.EvalCtx, _overloadHelper.BinOp, p.constArg.(tree.Datum), arg.(tree.Datum)) @@ -9252,11 +10288,15 @@ func (p projMinusDatumConstDatumOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -9291,11 +10331,15 @@ func (p projMinusDatumConstDatumOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -9328,13 +10372,16 @@ func (p projMinusDatumConstIntervalOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) _convertedNativeElem := tree.DInterval{Duration: arg} @@ -9357,7 +10404,8 @@ func (p projMinusDatumConstIntervalOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) _convertedNativeElem := tree.DInterval{Duration: arg} @@ -9376,11 +10424,15 @@ func (p projMinusDatumConstIntervalOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -9423,11 +10475,15 @@ func (p projMinusDatumConstIntervalOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -9460,13 +10516,16 @@ func (p projMinusDatumConstBytesOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) _convertedNativeElem := tree.DString(arg) @@ -9489,7 +10548,8 @@ func (p projMinusDatumConstBytesOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) _convertedNativeElem := tree.DString(arg) @@ -9508,11 +10568,15 @@ func (p projMinusDatumConstBytesOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -9555,11 +10619,15 @@ func (p projMinusDatumConstBytesOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -9592,13 +10660,16 @@ func (p projMinusDatumConstInt16Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) _convertedNativeElem := tree.DInt(arg) @@ -9621,7 +10692,8 @@ func (p projMinusDatumConstInt16Op) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) _convertedNativeElem := tree.DInt(arg) @@ -9640,11 +10712,15 @@ func (p projMinusDatumConstInt16Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -9687,11 +10763,15 @@ func (p projMinusDatumConstInt16Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -9724,13 +10804,16 @@ func (p projMinusDatumConstInt32Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) _convertedNativeElem := tree.DInt(arg) @@ -9753,7 +10836,8 @@ func (p projMinusDatumConstInt32Op) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) _convertedNativeElem := tree.DInt(arg) @@ -9772,11 +10856,15 @@ func (p projMinusDatumConstInt32Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -9819,11 +10907,15 @@ func (p projMinusDatumConstInt32Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -9856,13 +10948,16 @@ func (p projMinusDatumConstInt64Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) _convertedNativeElem := tree.DInt(arg) @@ -9885,7 +10980,8 @@ func (p projMinusDatumConstInt64Op) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) _convertedNativeElem := tree.DInt(arg) @@ -9904,11 +11000,15 @@ func (p projMinusDatumConstInt64Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -9951,11 +11051,15 @@ func (p projMinusDatumConstInt64Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -9986,13 +11090,16 @@ func (p projMultDecimalConstInt16Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -10011,7 +11118,8 @@ func (p projMultDecimalConstInt16Op) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -10027,11 +11135,15 @@ func (p projMultDecimalConstInt16Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -10067,11 +11179,15 @@ func (p projMultDecimalConstInt16Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -10102,13 +11218,16 @@ func (p projMultDecimalConstInt32Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -10127,7 +11246,8 @@ func (p projMultDecimalConstInt32Op) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -10143,11 +11263,15 @@ func (p projMultDecimalConstInt32Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -10183,11 +11307,15 @@ func (p projMultDecimalConstInt32Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -10218,13 +11346,16 @@ func (p projMultDecimalConstInt64Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -10243,7 +11374,8 @@ func (p projMultDecimalConstInt64Op) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -10259,11 +11391,15 @@ func (p projMultDecimalConstInt64Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -10299,11 +11435,15 @@ func (p projMultDecimalConstInt64Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -10334,13 +11474,16 @@ func (p projMultDecimalConstDecimalOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -10358,7 +11501,8 @@ func (p projMultDecimalConstDecimalOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -10373,11 +11517,15 @@ func (p projMultDecimalConstDecimalOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -10411,11 +11559,15 @@ func (p projMultDecimalConstDecimalOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -10446,13 +11598,16 @@ func (p projMultDecimalConstIntervalOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) f, err := p.constArg.Float64() @@ -10467,7 +11622,8 @@ func (p projMultDecimalConstIntervalOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -10479,11 +11635,15 @@ func (p projMultDecimalConstIntervalOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -10511,11 +11671,15 @@ func (p projMultDecimalConstIntervalOp) Next() coldata.Batch { projCol[i] = arg.MulFloat(f) } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -10546,13 +11710,16 @@ func (p projMultInt16ConstInt16Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -10578,7 +11745,8 @@ func (p projMultInt16ConstInt16Op) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -10601,11 +11769,15 @@ func (p projMultInt16ConstInt16Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -10655,11 +11827,15 @@ func (p projMultInt16ConstInt16Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -10690,13 +11866,16 @@ func (p projMultInt16ConstInt32Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -10722,7 +11901,8 @@ func (p projMultInt16ConstInt32Op) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -10745,11 +11925,15 @@ func (p projMultInt16ConstInt32Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -10799,11 +11983,15 @@ func (p projMultInt16ConstInt32Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -10834,13 +12022,16 @@ func (p projMultInt16ConstInt64Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -10866,7 +12057,8 @@ func (p projMultInt16ConstInt64Op) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -10889,11 +12081,15 @@ func (p projMultInt16ConstInt64Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -10943,11 +12139,15 @@ func (p projMultInt16ConstInt64Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -10978,13 +12178,16 @@ func (p projMultInt16ConstDecimalOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -11004,7 +12207,8 @@ func (p projMultInt16ConstDecimalOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -11021,11 +12225,15 @@ func (p projMultInt16ConstDecimalOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -11063,11 +12271,15 @@ func (p projMultInt16ConstDecimalOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -11098,13 +12310,16 @@ func (p projMultInt16ConstIntervalOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) projCol[i] = arg.Mul(int64(p.constArg)) } @@ -11114,18 +12329,23 @@ func (p projMultInt16ConstIntervalOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) projCol[i] = arg.Mul(int64(p.constArg)) } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -11143,11 +12363,15 @@ func (p projMultInt16ConstIntervalOp) Next() coldata.Batch { projCol[i] = arg.Mul(int64(p.constArg)) } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -11178,13 +12402,16 @@ func (p projMultInt32ConstInt16Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -11210,7 +12437,8 @@ func (p projMultInt32ConstInt16Op) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -11233,11 +12461,15 @@ func (p projMultInt32ConstInt16Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -11287,11 +12519,15 @@ func (p projMultInt32ConstInt16Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -11322,13 +12558,16 @@ func (p projMultInt32ConstInt32Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -11354,7 +12593,8 @@ func (p projMultInt32ConstInt32Op) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -11377,11 +12617,15 @@ func (p projMultInt32ConstInt32Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -11431,11 +12675,15 @@ func (p projMultInt32ConstInt32Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -11466,13 +12714,16 @@ func (p projMultInt32ConstInt64Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -11498,7 +12749,8 @@ func (p projMultInt32ConstInt64Op) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -11521,11 +12773,15 @@ func (p projMultInt32ConstInt64Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -11575,11 +12831,15 @@ func (p projMultInt32ConstInt64Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -11610,13 +12870,16 @@ func (p projMultInt32ConstDecimalOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -11636,7 +12899,8 @@ func (p projMultInt32ConstDecimalOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -11653,11 +12917,15 @@ func (p projMultInt32ConstDecimalOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -11695,11 +12963,15 @@ func (p projMultInt32ConstDecimalOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -11730,13 +13002,16 @@ func (p projMultInt32ConstIntervalOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) projCol[i] = arg.Mul(int64(p.constArg)) } @@ -11746,18 +13021,23 @@ func (p projMultInt32ConstIntervalOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) projCol[i] = arg.Mul(int64(p.constArg)) } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -11775,11 +13055,15 @@ func (p projMultInt32ConstIntervalOp) Next() coldata.Batch { projCol[i] = arg.Mul(int64(p.constArg)) } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -11810,13 +13094,16 @@ func (p projMultInt64ConstInt16Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -11842,7 +13129,8 @@ func (p projMultInt64ConstInt16Op) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -11865,11 +13153,15 @@ func (p projMultInt64ConstInt16Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -11919,11 +13211,15 @@ func (p projMultInt64ConstInt16Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -11954,13 +13250,16 @@ func (p projMultInt64ConstInt32Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -11986,7 +13285,8 @@ func (p projMultInt64ConstInt32Op) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -12009,11 +13309,15 @@ func (p projMultInt64ConstInt32Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -12063,11 +13367,15 @@ func (p projMultInt64ConstInt32Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -12098,13 +13406,16 @@ func (p projMultInt64ConstInt64Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -12130,7 +13441,8 @@ func (p projMultInt64ConstInt64Op) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -12153,11 +13465,15 @@ func (p projMultInt64ConstInt64Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -12207,11 +13523,15 @@ func (p projMultInt64ConstInt64Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -12242,13 +13562,16 @@ func (p projMultInt64ConstDecimalOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -12268,7 +13591,8 @@ func (p projMultInt64ConstDecimalOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -12285,11 +13609,15 @@ func (p projMultInt64ConstDecimalOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -12327,11 +13655,15 @@ func (p projMultInt64ConstDecimalOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -12362,13 +13694,16 @@ func (p projMultInt64ConstIntervalOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) projCol[i] = arg.Mul(int64(p.constArg)) } @@ -12378,18 +13713,23 @@ func (p projMultInt64ConstIntervalOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) projCol[i] = arg.Mul(int64(p.constArg)) } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -12407,11 +13747,15 @@ func (p projMultInt64ConstIntervalOp) Next() coldata.Batch { projCol[i] = arg.Mul(int64(p.constArg)) } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -12442,13 +13786,16 @@ func (p projMultFloat64ConstFloat64Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -12463,7 +13810,8 @@ func (p projMultFloat64ConstFloat64Op) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -12475,11 +13823,15 @@ func (p projMultFloat64ConstFloat64Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -12507,11 +13859,15 @@ func (p projMultFloat64ConstFloat64Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -12542,13 +13898,16 @@ func (p projMultFloat64ConstIntervalOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) projCol[i] = arg.MulFloat(float64(p.constArg)) } @@ -12558,18 +13917,23 @@ func (p projMultFloat64ConstIntervalOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) projCol[i] = arg.MulFloat(float64(p.constArg)) } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -12587,11 +13951,15 @@ func (p projMultFloat64ConstIntervalOp) Next() coldata.Batch { projCol[i] = arg.MulFloat(float64(p.constArg)) } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -12622,13 +13990,16 @@ func (p projMultIntervalConstInt16Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) projCol[i] = p.constArg.Mul(int64(arg)) } @@ -12638,18 +14009,23 @@ func (p projMultIntervalConstInt16Op) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) projCol[i] = p.constArg.Mul(int64(arg)) } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -12667,11 +14043,15 @@ func (p projMultIntervalConstInt16Op) Next() coldata.Batch { projCol[i] = p.constArg.Mul(int64(arg)) } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -12702,13 +14082,16 @@ func (p projMultIntervalConstInt32Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) projCol[i] = p.constArg.Mul(int64(arg)) } @@ -12718,18 +14101,23 @@ func (p projMultIntervalConstInt32Op) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) projCol[i] = p.constArg.Mul(int64(arg)) } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -12747,11 +14135,15 @@ func (p projMultIntervalConstInt32Op) Next() coldata.Batch { projCol[i] = p.constArg.Mul(int64(arg)) } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -12782,13 +14174,16 @@ func (p projMultIntervalConstInt64Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) projCol[i] = p.constArg.Mul(int64(arg)) } @@ -12798,18 +14193,23 @@ func (p projMultIntervalConstInt64Op) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) projCol[i] = p.constArg.Mul(int64(arg)) } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -12827,11 +14227,15 @@ func (p projMultIntervalConstInt64Op) Next() coldata.Batch { projCol[i] = p.constArg.Mul(int64(arg)) } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -12862,13 +14266,16 @@ func (p projMultIntervalConstFloat64Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) projCol[i] = p.constArg.MulFloat(float64(arg)) } @@ -12878,18 +14285,23 @@ func (p projMultIntervalConstFloat64Op) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) projCol[i] = p.constArg.MulFloat(float64(arg)) } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -12907,11 +14319,15 @@ func (p projMultIntervalConstFloat64Op) Next() coldata.Batch { projCol[i] = p.constArg.MulFloat(float64(arg)) } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -12942,13 +14358,16 @@ func (p projMultIntervalConstDecimalOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) f, err := arg.Float64() @@ -12963,7 +14382,8 @@ func (p projMultIntervalConstDecimalOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -12975,11 +14395,15 @@ func (p projMultIntervalConstDecimalOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -13007,11 +14431,15 @@ func (p projMultIntervalConstDecimalOp) Next() coldata.Batch { projCol[i] = p.constArg.MulFloat(f) } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -13042,13 +14470,16 @@ func (p projDivDecimalConstInt16Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -13071,7 +14502,8 @@ func (p projDivDecimalConstInt16Op) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -13091,11 +14523,15 @@ func (p projDivDecimalConstInt16Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -13139,11 +14575,15 @@ func (p projDivDecimalConstInt16Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -13174,13 +14614,16 @@ func (p projDivDecimalConstInt32Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -13203,7 +14646,8 @@ func (p projDivDecimalConstInt32Op) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -13223,11 +14667,15 @@ func (p projDivDecimalConstInt32Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -13271,11 +14719,15 @@ func (p projDivDecimalConstInt32Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -13306,13 +14758,16 @@ func (p projDivDecimalConstInt64Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -13335,7 +14790,8 @@ func (p projDivDecimalConstInt64Op) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -13355,11 +14811,15 @@ func (p projDivDecimalConstInt64Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -13403,11 +14863,15 @@ func (p projDivDecimalConstInt64Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -13438,13 +14902,16 @@ func (p projDivDecimalConstDecimalOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -13466,7 +14933,8 @@ func (p projDivDecimalConstDecimalOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -13485,11 +14953,15 @@ func (p projDivDecimalConstDecimalOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -13531,11 +15003,15 @@ func (p projDivDecimalConstDecimalOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -13566,13 +15042,16 @@ func (p projDivInt16ConstInt16Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -13594,7 +15073,8 @@ func (p projDivInt16ConstInt16Op) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -13613,11 +15093,15 @@ func (p projDivInt16ConstInt16Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -13659,11 +15143,15 @@ func (p projDivInt16ConstInt16Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -13694,13 +15182,16 @@ func (p projDivInt16ConstInt32Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -13722,7 +15213,8 @@ func (p projDivInt16ConstInt32Op) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -13741,11 +15233,15 @@ func (p projDivInt16ConstInt32Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -13787,11 +15283,15 @@ func (p projDivInt16ConstInt32Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -13822,13 +15322,16 @@ func (p projDivInt16ConstInt64Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -13850,7 +15353,8 @@ func (p projDivInt16ConstInt64Op) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -13869,11 +15373,15 @@ func (p projDivInt16ConstInt64Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -13915,11 +15423,15 @@ func (p projDivInt16ConstInt64Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -13950,13 +15462,16 @@ func (p projDivInt16ConstDecimalOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -13980,7 +15495,8 @@ func (p projDivInt16ConstDecimalOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -14001,11 +15517,15 @@ func (p projDivInt16ConstDecimalOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -14051,11 +15571,15 @@ func (p projDivInt16ConstDecimalOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -14086,13 +15610,16 @@ func (p projDivInt32ConstInt16Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -14114,7 +15641,8 @@ func (p projDivInt32ConstInt16Op) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -14133,11 +15661,15 @@ func (p projDivInt32ConstInt16Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -14179,11 +15711,15 @@ func (p projDivInt32ConstInt16Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -14214,13 +15750,16 @@ func (p projDivInt32ConstInt32Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -14242,7 +15781,8 @@ func (p projDivInt32ConstInt32Op) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -14261,11 +15801,15 @@ func (p projDivInt32ConstInt32Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -14307,11 +15851,15 @@ func (p projDivInt32ConstInt32Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -14342,13 +15890,16 @@ func (p projDivInt32ConstInt64Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -14370,7 +15921,8 @@ func (p projDivInt32ConstInt64Op) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -14389,11 +15941,15 @@ func (p projDivInt32ConstInt64Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -14435,11 +15991,15 @@ func (p projDivInt32ConstInt64Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -14470,13 +16030,16 @@ func (p projDivInt32ConstDecimalOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -14500,7 +16063,8 @@ func (p projDivInt32ConstDecimalOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -14521,11 +16085,15 @@ func (p projDivInt32ConstDecimalOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -14571,11 +16139,15 @@ func (p projDivInt32ConstDecimalOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -14606,13 +16178,16 @@ func (p projDivInt64ConstInt16Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -14634,7 +16209,8 @@ func (p projDivInt64ConstInt16Op) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -14653,11 +16229,15 @@ func (p projDivInt64ConstInt16Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -14699,11 +16279,15 @@ func (p projDivInt64ConstInt16Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -14734,13 +16318,16 @@ func (p projDivInt64ConstInt32Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -14762,7 +16349,8 @@ func (p projDivInt64ConstInt32Op) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -14781,11 +16369,15 @@ func (p projDivInt64ConstInt32Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -14827,11 +16419,15 @@ func (p projDivInt64ConstInt32Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -14862,13 +16458,16 @@ func (p projDivInt64ConstInt64Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -14890,7 +16489,8 @@ func (p projDivInt64ConstInt64Op) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -14909,11 +16509,15 @@ func (p projDivInt64ConstInt64Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -14955,11 +16559,15 @@ func (p projDivInt64ConstInt64Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -14990,13 +16598,16 @@ func (p projDivInt64ConstDecimalOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -15020,7 +16631,8 @@ func (p projDivInt64ConstDecimalOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -15041,11 +16653,15 @@ func (p projDivInt64ConstDecimalOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -15091,11 +16707,15 @@ func (p projDivInt64ConstDecimalOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -15126,13 +16746,16 @@ func (p projDivFloat64ConstFloat64Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -15151,7 +16774,8 @@ func (p projDivFloat64ConstFloat64Op) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -15167,11 +16791,15 @@ func (p projDivFloat64ConstFloat64Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -15207,11 +16835,15 @@ func (p projDivFloat64ConstFloat64Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -15242,13 +16874,16 @@ func (p projDivIntervalConstInt16Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) if arg == 0 { @@ -15262,7 +16897,8 @@ func (p projDivIntervalConstInt16Op) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -15273,11 +16909,15 @@ func (p projDivIntervalConstInt16Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -15303,11 +16943,15 @@ func (p projDivIntervalConstInt16Op) Next() coldata.Batch { projCol[i] = p.constArg.Div(int64(arg)) } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -15338,13 +16982,16 @@ func (p projDivIntervalConstInt32Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) if arg == 0 { @@ -15358,7 +17005,8 @@ func (p projDivIntervalConstInt32Op) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -15369,11 +17017,15 @@ func (p projDivIntervalConstInt32Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -15399,11 +17051,15 @@ func (p projDivIntervalConstInt32Op) Next() coldata.Batch { projCol[i] = p.constArg.Div(int64(arg)) } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -15434,13 +17090,16 @@ func (p projDivIntervalConstInt64Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) if arg == 0 { @@ -15454,7 +17113,8 @@ func (p projDivIntervalConstInt64Op) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -15465,11 +17125,15 @@ func (p projDivIntervalConstInt64Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -15495,11 +17159,15 @@ func (p projDivIntervalConstInt64Op) Next() coldata.Batch { projCol[i] = p.constArg.Div(int64(arg)) } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -15530,13 +17198,16 @@ func (p projDivIntervalConstFloat64Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) if arg == 0.0 { @@ -15550,7 +17221,8 @@ func (p projDivIntervalConstFloat64Op) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -15561,11 +17233,15 @@ func (p projDivIntervalConstFloat64Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -15591,11 +17267,15 @@ func (p projDivIntervalConstFloat64Op) Next() coldata.Batch { projCol[i] = p.constArg.DivFloat(float64(arg)) } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -15626,13 +17306,16 @@ func (p projFloorDivDecimalConstInt16Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -15655,7 +17338,8 @@ func (p projFloorDivDecimalConstInt16Op) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -15675,11 +17359,15 @@ func (p projFloorDivDecimalConstInt16Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -15723,11 +17411,15 @@ func (p projFloorDivDecimalConstInt16Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -15758,13 +17450,16 @@ func (p projFloorDivDecimalConstInt32Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -15787,7 +17482,8 @@ func (p projFloorDivDecimalConstInt32Op) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -15807,11 +17503,15 @@ func (p projFloorDivDecimalConstInt32Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -15855,11 +17555,15 @@ func (p projFloorDivDecimalConstInt32Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -15890,13 +17594,16 @@ func (p projFloorDivDecimalConstInt64Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -15919,7 +17626,8 @@ func (p projFloorDivDecimalConstInt64Op) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -15939,11 +17647,15 @@ func (p projFloorDivDecimalConstInt64Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -15987,11 +17699,15 @@ func (p projFloorDivDecimalConstInt64Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -16022,13 +17738,16 @@ func (p projFloorDivDecimalConstDecimalOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -16050,7 +17769,8 @@ func (p projFloorDivDecimalConstDecimalOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -16069,11 +17789,15 @@ func (p projFloorDivDecimalConstDecimalOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -16115,11 +17839,15 @@ func (p projFloorDivDecimalConstDecimalOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -16150,13 +17878,16 @@ func (p projFloorDivInt16ConstInt16Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -16173,7 +17904,8 @@ func (p projFloorDivInt16ConstInt16Op) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -16187,11 +17919,15 @@ func (p projFloorDivInt16ConstInt16Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -16223,11 +17959,15 @@ func (p projFloorDivInt16ConstInt16Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -16258,13 +17998,16 @@ func (p projFloorDivInt16ConstInt32Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -16281,7 +18024,8 @@ func (p projFloorDivInt16ConstInt32Op) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -16295,11 +18039,15 @@ func (p projFloorDivInt16ConstInt32Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -16331,11 +18079,15 @@ func (p projFloorDivInt16ConstInt32Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -16366,13 +18118,16 @@ func (p projFloorDivInt16ConstInt64Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -16389,7 +18144,8 @@ func (p projFloorDivInt16ConstInt64Op) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -16403,11 +18159,15 @@ func (p projFloorDivInt16ConstInt64Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -16439,11 +18199,15 @@ func (p projFloorDivInt16ConstInt64Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -16474,13 +18238,16 @@ func (p projFloorDivInt16ConstDecimalOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -16504,7 +18271,8 @@ func (p projFloorDivInt16ConstDecimalOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -16525,11 +18293,15 @@ func (p projFloorDivInt16ConstDecimalOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -16575,11 +18347,15 @@ func (p projFloorDivInt16ConstDecimalOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -16610,13 +18386,16 @@ func (p projFloorDivInt32ConstInt16Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -16633,7 +18412,8 @@ func (p projFloorDivInt32ConstInt16Op) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -16647,11 +18427,15 @@ func (p projFloorDivInt32ConstInt16Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -16683,11 +18467,15 @@ func (p projFloorDivInt32ConstInt16Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -16718,13 +18506,16 @@ func (p projFloorDivInt32ConstInt32Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -16741,7 +18532,8 @@ func (p projFloorDivInt32ConstInt32Op) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -16755,11 +18547,15 @@ func (p projFloorDivInt32ConstInt32Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -16791,11 +18587,15 @@ func (p projFloorDivInt32ConstInt32Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -16826,13 +18626,16 @@ func (p projFloorDivInt32ConstInt64Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -16849,7 +18652,8 @@ func (p projFloorDivInt32ConstInt64Op) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -16863,11 +18667,15 @@ func (p projFloorDivInt32ConstInt64Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -16899,11 +18707,15 @@ func (p projFloorDivInt32ConstInt64Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -16934,13 +18746,16 @@ func (p projFloorDivInt32ConstDecimalOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -16964,7 +18779,8 @@ func (p projFloorDivInt32ConstDecimalOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -16985,11 +18801,15 @@ func (p projFloorDivInt32ConstDecimalOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -17035,11 +18855,15 @@ func (p projFloorDivInt32ConstDecimalOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -17070,13 +18894,16 @@ func (p projFloorDivInt64ConstInt16Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -17093,7 +18920,8 @@ func (p projFloorDivInt64ConstInt16Op) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -17107,11 +18935,15 @@ func (p projFloorDivInt64ConstInt16Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -17143,11 +18975,15 @@ func (p projFloorDivInt64ConstInt16Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -17178,13 +19014,16 @@ func (p projFloorDivInt64ConstInt32Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -17201,7 +19040,8 @@ func (p projFloorDivInt64ConstInt32Op) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -17215,11 +19055,15 @@ func (p projFloorDivInt64ConstInt32Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -17251,11 +19095,15 @@ func (p projFloorDivInt64ConstInt32Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -17286,13 +19134,16 @@ func (p projFloorDivInt64ConstInt64Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -17309,7 +19160,8 @@ func (p projFloorDivInt64ConstInt64Op) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -17323,11 +19175,15 @@ func (p projFloorDivInt64ConstInt64Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -17359,11 +19215,15 @@ func (p projFloorDivInt64ConstInt64Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -17394,13 +19254,16 @@ func (p projFloorDivInt64ConstDecimalOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -17424,7 +19287,8 @@ func (p projFloorDivInt64ConstDecimalOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -17445,11 +19309,15 @@ func (p projFloorDivInt64ConstDecimalOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -17495,11 +19363,15 @@ func (p projFloorDivInt64ConstDecimalOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -17530,13 +19402,16 @@ func (p projFloorDivFloat64ConstFloat64Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -17555,7 +19430,8 @@ func (p projFloorDivFloat64ConstFloat64Op) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -17571,11 +19447,15 @@ func (p projFloorDivFloat64ConstFloat64Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -17611,11 +19491,15 @@ func (p projFloorDivFloat64ConstFloat64Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -17646,13 +19530,16 @@ func (p projModDecimalConstInt16Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -17675,7 +19562,8 @@ func (p projModDecimalConstInt16Op) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -17695,11 +19583,15 @@ func (p projModDecimalConstInt16Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -17743,11 +19635,15 @@ func (p projModDecimalConstInt16Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -17778,13 +19674,16 @@ func (p projModDecimalConstInt32Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -17807,7 +19706,8 @@ func (p projModDecimalConstInt32Op) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -17827,11 +19727,15 @@ func (p projModDecimalConstInt32Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -17875,11 +19779,15 @@ func (p projModDecimalConstInt32Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -17910,13 +19818,16 @@ func (p projModDecimalConstInt64Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -17939,7 +19850,8 @@ func (p projModDecimalConstInt64Op) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -17959,11 +19871,15 @@ func (p projModDecimalConstInt64Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -18007,11 +19923,15 @@ func (p projModDecimalConstInt64Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -18042,13 +19962,16 @@ func (p projModDecimalConstDecimalOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -18070,7 +19993,8 @@ func (p projModDecimalConstDecimalOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -18089,11 +20013,15 @@ func (p projModDecimalConstDecimalOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -18135,11 +20063,15 @@ func (p projModDecimalConstDecimalOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -18170,13 +20102,16 @@ func (p projModInt16ConstInt16Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -18193,7 +20128,8 @@ func (p projModInt16ConstInt16Op) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -18207,11 +20143,15 @@ func (p projModInt16ConstInt16Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -18243,11 +20183,15 @@ func (p projModInt16ConstInt16Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -18278,13 +20222,16 @@ func (p projModInt16ConstInt32Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -18301,7 +20248,8 @@ func (p projModInt16ConstInt32Op) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -18315,11 +20263,15 @@ func (p projModInt16ConstInt32Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -18351,11 +20303,15 @@ func (p projModInt16ConstInt32Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -18386,13 +20342,16 @@ func (p projModInt16ConstInt64Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -18409,7 +20368,8 @@ func (p projModInt16ConstInt64Op) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -18423,11 +20383,15 @@ func (p projModInt16ConstInt64Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -18459,11 +20423,15 @@ func (p projModInt16ConstInt64Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -18494,13 +20462,16 @@ func (p projModInt16ConstDecimalOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -18524,7 +20495,8 @@ func (p projModInt16ConstDecimalOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -18545,11 +20517,15 @@ func (p projModInt16ConstDecimalOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -18595,11 +20571,15 @@ func (p projModInt16ConstDecimalOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -18630,13 +20610,16 @@ func (p projModInt32ConstInt16Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -18653,7 +20636,8 @@ func (p projModInt32ConstInt16Op) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -18667,11 +20651,15 @@ func (p projModInt32ConstInt16Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -18703,11 +20691,15 @@ func (p projModInt32ConstInt16Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -18738,13 +20730,16 @@ func (p projModInt32ConstInt32Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -18761,7 +20756,8 @@ func (p projModInt32ConstInt32Op) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -18775,11 +20771,15 @@ func (p projModInt32ConstInt32Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -18811,11 +20811,15 @@ func (p projModInt32ConstInt32Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -18846,13 +20850,16 @@ func (p projModInt32ConstInt64Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -18869,7 +20876,8 @@ func (p projModInt32ConstInt64Op) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -18883,11 +20891,15 @@ func (p projModInt32ConstInt64Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -18919,11 +20931,15 @@ func (p projModInt32ConstInt64Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -18954,13 +20970,16 @@ func (p projModInt32ConstDecimalOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -18984,7 +21003,8 @@ func (p projModInt32ConstDecimalOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -19005,11 +21025,15 @@ func (p projModInt32ConstDecimalOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -19055,11 +21079,15 @@ func (p projModInt32ConstDecimalOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -19090,13 +21118,16 @@ func (p projModInt64ConstInt16Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -19113,7 +21144,8 @@ func (p projModInt64ConstInt16Op) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -19127,11 +21159,15 @@ func (p projModInt64ConstInt16Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -19163,11 +21199,15 @@ func (p projModInt64ConstInt16Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -19198,13 +21238,16 @@ func (p projModInt64ConstInt32Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -19221,7 +21264,8 @@ func (p projModInt64ConstInt32Op) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -19235,11 +21279,15 @@ func (p projModInt64ConstInt32Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -19271,11 +21319,15 @@ func (p projModInt64ConstInt32Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -19306,13 +21358,16 @@ func (p projModInt64ConstInt64Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -19329,7 +21384,8 @@ func (p projModInt64ConstInt64Op) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -19343,11 +21399,15 @@ func (p projModInt64ConstInt64Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -19379,11 +21439,15 @@ func (p projModInt64ConstInt64Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -19414,13 +21478,16 @@ func (p projModInt64ConstDecimalOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -19444,7 +21511,8 @@ func (p projModInt64ConstDecimalOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -19465,11 +21533,15 @@ func (p projModInt64ConstDecimalOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -19515,11 +21587,15 @@ func (p projModInt64ConstDecimalOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -19550,13 +21626,16 @@ func (p projModFloat64ConstFloat64Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -19575,7 +21654,8 @@ func (p projModFloat64ConstFloat64Op) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -19591,11 +21671,15 @@ func (p projModFloat64ConstFloat64Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -19631,11 +21715,15 @@ func (p projModFloat64ConstFloat64Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -19666,13 +21754,16 @@ func (p projPowDecimalConstInt16Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -19691,7 +21782,8 @@ func (p projPowDecimalConstInt16Op) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -19707,11 +21799,15 @@ func (p projPowDecimalConstInt16Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -19747,11 +21843,15 @@ func (p projPowDecimalConstInt16Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -19782,13 +21882,16 @@ func (p projPowDecimalConstInt32Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -19807,7 +21910,8 @@ func (p projPowDecimalConstInt32Op) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -19823,11 +21927,15 @@ func (p projPowDecimalConstInt32Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -19863,11 +21971,15 @@ func (p projPowDecimalConstInt32Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -19898,13 +22010,16 @@ func (p projPowDecimalConstInt64Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -19923,7 +22038,8 @@ func (p projPowDecimalConstInt64Op) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -19939,11 +22055,15 @@ func (p projPowDecimalConstInt64Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -19979,11 +22099,15 @@ func (p projPowDecimalConstInt64Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -20014,13 +22138,16 @@ func (p projPowDecimalConstDecimalOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -20038,7 +22165,8 @@ func (p projPowDecimalConstDecimalOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -20053,11 +22181,15 @@ func (p projPowDecimalConstDecimalOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -20091,11 +22223,15 @@ func (p projPowDecimalConstDecimalOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -20126,13 +22262,16 @@ func (p projPowInt16ConstInt16Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -20156,7 +22295,8 @@ func (p projPowInt16ConstInt16Op) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -20177,11 +22317,15 @@ func (p projPowInt16ConstInt16Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -20227,11 +22371,15 @@ func (p projPowInt16ConstInt16Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -20262,13 +22410,16 @@ func (p projPowInt16ConstInt32Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -20292,7 +22443,8 @@ func (p projPowInt16ConstInt32Op) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -20313,11 +22465,15 @@ func (p projPowInt16ConstInt32Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -20363,11 +22519,15 @@ func (p projPowInt16ConstInt32Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -20398,13 +22558,16 @@ func (p projPowInt16ConstInt64Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -20428,7 +22591,8 @@ func (p projPowInt16ConstInt64Op) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -20449,11 +22613,15 @@ func (p projPowInt16ConstInt64Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -20499,11 +22667,15 @@ func (p projPowInt16ConstInt64Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -20534,13 +22706,16 @@ func (p projPowInt16ConstDecimalOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -20560,7 +22735,8 @@ func (p projPowInt16ConstDecimalOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -20577,11 +22753,15 @@ func (p projPowInt16ConstDecimalOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -20619,11 +22799,15 @@ func (p projPowInt16ConstDecimalOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -20654,13 +22838,16 @@ func (p projPowInt32ConstInt16Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -20684,7 +22871,8 @@ func (p projPowInt32ConstInt16Op) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -20705,11 +22893,15 @@ func (p projPowInt32ConstInt16Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -20755,11 +22947,15 @@ func (p projPowInt32ConstInt16Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -20790,13 +22986,16 @@ func (p projPowInt32ConstInt32Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -20820,7 +23019,8 @@ func (p projPowInt32ConstInt32Op) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -20841,11 +23041,15 @@ func (p projPowInt32ConstInt32Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -20891,11 +23095,15 @@ func (p projPowInt32ConstInt32Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -20926,13 +23134,16 @@ func (p projPowInt32ConstInt64Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -20956,7 +23167,8 @@ func (p projPowInt32ConstInt64Op) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -20977,11 +23189,15 @@ func (p projPowInt32ConstInt64Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -21027,11 +23243,15 @@ func (p projPowInt32ConstInt64Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -21062,13 +23282,16 @@ func (p projPowInt32ConstDecimalOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -21088,7 +23311,8 @@ func (p projPowInt32ConstDecimalOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -21105,11 +23329,15 @@ func (p projPowInt32ConstDecimalOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -21147,11 +23375,15 @@ func (p projPowInt32ConstDecimalOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -21182,13 +23414,16 @@ func (p projPowInt64ConstInt16Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -21212,7 +23447,8 @@ func (p projPowInt64ConstInt16Op) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -21233,11 +23469,15 @@ func (p projPowInt64ConstInt16Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -21283,11 +23523,15 @@ func (p projPowInt64ConstInt16Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -21318,13 +23562,16 @@ func (p projPowInt64ConstInt32Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -21348,7 +23595,8 @@ func (p projPowInt64ConstInt32Op) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -21369,11 +23617,15 @@ func (p projPowInt64ConstInt32Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -21419,11 +23671,15 @@ func (p projPowInt64ConstInt32Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -21454,13 +23710,16 @@ func (p projPowInt64ConstInt64Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -21484,7 +23743,8 @@ func (p projPowInt64ConstInt64Op) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -21505,11 +23765,15 @@ func (p projPowInt64ConstInt64Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -21555,11 +23819,15 @@ func (p projPowInt64ConstInt64Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -21590,13 +23858,16 @@ func (p projPowInt64ConstDecimalOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -21616,7 +23887,8 @@ func (p projPowInt64ConstDecimalOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -21633,11 +23905,15 @@ func (p projPowInt64ConstDecimalOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -21675,11 +23951,15 @@ func (p projPowInt64ConstDecimalOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -21710,13 +23990,16 @@ func (p projPowFloat64ConstFloat64Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -21731,7 +24014,8 @@ func (p projPowFloat64ConstFloat64Op) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -21743,11 +24027,15 @@ func (p projPowFloat64ConstFloat64Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -21775,11 +24063,15 @@ func (p projPowFloat64ConstFloat64Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -21810,13 +24102,16 @@ func (p projConcatBytesConstBytesOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -21833,7 +24128,8 @@ func (p projConcatBytesConstBytesOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -21846,11 +24142,15 @@ func (p projConcatBytesConstBytesOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -21881,11 +24181,15 @@ func (p projConcatBytesConstBytesOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -21916,13 +24220,16 @@ func (p projConcatJSONConstJSONOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) _j, _err := p.constArg.Concat(arg) @@ -21938,7 +24245,8 @@ func (p projConcatJSONConstJSONOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) _j, _err := p.constArg.Concat(arg) @@ -21950,11 +24258,15 @@ func (p projConcatJSONConstJSONOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -21983,11 +24295,15 @@ func (p projConcatJSONConstJSONOp) Next() coldata.Batch { projCol.Set(i, _j) } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -22020,13 +24336,16 @@ func (p projConcatDatumConstDatumOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() && !p.nullableArgs + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) _res, err := eval.BinaryOp(_overloadHelper.EvalCtx, _overloadHelper.BinOp, p.constArg.(tree.Datum), arg.(tree.Datum)) @@ -22045,7 +24364,8 @@ func (p projConcatDatumConstDatumOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) _res, err := eval.BinaryOp(_overloadHelper.EvalCtx, _overloadHelper.BinOp, p.constArg.(tree.Datum), arg.(tree.Datum)) @@ -22060,11 +24380,15 @@ func (p projConcatDatumConstDatumOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -22099,11 +24423,15 @@ func (p projConcatDatumConstDatumOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -22134,13 +24462,16 @@ func (p projLShiftInt16ConstInt16Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -22158,7 +24489,8 @@ func (p projLShiftInt16ConstInt16Op) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -22173,11 +24505,15 @@ func (p projLShiftInt16ConstInt16Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -22211,11 +24547,15 @@ func (p projLShiftInt16ConstInt16Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -22246,13 +24586,16 @@ func (p projLShiftInt16ConstInt32Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -22270,7 +24613,8 @@ func (p projLShiftInt16ConstInt32Op) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -22285,11 +24629,15 @@ func (p projLShiftInt16ConstInt32Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -22323,11 +24671,15 @@ func (p projLShiftInt16ConstInt32Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -22358,13 +24710,16 @@ func (p projLShiftInt16ConstInt64Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -22382,7 +24737,8 @@ func (p projLShiftInt16ConstInt64Op) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -22397,11 +24753,15 @@ func (p projLShiftInt16ConstInt64Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -22435,11 +24795,15 @@ func (p projLShiftInt16ConstInt64Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -22470,13 +24834,16 @@ func (p projLShiftInt32ConstInt16Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -22494,7 +24861,8 @@ func (p projLShiftInt32ConstInt16Op) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -22509,11 +24877,15 @@ func (p projLShiftInt32ConstInt16Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -22547,11 +24919,15 @@ func (p projLShiftInt32ConstInt16Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -22582,13 +24958,16 @@ func (p projLShiftInt32ConstInt32Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -22606,7 +24985,8 @@ func (p projLShiftInt32ConstInt32Op) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -22621,11 +25001,15 @@ func (p projLShiftInt32ConstInt32Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -22659,11 +25043,15 @@ func (p projLShiftInt32ConstInt32Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -22694,13 +25082,16 @@ func (p projLShiftInt32ConstInt64Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -22718,7 +25109,8 @@ func (p projLShiftInt32ConstInt64Op) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -22733,11 +25125,15 @@ func (p projLShiftInt32ConstInt64Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -22771,11 +25167,15 @@ func (p projLShiftInt32ConstInt64Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -22806,13 +25206,16 @@ func (p projLShiftInt64ConstInt16Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -22830,7 +25233,8 @@ func (p projLShiftInt64ConstInt16Op) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -22845,11 +25249,15 @@ func (p projLShiftInt64ConstInt16Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -22883,11 +25291,15 @@ func (p projLShiftInt64ConstInt16Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -22918,13 +25330,16 @@ func (p projLShiftInt64ConstInt32Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -22942,7 +25357,8 @@ func (p projLShiftInt64ConstInt32Op) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -22957,11 +25373,15 @@ func (p projLShiftInt64ConstInt32Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -22995,11 +25415,15 @@ func (p projLShiftInt64ConstInt32Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -23030,13 +25454,16 @@ func (p projLShiftInt64ConstInt64Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -23054,7 +25481,8 @@ func (p projLShiftInt64ConstInt64Op) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -23069,11 +25497,15 @@ func (p projLShiftInt64ConstInt64Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -23107,11 +25539,15 @@ func (p projLShiftInt64ConstInt64Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -23144,13 +25580,16 @@ func (p projLShiftDatumConstInt16Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) _convertedNativeElem := tree.DInt(arg) @@ -23173,7 +25612,8 @@ func (p projLShiftDatumConstInt16Op) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) _convertedNativeElem := tree.DInt(arg) @@ -23192,11 +25632,15 @@ func (p projLShiftDatumConstInt16Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -23239,11 +25683,15 @@ func (p projLShiftDatumConstInt16Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -23276,13 +25724,16 @@ func (p projLShiftDatumConstInt32Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) _convertedNativeElem := tree.DInt(arg) @@ -23305,7 +25756,8 @@ func (p projLShiftDatumConstInt32Op) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) _convertedNativeElem := tree.DInt(arg) @@ -23324,11 +25776,15 @@ func (p projLShiftDatumConstInt32Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -23371,11 +25827,15 @@ func (p projLShiftDatumConstInt32Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -23408,13 +25868,16 @@ func (p projLShiftDatumConstInt64Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) _convertedNativeElem := tree.DInt(arg) @@ -23437,7 +25900,8 @@ func (p projLShiftDatumConstInt64Op) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) _convertedNativeElem := tree.DInt(arg) @@ -23456,11 +25920,15 @@ func (p projLShiftDatumConstInt64Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -23503,11 +25971,15 @@ func (p projLShiftDatumConstInt64Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -23538,13 +26010,16 @@ func (p projRShiftInt16ConstInt16Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -23562,7 +26037,8 @@ func (p projRShiftInt16ConstInt16Op) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -23577,11 +26053,15 @@ func (p projRShiftInt16ConstInt16Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -23615,11 +26095,15 @@ func (p projRShiftInt16ConstInt16Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -23650,13 +26134,16 @@ func (p projRShiftInt16ConstInt32Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -23674,7 +26161,8 @@ func (p projRShiftInt16ConstInt32Op) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -23689,11 +26177,15 @@ func (p projRShiftInt16ConstInt32Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -23727,11 +26219,15 @@ func (p projRShiftInt16ConstInt32Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -23762,13 +26258,16 @@ func (p projRShiftInt16ConstInt64Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -23786,7 +26285,8 @@ func (p projRShiftInt16ConstInt64Op) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -23801,11 +26301,15 @@ func (p projRShiftInt16ConstInt64Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -23839,11 +26343,15 @@ func (p projRShiftInt16ConstInt64Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -23874,13 +26382,16 @@ func (p projRShiftInt32ConstInt16Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -23898,7 +26409,8 @@ func (p projRShiftInt32ConstInt16Op) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -23913,11 +26425,15 @@ func (p projRShiftInt32ConstInt16Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -23951,11 +26467,15 @@ func (p projRShiftInt32ConstInt16Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -23986,13 +26506,16 @@ func (p projRShiftInt32ConstInt32Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -24010,7 +26533,8 @@ func (p projRShiftInt32ConstInt32Op) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -24025,11 +26549,15 @@ func (p projRShiftInt32ConstInt32Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -24063,11 +26591,15 @@ func (p projRShiftInt32ConstInt32Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -24098,13 +26630,16 @@ func (p projRShiftInt32ConstInt64Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -24122,7 +26657,8 @@ func (p projRShiftInt32ConstInt64Op) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -24137,11 +26673,15 @@ func (p projRShiftInt32ConstInt64Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -24175,11 +26715,15 @@ func (p projRShiftInt32ConstInt64Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -24210,13 +26754,16 @@ func (p projRShiftInt64ConstInt16Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -24234,7 +26781,8 @@ func (p projRShiftInt64ConstInt16Op) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -24249,11 +26797,15 @@ func (p projRShiftInt64ConstInt16Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -24287,11 +26839,15 @@ func (p projRShiftInt64ConstInt16Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -24322,13 +26878,16 @@ func (p projRShiftInt64ConstInt32Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -24346,7 +26905,8 @@ func (p projRShiftInt64ConstInt32Op) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -24361,11 +26921,15 @@ func (p projRShiftInt64ConstInt32Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -24399,11 +26963,15 @@ func (p projRShiftInt64ConstInt32Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -24434,13 +27002,16 @@ func (p projRShiftInt64ConstInt64Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -24458,7 +27029,8 @@ func (p projRShiftInt64ConstInt64Op) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -24473,11 +27045,15 @@ func (p projRShiftInt64ConstInt64Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -24511,11 +27087,15 @@ func (p projRShiftInt64ConstInt64Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -24548,13 +27128,16 @@ func (p projRShiftDatumConstInt16Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) _convertedNativeElem := tree.DInt(arg) @@ -24577,7 +27160,8 @@ func (p projRShiftDatumConstInt16Op) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) _convertedNativeElem := tree.DInt(arg) @@ -24596,11 +27180,15 @@ func (p projRShiftDatumConstInt16Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -24643,11 +27231,15 @@ func (p projRShiftDatumConstInt16Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -24680,13 +27272,16 @@ func (p projRShiftDatumConstInt32Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) _convertedNativeElem := tree.DInt(arg) @@ -24709,7 +27304,8 @@ func (p projRShiftDatumConstInt32Op) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) _convertedNativeElem := tree.DInt(arg) @@ -24728,11 +27324,15 @@ func (p projRShiftDatumConstInt32Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -24775,11 +27375,15 @@ func (p projRShiftDatumConstInt32Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -24812,13 +27416,16 @@ func (p projRShiftDatumConstInt64Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) _convertedNativeElem := tree.DInt(arg) @@ -24841,7 +27448,8 @@ func (p projRShiftDatumConstInt64Op) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) _convertedNativeElem := tree.DInt(arg) @@ -24860,11 +27468,15 @@ func (p projRShiftDatumConstInt64Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -24907,11 +27519,15 @@ func (p projRShiftDatumConstInt64Op) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -24942,13 +27558,16 @@ func (p projJSONFetchValJSONConstBytesOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) // Get an unsafe string handle onto the bytes, to avoid a spurious copy. This @@ -24970,7 +27589,8 @@ func (p projJSONFetchValJSONConstBytesOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) // Get an unsafe string handle onto the bytes, to avoid a spurious copy. This @@ -24988,11 +27608,15 @@ func (p projJSONFetchValJSONConstBytesOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -25033,11 +27657,15 @@ func (p projJSONFetchValJSONConstBytesOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -25068,13 +27696,16 @@ func (p projJSONFetchValJSONConstInt16Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) _j, _err := p.constArg.FetchValIdx(int(arg)) @@ -25093,7 +27724,8 @@ func (p projJSONFetchValJSONConstInt16Op) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) _j, _err := p.constArg.FetchValIdx(int(arg)) @@ -25108,11 +27740,15 @@ func (p projJSONFetchValJSONConstInt16Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -25147,11 +27783,15 @@ func (p projJSONFetchValJSONConstInt16Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -25182,13 +27822,16 @@ func (p projJSONFetchValJSONConstInt32Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) _j, _err := p.constArg.FetchValIdx(int(arg)) @@ -25207,7 +27850,8 @@ func (p projJSONFetchValJSONConstInt32Op) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) _j, _err := p.constArg.FetchValIdx(int(arg)) @@ -25222,11 +27866,15 @@ func (p projJSONFetchValJSONConstInt32Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -25261,11 +27909,15 @@ func (p projJSONFetchValJSONConstInt32Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -25296,13 +27948,16 @@ func (p projJSONFetchValJSONConstInt64Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) _j, _err := p.constArg.FetchValIdx(int(arg)) @@ -25321,7 +27976,8 @@ func (p projJSONFetchValJSONConstInt64Op) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) _j, _err := p.constArg.FetchValIdx(int(arg)) @@ -25336,11 +27992,15 @@ func (p projJSONFetchValJSONConstInt64Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -25375,11 +28035,15 @@ func (p projJSONFetchValJSONConstInt64Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -25410,13 +28074,16 @@ func (p projJSONFetchTextJSONConstBytesOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) // Get an unsafe string handle onto the bytes, to avoid a spurious copy. This @@ -25447,7 +28114,8 @@ func (p projJSONFetchTextJSONConstBytesOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) // Get an unsafe string handle onto the bytes, to avoid a spurious copy. This @@ -25474,11 +28142,15 @@ func (p projJSONFetchTextJSONConstBytesOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -25537,11 +28209,15 @@ func (p projJSONFetchTextJSONConstBytesOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -25572,13 +28248,16 @@ func (p projJSONFetchTextJSONConstInt16Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) _j, _err := p.constArg.FetchValIdx(int(arg)) @@ -25606,7 +28285,8 @@ func (p projJSONFetchTextJSONConstInt16Op) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) _j, _err := p.constArg.FetchValIdx(int(arg)) @@ -25630,11 +28310,15 @@ func (p projJSONFetchTextJSONConstInt16Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -25687,11 +28371,15 @@ func (p projJSONFetchTextJSONConstInt16Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -25722,13 +28410,16 @@ func (p projJSONFetchTextJSONConstInt32Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) _j, _err := p.constArg.FetchValIdx(int(arg)) @@ -25756,7 +28447,8 @@ func (p projJSONFetchTextJSONConstInt32Op) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) _j, _err := p.constArg.FetchValIdx(int(arg)) @@ -25780,11 +28472,15 @@ func (p projJSONFetchTextJSONConstInt32Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -25837,11 +28533,15 @@ func (p projJSONFetchTextJSONConstInt32Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -25872,13 +28572,16 @@ func (p projJSONFetchTextJSONConstInt64Op) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) _j, _err := p.constArg.FetchValIdx(int(arg)) @@ -25906,7 +28609,8 @@ func (p projJSONFetchTextJSONConstInt64Op) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) _j, _err := p.constArg.FetchValIdx(int(arg)) @@ -25930,11 +28634,15 @@ func (p projJSONFetchTextJSONConstInt64Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -25987,11 +28695,15 @@ func (p projJSONFetchTextJSONConstInt64Op) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -26022,13 +28734,16 @@ func (p projJSONFetchValPathJSONConstDatumOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) _path, _err := tree.GetJSONPath(p.constArg, *tree.MustBeDArray(arg.(tree.Datum))) @@ -26047,7 +28762,8 @@ func (p projJSONFetchValPathJSONConstDatumOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) _path, _err := tree.GetJSONPath(p.constArg, *tree.MustBeDArray(arg.(tree.Datum))) @@ -26062,11 +28778,15 @@ func (p projJSONFetchValPathJSONConstDatumOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -26101,11 +28821,15 @@ func (p projJSONFetchValPathJSONConstDatumOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -26136,13 +28860,16 @@ func (p projJSONFetchTextPathJSONConstDatumOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) _path, _err := tree.GetJSONPath(p.constArg, *tree.MustBeDArray(arg.(tree.Datum))) @@ -26171,7 +28898,8 @@ func (p projJSONFetchTextPathJSONConstDatumOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) _path, _err := tree.GetJSONPath(p.constArg, *tree.MustBeDArray(arg.(tree.Datum))) @@ -26196,11 +28924,15 @@ func (p projJSONFetchTextPathJSONConstDatumOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -26255,11 +28987,15 @@ func (p projJSONFetchTextPathJSONConstDatumOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -26280,6 +29016,7 @@ func GetProjectionLConstOperator( evalCtx *eval.Context, binOp tree.BinaryEvalOp, cmpExpr *tree.ComparisonExpr, + nullableArgs bool, ) (colexecop.Operator, error) { input = colexecutils.NewVectorTypeEnforcer(allocator, input, outputType, outputIdx) projConstOpBase := projConstOpBase{ @@ -26287,6 +29024,7 @@ func GetProjectionLConstOperator( allocator: allocator, colIdx: colIdx, outputIdx: outputIdx, + nullableArgs: nullableArgs, } c := colconv.GetDatumToPhysicalFn(constType)(constArg) leftType, rightType := constType, inputTypes[colIdx] diff --git a/pkg/sql/colexec/colexecprojconst/proj_const_ops_base.go b/pkg/sql/colexec/colexecprojconst/proj_const_ops_base.go index 429eccde3ce3..793dd294362a 100644 --- a/pkg/sql/colexec/colexecprojconst/proj_const_ops_base.go +++ b/pkg/sql/colexec/colexecprojconst/proj_const_ops_base.go @@ -19,7 +19,8 @@ import ( // except for the constant itself. type projConstOpBase struct { colexecop.OneInputHelper - allocator *colmem.Allocator - colIdx int - outputIdx int + allocator *colmem.Allocator + colIdx int + outputIdx int + nullableArgs bool } diff --git a/pkg/sql/colexec/colexecprojconst/proj_const_ops_tmpl.go b/pkg/sql/colexec/colexecprojconst/proj_const_ops_tmpl.go index 98f60b7ce292..92c14c5e0fa8 100644 --- a/pkg/sql/colexec/colexecprojconst/proj_const_ops_tmpl.go +++ b/pkg/sql/colexec/colexecprojconst/proj_const_ops_tmpl.go @@ -127,7 +127,24 @@ func (p _OP_CONST_NAME) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + // If nullableArgs 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. The logic for nullableArgs is only added to the if + // statement for function related to concatDatum. If we later introduce + // another projection operation that has nullableArgs == true, we should + // update this code accordingly. + // {{if or (eq .Left.VecMethod "Datum") (eq .Right.VecMethod "Datum")}} + // {{if (eq .Name "Concat")}} + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() && !p.nullableArgs + // {{else}} + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + // {{end}} + // {{else}} + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + //{{end}} + if hasNullsAndNotNullable { _SET_PROJECTION(true) } else { _SET_PROJECTION(false) @@ -159,11 +176,11 @@ func _SET_PROJECTION(_HAS_NULLS bool) { _SET_SINGLE_TUPLE_PROJECTION(_HAS_NULLS, false) } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. // If _HAS_NULLS is true, union _outNulls with the set of input Nulls. - // If _HAS_NULLS is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // If _HAS_NULLS is false, then there are no input Nulls or nullableArgs is true. + // _outNulls is projVec.Nulls() so there is no need to call projVec.SetNulls(). // {{if _HAS_NULLS}} projVec.SetNulls(_outNulls.Or(*colNulls)) // {{end}} @@ -182,7 +199,8 @@ func _SET_SINGLE_TUPLE_PROJECTION(_HAS_NULLS bool, _HAS_SEL bool) { // */}} // {{with $.Overload}} // {{if _HAS_NULLS}} if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. // {{end}} // {{if _IS_CONST_LEFT}} // {{if and (.Left.Sliceable) (not _HAS_SEL)}} @@ -261,6 +279,7 @@ func GetProjection_CONST_SIDEConstOperator( evalCtx *eval.Context, binOp tree.BinaryEvalOp, cmpExpr *tree.ComparisonExpr, + nullableArgs bool, ) (colexecop.Operator, error) { input = colexecutils.NewVectorTypeEnforcer(allocator, input, outputType, outputIdx) projConstOpBase := projConstOpBase{ @@ -268,6 +287,7 @@ func GetProjection_CONST_SIDEConstOperator( allocator: allocator, colIdx: colIdx, outputIdx: outputIdx, + nullableArgs: nullableArgs, } c := colconv.GetDatumToPhysicalFn(constType)(constArg) // {{if _IS_CONST_LEFT}} 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 6fea899f61da..eed4d1618e2f 100644 --- a/pkg/sql/colexec/colexecprojconst/proj_const_right_ops.eg.go +++ b/pkg/sql/colexec/colexecprojconst/proj_const_right_ops.eg.go @@ -73,13 +73,16 @@ func (p projBitandInt16Int16ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) projCol[i] = int64(arg) & int64(p.constArg) @@ -91,7 +94,8 @@ func (p projBitandInt16Int16ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -100,11 +104,15 @@ func (p projBitandInt16Int16ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -126,11 +134,15 @@ func (p projBitandInt16Int16ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -161,13 +173,16 @@ func (p projBitandInt16Int32ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) projCol[i] = int64(arg) & int64(p.constArg) @@ -179,7 +194,8 @@ func (p projBitandInt16Int32ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -188,11 +204,15 @@ func (p projBitandInt16Int32ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -214,11 +234,15 @@ func (p projBitandInt16Int32ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -249,13 +273,16 @@ func (p projBitandInt16Int64ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) projCol[i] = int64(arg) & int64(p.constArg) @@ -267,7 +294,8 @@ func (p projBitandInt16Int64ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -276,11 +304,15 @@ func (p projBitandInt16Int64ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -302,11 +334,15 @@ func (p projBitandInt16Int64ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -337,13 +373,16 @@ func (p projBitandInt32Int16ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) projCol[i] = int64(arg) & int64(p.constArg) @@ -355,7 +394,8 @@ func (p projBitandInt32Int16ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -364,11 +404,15 @@ func (p projBitandInt32Int16ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -390,11 +434,15 @@ func (p projBitandInt32Int16ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -425,13 +473,16 @@ func (p projBitandInt32Int32ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) projCol[i] = int64(arg) & int64(p.constArg) @@ -443,7 +494,8 @@ func (p projBitandInt32Int32ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -452,11 +504,15 @@ func (p projBitandInt32Int32ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -478,11 +534,15 @@ func (p projBitandInt32Int32ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -513,13 +573,16 @@ func (p projBitandInt32Int64ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) projCol[i] = int64(arg) & int64(p.constArg) @@ -531,7 +594,8 @@ func (p projBitandInt32Int64ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -540,11 +604,15 @@ func (p projBitandInt32Int64ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -566,11 +634,15 @@ func (p projBitandInt32Int64ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -601,13 +673,16 @@ func (p projBitandInt64Int16ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) projCol[i] = int64(arg) & int64(p.constArg) @@ -619,7 +694,8 @@ func (p projBitandInt64Int16ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -628,11 +704,15 @@ func (p projBitandInt64Int16ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -654,11 +734,15 @@ func (p projBitandInt64Int16ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -689,13 +773,16 @@ func (p projBitandInt64Int32ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) projCol[i] = int64(arg) & int64(p.constArg) @@ -707,7 +794,8 @@ func (p projBitandInt64Int32ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -716,11 +804,15 @@ func (p projBitandInt64Int32ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -742,11 +834,15 @@ func (p projBitandInt64Int32ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -777,13 +873,16 @@ func (p projBitandInt64Int64ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) projCol[i] = int64(arg) & int64(p.constArg) @@ -795,7 +894,8 @@ func (p projBitandInt64Int64ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -804,11 +904,15 @@ func (p projBitandInt64Int64ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -830,11 +934,15 @@ func (p projBitandInt64Int64ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -867,13 +975,16 @@ func (p projBitandDatumDatumConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) _res, err := eval.BinaryOp(_overloadHelper.EvalCtx, _overloadHelper.BinOp, arg.(tree.Datum), p.constArg.(tree.Datum)) @@ -892,7 +1003,8 @@ func (p projBitandDatumDatumConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) _res, err := eval.BinaryOp(_overloadHelper.EvalCtx, _overloadHelper.BinOp, arg.(tree.Datum), p.constArg.(tree.Datum)) @@ -907,11 +1019,15 @@ func (p projBitandDatumDatumConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -946,11 +1062,15 @@ func (p projBitandDatumDatumConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -981,13 +1101,16 @@ func (p projBitorInt16Int16ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) projCol[i] = int64(arg) | int64(p.constArg) @@ -999,7 +1122,8 @@ func (p projBitorInt16Int16ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -1008,11 +1132,15 @@ func (p projBitorInt16Int16ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -1034,11 +1162,15 @@ func (p projBitorInt16Int16ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -1069,13 +1201,16 @@ func (p projBitorInt16Int32ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) projCol[i] = int64(arg) | int64(p.constArg) @@ -1087,7 +1222,8 @@ func (p projBitorInt16Int32ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -1096,11 +1232,15 @@ func (p projBitorInt16Int32ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -1122,11 +1262,15 @@ func (p projBitorInt16Int32ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -1157,13 +1301,16 @@ func (p projBitorInt16Int64ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) projCol[i] = int64(arg) | int64(p.constArg) @@ -1175,7 +1322,8 @@ func (p projBitorInt16Int64ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -1184,11 +1332,15 @@ func (p projBitorInt16Int64ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -1210,11 +1362,15 @@ func (p projBitorInt16Int64ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -1245,13 +1401,16 @@ func (p projBitorInt32Int16ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) projCol[i] = int64(arg) | int64(p.constArg) @@ -1263,7 +1422,8 @@ func (p projBitorInt32Int16ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -1272,11 +1432,15 @@ func (p projBitorInt32Int16ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -1298,11 +1462,15 @@ func (p projBitorInt32Int16ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -1333,13 +1501,16 @@ func (p projBitorInt32Int32ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) projCol[i] = int64(arg) | int64(p.constArg) @@ -1351,7 +1522,8 @@ func (p projBitorInt32Int32ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -1360,11 +1532,15 @@ func (p projBitorInt32Int32ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -1386,11 +1562,15 @@ func (p projBitorInt32Int32ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -1421,13 +1601,16 @@ func (p projBitorInt32Int64ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) projCol[i] = int64(arg) | int64(p.constArg) @@ -1439,7 +1622,8 @@ func (p projBitorInt32Int64ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -1448,11 +1632,15 @@ func (p projBitorInt32Int64ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -1474,11 +1662,15 @@ func (p projBitorInt32Int64ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -1509,13 +1701,16 @@ func (p projBitorInt64Int16ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) projCol[i] = int64(arg) | int64(p.constArg) @@ -1527,7 +1722,8 @@ func (p projBitorInt64Int16ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -1536,11 +1732,15 @@ func (p projBitorInt64Int16ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -1562,11 +1762,15 @@ func (p projBitorInt64Int16ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -1597,13 +1801,16 @@ func (p projBitorInt64Int32ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) projCol[i] = int64(arg) | int64(p.constArg) @@ -1615,7 +1822,8 @@ func (p projBitorInt64Int32ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -1624,11 +1832,15 @@ func (p projBitorInt64Int32ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -1650,11 +1862,15 @@ func (p projBitorInt64Int32ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -1685,13 +1901,16 @@ func (p projBitorInt64Int64ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) projCol[i] = int64(arg) | int64(p.constArg) @@ -1703,7 +1922,8 @@ func (p projBitorInt64Int64ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -1712,11 +1932,15 @@ func (p projBitorInt64Int64ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -1738,11 +1962,15 @@ func (p projBitorInt64Int64ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -1775,13 +2003,16 @@ func (p projBitorDatumDatumConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) _res, err := eval.BinaryOp(_overloadHelper.EvalCtx, _overloadHelper.BinOp, arg.(tree.Datum), p.constArg.(tree.Datum)) @@ -1800,7 +2031,8 @@ func (p projBitorDatumDatumConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) _res, err := eval.BinaryOp(_overloadHelper.EvalCtx, _overloadHelper.BinOp, arg.(tree.Datum), p.constArg.(tree.Datum)) @@ -1815,11 +2047,15 @@ func (p projBitorDatumDatumConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -1854,11 +2090,15 @@ func (p projBitorDatumDatumConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -1889,13 +2129,16 @@ func (p projBitxorInt16Int16ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) projCol[i] = int64(arg) ^ int64(p.constArg) @@ -1907,7 +2150,8 @@ func (p projBitxorInt16Int16ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -1916,11 +2160,15 @@ func (p projBitxorInt16Int16ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -1942,11 +2190,15 @@ func (p projBitxorInt16Int16ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -1977,13 +2229,16 @@ func (p projBitxorInt16Int32ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) projCol[i] = int64(arg) ^ int64(p.constArg) @@ -1995,7 +2250,8 @@ func (p projBitxorInt16Int32ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -2004,11 +2260,15 @@ func (p projBitxorInt16Int32ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -2030,11 +2290,15 @@ func (p projBitxorInt16Int32ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -2065,13 +2329,16 @@ func (p projBitxorInt16Int64ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) projCol[i] = int64(arg) ^ int64(p.constArg) @@ -2083,7 +2350,8 @@ func (p projBitxorInt16Int64ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -2092,11 +2360,15 @@ func (p projBitxorInt16Int64ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -2118,11 +2390,15 @@ func (p projBitxorInt16Int64ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -2153,13 +2429,16 @@ func (p projBitxorInt32Int16ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) projCol[i] = int64(arg) ^ int64(p.constArg) @@ -2171,7 +2450,8 @@ func (p projBitxorInt32Int16ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -2180,11 +2460,15 @@ func (p projBitxorInt32Int16ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -2206,11 +2490,15 @@ func (p projBitxorInt32Int16ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -2241,13 +2529,16 @@ func (p projBitxorInt32Int32ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) projCol[i] = int64(arg) ^ int64(p.constArg) @@ -2259,7 +2550,8 @@ func (p projBitxorInt32Int32ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -2268,11 +2560,15 @@ func (p projBitxorInt32Int32ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -2294,11 +2590,15 @@ func (p projBitxorInt32Int32ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -2329,13 +2629,16 @@ func (p projBitxorInt32Int64ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) projCol[i] = int64(arg) ^ int64(p.constArg) @@ -2347,7 +2650,8 @@ func (p projBitxorInt32Int64ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -2356,11 +2660,15 @@ func (p projBitxorInt32Int64ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -2382,11 +2690,15 @@ func (p projBitxorInt32Int64ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -2417,13 +2729,16 @@ func (p projBitxorInt64Int16ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) projCol[i] = int64(arg) ^ int64(p.constArg) @@ -2435,7 +2750,8 @@ func (p projBitxorInt64Int16ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -2444,11 +2760,15 @@ func (p projBitxorInt64Int16ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -2470,11 +2790,15 @@ func (p projBitxorInt64Int16ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -2505,13 +2829,16 @@ func (p projBitxorInt64Int32ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) projCol[i] = int64(arg) ^ int64(p.constArg) @@ -2523,7 +2850,8 @@ func (p projBitxorInt64Int32ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -2532,11 +2860,15 @@ func (p projBitxorInt64Int32ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -2558,11 +2890,15 @@ func (p projBitxorInt64Int32ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -2593,13 +2929,16 @@ func (p projBitxorInt64Int64ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) projCol[i] = int64(arg) ^ int64(p.constArg) @@ -2611,7 +2950,8 @@ func (p projBitxorInt64Int64ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -2620,11 +2960,15 @@ func (p projBitxorInt64Int64ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -2646,11 +2990,15 @@ func (p projBitxorInt64Int64ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -2683,13 +3031,16 @@ func (p projBitxorDatumDatumConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) _res, err := eval.BinaryOp(_overloadHelper.EvalCtx, _overloadHelper.BinOp, arg.(tree.Datum), p.constArg.(tree.Datum)) @@ -2708,7 +3059,8 @@ func (p projBitxorDatumDatumConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) _res, err := eval.BinaryOp(_overloadHelper.EvalCtx, _overloadHelper.BinOp, arg.(tree.Datum), p.constArg.(tree.Datum)) @@ -2723,11 +3075,15 @@ func (p projBitxorDatumDatumConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -2762,11 +3118,15 @@ func (p projBitxorDatumDatumConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -2797,13 +3157,16 @@ func (p projPlusDecimalInt16ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -2822,7 +3185,8 @@ func (p projPlusDecimalInt16ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -2838,11 +3202,15 @@ func (p projPlusDecimalInt16ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -2878,11 +3246,15 @@ func (p projPlusDecimalInt16ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -2913,13 +3285,16 @@ func (p projPlusDecimalInt32ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -2938,7 +3313,8 @@ func (p projPlusDecimalInt32ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -2954,11 +3330,15 @@ func (p projPlusDecimalInt32ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -2994,11 +3374,15 @@ func (p projPlusDecimalInt32ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -3029,13 +3413,16 @@ func (p projPlusDecimalInt64ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -3054,7 +3441,8 @@ func (p projPlusDecimalInt64ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -3070,11 +3458,15 @@ func (p projPlusDecimalInt64ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -3110,11 +3502,15 @@ func (p projPlusDecimalInt64ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -3145,13 +3541,16 @@ func (p projPlusDecimalDecimalConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -3169,7 +3568,8 @@ func (p projPlusDecimalDecimalConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -3184,11 +3584,15 @@ func (p projPlusDecimalDecimalConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -3222,11 +3626,15 @@ func (p projPlusDecimalDecimalConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -3257,13 +3665,16 @@ func (p projPlusInt16Int16ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -3281,7 +3692,8 @@ func (p projPlusInt16Int16ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -3296,11 +3708,15 @@ func (p projPlusInt16Int16ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -3334,11 +3750,15 @@ func (p projPlusInt16Int16ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -3369,13 +3789,16 @@ func (p projPlusInt16Int32ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -3393,7 +3816,8 @@ func (p projPlusInt16Int32ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -3408,11 +3832,15 @@ func (p projPlusInt16Int32ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -3446,11 +3874,15 @@ func (p projPlusInt16Int32ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -3481,13 +3913,16 @@ func (p projPlusInt16Int64ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -3505,7 +3940,8 @@ func (p projPlusInt16Int64ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -3520,11 +3956,15 @@ func (p projPlusInt16Int64ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -3558,11 +3998,15 @@ func (p projPlusInt16Int64ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -3593,13 +4037,16 @@ func (p projPlusInt16DecimalConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -3619,7 +4066,8 @@ func (p projPlusInt16DecimalConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -3636,11 +4084,15 @@ func (p projPlusInt16DecimalConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -3678,11 +4130,15 @@ func (p projPlusInt16DecimalConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -3715,13 +4171,16 @@ func (p projPlusInt16DatumConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) _convertedNativeElem := tree.DInt(arg) @@ -3744,7 +4203,8 @@ func (p projPlusInt16DatumConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) _convertedNativeElem := tree.DInt(arg) @@ -3763,11 +4223,15 @@ func (p projPlusInt16DatumConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -3810,11 +4274,15 @@ func (p projPlusInt16DatumConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -3845,13 +4313,16 @@ func (p projPlusInt32Int16ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -3869,7 +4340,8 @@ func (p projPlusInt32Int16ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -3884,11 +4356,15 @@ func (p projPlusInt32Int16ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -3922,11 +4398,15 @@ func (p projPlusInt32Int16ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -3957,13 +4437,16 @@ func (p projPlusInt32Int32ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -3981,7 +4464,8 @@ func (p projPlusInt32Int32ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -3996,11 +4480,15 @@ func (p projPlusInt32Int32ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -4034,11 +4522,15 @@ func (p projPlusInt32Int32ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -4069,13 +4561,16 @@ func (p projPlusInt32Int64ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -4093,7 +4588,8 @@ func (p projPlusInt32Int64ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -4108,11 +4604,15 @@ func (p projPlusInt32Int64ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -4146,11 +4646,15 @@ func (p projPlusInt32Int64ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -4181,13 +4685,16 @@ func (p projPlusInt32DecimalConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -4207,7 +4714,8 @@ func (p projPlusInt32DecimalConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -4224,11 +4732,15 @@ func (p projPlusInt32DecimalConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -4266,11 +4778,15 @@ func (p projPlusInt32DecimalConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -4303,13 +4819,16 @@ func (p projPlusInt32DatumConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) _convertedNativeElem := tree.DInt(arg) @@ -4332,7 +4851,8 @@ func (p projPlusInt32DatumConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) _convertedNativeElem := tree.DInt(arg) @@ -4351,11 +4871,15 @@ func (p projPlusInt32DatumConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -4398,11 +4922,15 @@ func (p projPlusInt32DatumConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -4433,13 +4961,16 @@ func (p projPlusInt64Int16ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -4457,7 +4988,8 @@ func (p projPlusInt64Int16ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -4472,11 +5004,15 @@ func (p projPlusInt64Int16ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -4510,11 +5046,15 @@ func (p projPlusInt64Int16ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -4545,13 +5085,16 @@ func (p projPlusInt64Int32ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -4569,7 +5112,8 @@ func (p projPlusInt64Int32ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -4584,11 +5128,15 @@ func (p projPlusInt64Int32ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -4622,11 +5170,15 @@ func (p projPlusInt64Int32ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -4657,13 +5209,16 @@ func (p projPlusInt64Int64ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -4681,7 +5236,8 @@ func (p projPlusInt64Int64ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -4696,11 +5252,15 @@ func (p projPlusInt64Int64ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -4734,11 +5294,15 @@ func (p projPlusInt64Int64ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -4769,13 +5333,16 @@ func (p projPlusInt64DecimalConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -4795,7 +5362,8 @@ func (p projPlusInt64DecimalConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -4812,11 +5380,15 @@ func (p projPlusInt64DecimalConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -4854,11 +5426,15 @@ func (p projPlusInt64DecimalConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -4891,13 +5467,16 @@ func (p projPlusInt64DatumConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) _convertedNativeElem := tree.DInt(arg) @@ -4920,7 +5499,8 @@ func (p projPlusInt64DatumConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) _convertedNativeElem := tree.DInt(arg) @@ -4939,11 +5519,15 @@ func (p projPlusInt64DatumConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -4986,11 +5570,15 @@ func (p projPlusInt64DatumConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -5021,13 +5609,16 @@ func (p projPlusFloat64Float64ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -5042,7 +5633,8 @@ func (p projPlusFloat64Float64ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -5054,11 +5646,15 @@ func (p projPlusFloat64Float64ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -5086,11 +5682,15 @@ func (p projPlusFloat64Float64ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -5121,13 +5721,16 @@ func (p projPlusTimestampIntervalConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) t_res := duration.Add(arg, p.constArg) rounded_res := t_res.Round(time.Microsecond) @@ -5142,7 +5745,8 @@ func (p projPlusTimestampIntervalConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) t_res := duration.Add(arg, p.constArg) @@ -5154,11 +5758,15 @@ func (p projPlusTimestampIntervalConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -5186,11 +5794,15 @@ func (p projPlusTimestampIntervalConstOp) Next() coldata.Batch { projCol[i] = t_res } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -5221,13 +5833,16 @@ func (p projPlusIntervalTimestampConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) t_res := duration.Add(p.constArg, arg) rounded_res := t_res.Round(time.Microsecond) @@ -5242,7 +5857,8 @@ func (p projPlusIntervalTimestampConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) t_res := duration.Add(p.constArg, arg) @@ -5254,11 +5870,15 @@ func (p projPlusIntervalTimestampConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -5286,11 +5906,15 @@ func (p projPlusIntervalTimestampConstOp) Next() coldata.Batch { projCol[i] = t_res } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -5321,13 +5945,16 @@ func (p projPlusIntervalIntervalConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) projCol[i] = arg.Add(p.constArg) } @@ -5337,18 +5964,23 @@ func (p projPlusIntervalIntervalConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) projCol[i] = arg.Add(p.constArg) } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -5366,11 +5998,15 @@ func (p projPlusIntervalIntervalConstOp) Next() coldata.Batch { projCol[i] = arg.Add(p.constArg) } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -5403,13 +6039,16 @@ func (p projPlusIntervalDatumConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) _convertedNativeElem := tree.DInterval{Duration: arg} @@ -5432,7 +6071,8 @@ func (p projPlusIntervalDatumConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) _convertedNativeElem := tree.DInterval{Duration: arg} @@ -5451,11 +6091,15 @@ func (p projPlusIntervalDatumConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -5498,11 +6142,15 @@ func (p projPlusIntervalDatumConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -5535,13 +6183,16 @@ func (p projPlusDatumIntervalConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) _convertedNativeElem := tree.DInterval{Duration: p.constArg} @@ -5564,7 +6215,8 @@ func (p projPlusDatumIntervalConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -5584,11 +6236,15 @@ func (p projPlusDatumIntervalConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -5632,11 +6288,15 @@ func (p projPlusDatumIntervalConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -5669,13 +6329,16 @@ func (p projPlusDatumInt16ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) _convertedNativeElem := tree.DInt(p.constArg) @@ -5698,7 +6361,8 @@ func (p projPlusDatumInt16ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -5718,11 +6382,15 @@ func (p projPlusDatumInt16ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -5766,11 +6434,15 @@ func (p projPlusDatumInt16ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -5803,13 +6475,16 @@ func (p projPlusDatumInt32ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) _convertedNativeElem := tree.DInt(p.constArg) @@ -5832,7 +6507,8 @@ func (p projPlusDatumInt32ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -5852,11 +6528,15 @@ func (p projPlusDatumInt32ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -5900,11 +6580,15 @@ func (p projPlusDatumInt32ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -5937,13 +6621,16 @@ func (p projPlusDatumInt64ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) _convertedNativeElem := tree.DInt(p.constArg) @@ -5966,7 +6653,8 @@ func (p projPlusDatumInt64ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -5986,11 +6674,15 @@ func (p projPlusDatumInt64ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -6034,11 +6726,15 @@ func (p projPlusDatumInt64ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -6069,13 +6765,16 @@ func (p projMinusDecimalInt16ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -6094,7 +6793,8 @@ func (p projMinusDecimalInt16ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -6110,11 +6810,15 @@ func (p projMinusDecimalInt16ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -6150,11 +6854,15 @@ func (p projMinusDecimalInt16ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -6185,13 +6893,16 @@ func (p projMinusDecimalInt32ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -6210,7 +6921,8 @@ func (p projMinusDecimalInt32ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -6226,11 +6938,15 @@ func (p projMinusDecimalInt32ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -6266,11 +6982,15 @@ func (p projMinusDecimalInt32ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -6301,13 +7021,16 @@ func (p projMinusDecimalInt64ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -6326,7 +7049,8 @@ func (p projMinusDecimalInt64ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -6342,11 +7066,15 @@ func (p projMinusDecimalInt64ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -6382,11 +7110,15 @@ func (p projMinusDecimalInt64ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -6417,13 +7149,16 @@ func (p projMinusDecimalDecimalConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -6441,7 +7176,8 @@ func (p projMinusDecimalDecimalConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -6456,11 +7192,15 @@ func (p projMinusDecimalDecimalConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -6494,11 +7234,15 @@ func (p projMinusDecimalDecimalConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -6529,13 +7273,16 @@ func (p projMinusInt16Int16ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -6553,7 +7300,8 @@ func (p projMinusInt16Int16ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -6568,11 +7316,15 @@ func (p projMinusInt16Int16ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -6606,11 +7358,15 @@ func (p projMinusInt16Int16ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -6641,13 +7397,16 @@ func (p projMinusInt16Int32ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -6665,7 +7424,8 @@ func (p projMinusInt16Int32ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -6680,11 +7440,15 @@ func (p projMinusInt16Int32ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -6718,11 +7482,15 @@ func (p projMinusInt16Int32ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -6753,13 +7521,16 @@ func (p projMinusInt16Int64ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -6777,7 +7548,8 @@ func (p projMinusInt16Int64ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -6792,11 +7564,15 @@ func (p projMinusInt16Int64ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -6830,11 +7606,15 @@ func (p projMinusInt16Int64ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -6865,13 +7645,16 @@ func (p projMinusInt16DecimalConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -6891,7 +7674,8 @@ func (p projMinusInt16DecimalConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -6908,11 +7692,15 @@ func (p projMinusInt16DecimalConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -6950,11 +7738,15 @@ func (p projMinusInt16DecimalConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -6987,13 +7779,16 @@ func (p projMinusInt16DatumConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) _convertedNativeElem := tree.DInt(arg) @@ -7016,7 +7811,8 @@ func (p projMinusInt16DatumConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) _convertedNativeElem := tree.DInt(arg) @@ -7035,11 +7831,15 @@ func (p projMinusInt16DatumConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -7082,11 +7882,15 @@ func (p projMinusInt16DatumConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -7117,13 +7921,16 @@ func (p projMinusInt32Int16ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -7141,7 +7948,8 @@ func (p projMinusInt32Int16ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -7156,11 +7964,15 @@ func (p projMinusInt32Int16ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -7194,11 +8006,15 @@ func (p projMinusInt32Int16ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -7229,13 +8045,16 @@ func (p projMinusInt32Int32ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -7253,7 +8072,8 @@ func (p projMinusInt32Int32ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -7268,11 +8088,15 @@ func (p projMinusInt32Int32ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -7306,11 +8130,15 @@ func (p projMinusInt32Int32ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -7341,13 +8169,16 @@ func (p projMinusInt32Int64ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -7365,7 +8196,8 @@ func (p projMinusInt32Int64ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -7380,11 +8212,15 @@ func (p projMinusInt32Int64ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -7418,11 +8254,15 @@ func (p projMinusInt32Int64ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -7453,13 +8293,16 @@ func (p projMinusInt32DecimalConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -7479,7 +8322,8 @@ func (p projMinusInt32DecimalConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -7496,11 +8340,15 @@ func (p projMinusInt32DecimalConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -7538,11 +8386,15 @@ func (p projMinusInt32DecimalConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -7575,13 +8427,16 @@ func (p projMinusInt32DatumConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) _convertedNativeElem := tree.DInt(arg) @@ -7604,7 +8459,8 @@ func (p projMinusInt32DatumConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) _convertedNativeElem := tree.DInt(arg) @@ -7623,11 +8479,15 @@ func (p projMinusInt32DatumConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -7670,11 +8530,15 @@ func (p projMinusInt32DatumConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -7705,13 +8569,16 @@ func (p projMinusInt64Int16ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -7729,7 +8596,8 @@ func (p projMinusInt64Int16ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -7744,11 +8612,15 @@ func (p projMinusInt64Int16ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -7782,11 +8654,15 @@ func (p projMinusInt64Int16ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -7817,13 +8693,16 @@ func (p projMinusInt64Int32ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -7841,7 +8720,8 @@ func (p projMinusInt64Int32ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -7856,11 +8736,15 @@ func (p projMinusInt64Int32ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -7894,11 +8778,15 @@ func (p projMinusInt64Int32ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -7929,13 +8817,16 @@ func (p projMinusInt64Int64ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -7953,7 +8844,8 @@ func (p projMinusInt64Int64ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -7968,11 +8860,15 @@ func (p projMinusInt64Int64ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -8006,11 +8902,15 @@ func (p projMinusInt64Int64ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -8041,13 +8941,16 @@ func (p projMinusInt64DecimalConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -8067,7 +8970,8 @@ func (p projMinusInt64DecimalConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -8084,11 +8988,15 @@ func (p projMinusInt64DecimalConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -8126,11 +9034,15 @@ func (p projMinusInt64DecimalConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -8163,13 +9075,16 @@ func (p projMinusInt64DatumConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) _convertedNativeElem := tree.DInt(arg) @@ -8192,7 +9107,8 @@ func (p projMinusInt64DatumConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) _convertedNativeElem := tree.DInt(arg) @@ -8211,11 +9127,15 @@ func (p projMinusInt64DatumConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -8258,11 +9178,15 @@ func (p projMinusInt64DatumConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -8293,13 +9217,16 @@ func (p projMinusFloat64Float64ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -8314,7 +9241,8 @@ func (p projMinusFloat64Float64ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -8326,11 +9254,15 @@ func (p projMinusFloat64Float64ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -8358,11 +9290,15 @@ func (p projMinusFloat64Float64ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -8393,13 +9329,16 @@ func (p projMinusTimestampTimestampConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) nanos := arg.Sub(p.constArg).Nanoseconds() @@ -8412,7 +9351,8 @@ func (p projMinusTimestampTimestampConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -8422,11 +9362,15 @@ func (p projMinusTimestampTimestampConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -8450,11 +9394,15 @@ func (p projMinusTimestampTimestampConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -8485,13 +9433,16 @@ func (p projMinusTimestampIntervalConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) t_res := duration.Add(arg, p.constArg.Mul(-1)) rounded_res := t_res.Round(time.Microsecond) @@ -8506,7 +9457,8 @@ func (p projMinusTimestampIntervalConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) t_res := duration.Add(arg, p.constArg.Mul(-1)) @@ -8518,11 +9470,15 @@ func (p projMinusTimestampIntervalConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -8550,11 +9506,15 @@ func (p projMinusTimestampIntervalConstOp) Next() coldata.Batch { projCol[i] = t_res } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -8585,13 +9545,16 @@ func (p projMinusIntervalIntervalConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) projCol[i] = arg.Sub(p.constArg) } @@ -8601,18 +9564,23 @@ func (p projMinusIntervalIntervalConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) projCol[i] = arg.Sub(p.constArg) } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -8630,11 +9598,15 @@ func (p projMinusIntervalIntervalConstOp) Next() coldata.Batch { projCol[i] = arg.Sub(p.constArg) } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -8667,13 +9639,16 @@ func (p projMinusIntervalDatumConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) _convertedNativeElem := tree.DInterval{Duration: arg} @@ -8696,7 +9671,8 @@ func (p projMinusIntervalDatumConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) _convertedNativeElem := tree.DInterval{Duration: arg} @@ -8715,11 +9691,15 @@ func (p projMinusIntervalDatumConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -8762,11 +9742,15 @@ func (p projMinusIntervalDatumConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -8797,13 +9781,16 @@ func (p projMinusJSONBytesConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) // Get an unsafe string handle onto the bytes, to avoid a spurious copy. This @@ -8822,7 +9809,8 @@ func (p projMinusJSONBytesConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) // Get an unsafe string handle onto the bytes, to avoid a spurious copy. This @@ -8837,11 +9825,15 @@ func (p projMinusJSONBytesConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -8876,11 +9868,15 @@ func (p projMinusJSONBytesConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -8911,13 +9907,16 @@ func (p projMinusJSONInt16ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) _j, _, _err := arg.RemoveIndex(int(p.constArg)) @@ -8932,7 +9931,8 @@ func (p projMinusJSONInt16ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -8944,11 +9944,15 @@ func (p projMinusJSONInt16ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -8976,11 +9980,15 @@ func (p projMinusJSONInt16ConstOp) Next() coldata.Batch { projCol.Set(i, _j) } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -9011,13 +10019,16 @@ func (p projMinusJSONInt32ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) _j, _, _err := arg.RemoveIndex(int(p.constArg)) @@ -9032,7 +10043,8 @@ func (p projMinusJSONInt32ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -9044,11 +10056,15 @@ func (p projMinusJSONInt32ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -9076,11 +10092,15 @@ func (p projMinusJSONInt32ConstOp) Next() coldata.Batch { projCol.Set(i, _j) } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -9111,13 +10131,16 @@ func (p projMinusJSONInt64ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) _j, _, _err := arg.RemoveIndex(int(p.constArg)) @@ -9132,7 +10155,8 @@ func (p projMinusJSONInt64ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -9144,11 +10168,15 @@ func (p projMinusJSONInt64ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -9176,11 +10204,15 @@ func (p projMinusJSONInt64ConstOp) Next() coldata.Batch { projCol.Set(i, _j) } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -9213,13 +10245,16 @@ func (p projMinusDatumDatumConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) _res, err := eval.BinaryOp(_overloadHelper.EvalCtx, _overloadHelper.BinOp, arg.(tree.Datum), p.constArg.(tree.Datum)) @@ -9238,7 +10273,8 @@ func (p projMinusDatumDatumConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) _res, err := eval.BinaryOp(_overloadHelper.EvalCtx, _overloadHelper.BinOp, arg.(tree.Datum), p.constArg.(tree.Datum)) @@ -9253,11 +10289,15 @@ func (p projMinusDatumDatumConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -9292,11 +10332,15 @@ func (p projMinusDatumDatumConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -9329,13 +10373,16 @@ func (p projMinusDatumIntervalConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) _convertedNativeElem := tree.DInterval{Duration: p.constArg} @@ -9358,7 +10405,8 @@ func (p projMinusDatumIntervalConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -9378,11 +10426,15 @@ func (p projMinusDatumIntervalConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -9426,11 +10478,15 @@ func (p projMinusDatumIntervalConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -9463,13 +10519,16 @@ func (p projMinusDatumBytesConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) _convertedNativeElem := tree.DString(p.constArg) @@ -9492,7 +10551,8 @@ func (p projMinusDatumBytesConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) _convertedNativeElem := tree.DString(p.constArg) @@ -9511,11 +10571,15 @@ func (p projMinusDatumBytesConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -9558,11 +10622,15 @@ func (p projMinusDatumBytesConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -9595,13 +10663,16 @@ func (p projMinusDatumInt16ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) _convertedNativeElem := tree.DInt(p.constArg) @@ -9624,7 +10695,8 @@ func (p projMinusDatumInt16ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -9644,11 +10716,15 @@ func (p projMinusDatumInt16ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -9692,11 +10768,15 @@ func (p projMinusDatumInt16ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -9729,13 +10809,16 @@ func (p projMinusDatumInt32ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) _convertedNativeElem := tree.DInt(p.constArg) @@ -9758,7 +10841,8 @@ func (p projMinusDatumInt32ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -9778,11 +10862,15 @@ func (p projMinusDatumInt32ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -9826,11 +10914,15 @@ func (p projMinusDatumInt32ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -9863,13 +10955,16 @@ func (p projMinusDatumInt64ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) _convertedNativeElem := tree.DInt(p.constArg) @@ -9892,7 +10987,8 @@ func (p projMinusDatumInt64ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -9912,11 +11008,15 @@ func (p projMinusDatumInt64ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -9960,11 +11060,15 @@ func (p projMinusDatumInt64ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -9995,13 +11099,16 @@ func (p projMultDecimalInt16ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -10020,7 +11127,8 @@ func (p projMultDecimalInt16ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -10036,11 +11144,15 @@ func (p projMultDecimalInt16ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -10076,11 +11188,15 @@ func (p projMultDecimalInt16ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -10111,13 +11227,16 @@ func (p projMultDecimalInt32ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -10136,7 +11255,8 @@ func (p projMultDecimalInt32ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -10152,11 +11272,15 @@ func (p projMultDecimalInt32ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -10192,11 +11316,15 @@ func (p projMultDecimalInt32ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -10227,13 +11355,16 @@ func (p projMultDecimalInt64ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -10252,7 +11383,8 @@ func (p projMultDecimalInt64ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -10268,11 +11400,15 @@ func (p projMultDecimalInt64ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -10308,11 +11444,15 @@ func (p projMultDecimalInt64ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -10343,13 +11483,16 @@ func (p projMultDecimalDecimalConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -10367,7 +11510,8 @@ func (p projMultDecimalDecimalConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -10382,11 +11526,15 @@ func (p projMultDecimalDecimalConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -10420,11 +11568,15 @@ func (p projMultDecimalDecimalConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -10455,13 +11607,16 @@ func (p projMultDecimalIntervalConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) f, err := arg.Float64() @@ -10476,7 +11631,8 @@ func (p projMultDecimalIntervalConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -10488,11 +11644,15 @@ func (p projMultDecimalIntervalConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -10520,11 +11680,15 @@ func (p projMultDecimalIntervalConstOp) Next() coldata.Batch { projCol[i] = p.constArg.MulFloat(f) } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -10555,13 +11719,16 @@ func (p projMultInt16Int16ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -10587,7 +11754,8 @@ func (p projMultInt16Int16ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -10610,11 +11778,15 @@ func (p projMultInt16Int16ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -10664,11 +11836,15 @@ func (p projMultInt16Int16ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -10699,13 +11875,16 @@ func (p projMultInt16Int32ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -10731,7 +11910,8 @@ func (p projMultInt16Int32ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -10754,11 +11934,15 @@ func (p projMultInt16Int32ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -10808,11 +11992,15 @@ func (p projMultInt16Int32ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -10843,13 +12031,16 @@ func (p projMultInt16Int64ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -10875,7 +12066,8 @@ func (p projMultInt16Int64ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -10898,11 +12090,15 @@ func (p projMultInt16Int64ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -10952,11 +12148,15 @@ func (p projMultInt16Int64ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -10987,13 +12187,16 @@ func (p projMultInt16DecimalConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -11013,7 +12216,8 @@ func (p projMultInt16DecimalConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -11030,11 +12234,15 @@ func (p projMultInt16DecimalConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -11072,11 +12280,15 @@ func (p projMultInt16DecimalConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -11107,13 +12319,16 @@ func (p projMultInt16IntervalConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) projCol[i] = p.constArg.Mul(int64(arg)) } @@ -11123,18 +12338,23 @@ func (p projMultInt16IntervalConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) projCol[i] = p.constArg.Mul(int64(arg)) } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -11152,11 +12372,15 @@ func (p projMultInt16IntervalConstOp) Next() coldata.Batch { projCol[i] = p.constArg.Mul(int64(arg)) } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -11187,13 +12411,16 @@ func (p projMultInt32Int16ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -11219,7 +12446,8 @@ func (p projMultInt32Int16ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -11242,11 +12470,15 @@ func (p projMultInt32Int16ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -11296,11 +12528,15 @@ func (p projMultInt32Int16ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -11331,13 +12567,16 @@ func (p projMultInt32Int32ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -11363,7 +12602,8 @@ func (p projMultInt32Int32ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -11386,11 +12626,15 @@ func (p projMultInt32Int32ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -11440,11 +12684,15 @@ func (p projMultInt32Int32ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -11475,13 +12723,16 @@ func (p projMultInt32Int64ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -11507,7 +12758,8 @@ func (p projMultInt32Int64ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -11530,11 +12782,15 @@ func (p projMultInt32Int64ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -11584,11 +12840,15 @@ func (p projMultInt32Int64ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -11619,13 +12879,16 @@ func (p projMultInt32DecimalConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -11645,7 +12908,8 @@ func (p projMultInt32DecimalConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -11662,11 +12926,15 @@ func (p projMultInt32DecimalConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -11704,11 +12972,15 @@ func (p projMultInt32DecimalConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -11739,13 +13011,16 @@ func (p projMultInt32IntervalConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) projCol[i] = p.constArg.Mul(int64(arg)) } @@ -11755,18 +13030,23 @@ func (p projMultInt32IntervalConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) projCol[i] = p.constArg.Mul(int64(arg)) } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -11784,11 +13064,15 @@ func (p projMultInt32IntervalConstOp) Next() coldata.Batch { projCol[i] = p.constArg.Mul(int64(arg)) } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -11819,13 +13103,16 @@ func (p projMultInt64Int16ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -11851,7 +13138,8 @@ func (p projMultInt64Int16ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -11874,11 +13162,15 @@ func (p projMultInt64Int16ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -11928,11 +13220,15 @@ func (p projMultInt64Int16ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -11963,13 +13259,16 @@ func (p projMultInt64Int32ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -11995,7 +13294,8 @@ func (p projMultInt64Int32ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -12018,11 +13318,15 @@ func (p projMultInt64Int32ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -12072,11 +13376,15 @@ func (p projMultInt64Int32ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -12107,13 +13415,16 @@ func (p projMultInt64Int64ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -12139,7 +13450,8 @@ func (p projMultInt64Int64ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -12162,11 +13474,15 @@ func (p projMultInt64Int64ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -12216,11 +13532,15 @@ func (p projMultInt64Int64ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -12251,13 +13571,16 @@ func (p projMultInt64DecimalConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -12277,7 +13600,8 @@ func (p projMultInt64DecimalConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -12294,11 +13618,15 @@ func (p projMultInt64DecimalConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -12336,11 +13664,15 @@ func (p projMultInt64DecimalConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -12371,13 +13703,16 @@ func (p projMultInt64IntervalConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) projCol[i] = p.constArg.Mul(int64(arg)) } @@ -12387,18 +13722,23 @@ func (p projMultInt64IntervalConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) projCol[i] = p.constArg.Mul(int64(arg)) } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -12416,11 +13756,15 @@ func (p projMultInt64IntervalConstOp) Next() coldata.Batch { projCol[i] = p.constArg.Mul(int64(arg)) } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -12451,13 +13795,16 @@ func (p projMultFloat64Float64ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -12472,7 +13819,8 @@ func (p projMultFloat64Float64ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -12484,11 +13832,15 @@ func (p projMultFloat64Float64ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -12516,11 +13868,15 @@ func (p projMultFloat64Float64ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -12551,13 +13907,16 @@ func (p projMultFloat64IntervalConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) projCol[i] = p.constArg.MulFloat(float64(arg)) } @@ -12567,18 +13926,23 @@ func (p projMultFloat64IntervalConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) projCol[i] = p.constArg.MulFloat(float64(arg)) } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -12596,11 +13960,15 @@ func (p projMultFloat64IntervalConstOp) Next() coldata.Batch { projCol[i] = p.constArg.MulFloat(float64(arg)) } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -12631,13 +13999,16 @@ func (p projMultIntervalInt16ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) projCol[i] = arg.Mul(int64(p.constArg)) } @@ -12647,18 +14018,23 @@ func (p projMultIntervalInt16ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) projCol[i] = arg.Mul(int64(p.constArg)) } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -12676,11 +14052,15 @@ func (p projMultIntervalInt16ConstOp) Next() coldata.Batch { projCol[i] = arg.Mul(int64(p.constArg)) } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -12711,13 +14091,16 @@ func (p projMultIntervalInt32ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) projCol[i] = arg.Mul(int64(p.constArg)) } @@ -12727,18 +14110,23 @@ func (p projMultIntervalInt32ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) projCol[i] = arg.Mul(int64(p.constArg)) } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -12756,11 +14144,15 @@ func (p projMultIntervalInt32ConstOp) Next() coldata.Batch { projCol[i] = arg.Mul(int64(p.constArg)) } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -12791,13 +14183,16 @@ func (p projMultIntervalInt64ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) projCol[i] = arg.Mul(int64(p.constArg)) } @@ -12807,18 +14202,23 @@ func (p projMultIntervalInt64ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) projCol[i] = arg.Mul(int64(p.constArg)) } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -12836,11 +14236,15 @@ func (p projMultIntervalInt64ConstOp) Next() coldata.Batch { projCol[i] = arg.Mul(int64(p.constArg)) } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -12871,13 +14275,16 @@ func (p projMultIntervalFloat64ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) projCol[i] = arg.MulFloat(float64(p.constArg)) } @@ -12887,18 +14294,23 @@ func (p projMultIntervalFloat64ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) projCol[i] = arg.MulFloat(float64(p.constArg)) } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -12916,11 +14328,15 @@ func (p projMultIntervalFloat64ConstOp) Next() coldata.Batch { projCol[i] = arg.MulFloat(float64(p.constArg)) } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -12951,13 +14367,16 @@ func (p projMultIntervalDecimalConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) f, err := p.constArg.Float64() @@ -12972,7 +14391,8 @@ func (p projMultIntervalDecimalConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -12984,11 +14404,15 @@ func (p projMultIntervalDecimalConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -13016,11 +14440,15 @@ func (p projMultIntervalDecimalConstOp) Next() coldata.Batch { projCol[i] = arg.MulFloat(f) } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -13051,13 +14479,16 @@ func (p projDivDecimalInt16ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -13080,7 +14511,8 @@ func (p projDivDecimalInt16ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -13100,11 +14532,15 @@ func (p projDivDecimalInt16ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -13148,11 +14584,15 @@ func (p projDivDecimalInt16ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -13183,13 +14623,16 @@ func (p projDivDecimalInt32ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -13212,7 +14655,8 @@ func (p projDivDecimalInt32ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -13232,11 +14676,15 @@ func (p projDivDecimalInt32ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -13280,11 +14728,15 @@ func (p projDivDecimalInt32ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -13315,13 +14767,16 @@ func (p projDivDecimalInt64ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -13344,7 +14799,8 @@ func (p projDivDecimalInt64ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -13364,11 +14820,15 @@ func (p projDivDecimalInt64ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -13412,11 +14872,15 @@ func (p projDivDecimalInt64ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -13447,13 +14911,16 @@ func (p projDivDecimalDecimalConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -13475,7 +14942,8 @@ func (p projDivDecimalDecimalConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -13494,11 +14962,15 @@ func (p projDivDecimalDecimalConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -13540,11 +15012,15 @@ func (p projDivDecimalDecimalConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -13575,13 +15051,16 @@ func (p projDivInt16Int16ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -13603,7 +15082,8 @@ func (p projDivInt16Int16ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -13622,11 +15102,15 @@ func (p projDivInt16Int16ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -13668,11 +15152,15 @@ func (p projDivInt16Int16ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -13703,13 +15191,16 @@ func (p projDivInt16Int32ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -13731,7 +15222,8 @@ func (p projDivInt16Int32ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -13750,11 +15242,15 @@ func (p projDivInt16Int32ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -13796,11 +15292,15 @@ func (p projDivInt16Int32ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -13831,13 +15331,16 @@ func (p projDivInt16Int64ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -13859,7 +15362,8 @@ func (p projDivInt16Int64ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -13878,11 +15382,15 @@ func (p projDivInt16Int64ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -13924,11 +15432,15 @@ func (p projDivInt16Int64ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -13959,13 +15471,16 @@ func (p projDivInt16DecimalConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -13989,7 +15504,8 @@ func (p projDivInt16DecimalConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -14010,11 +15526,15 @@ func (p projDivInt16DecimalConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -14060,11 +15580,15 @@ func (p projDivInt16DecimalConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -14095,13 +15619,16 @@ func (p projDivInt32Int16ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -14123,7 +15650,8 @@ func (p projDivInt32Int16ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -14142,11 +15670,15 @@ func (p projDivInt32Int16ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -14188,11 +15720,15 @@ func (p projDivInt32Int16ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -14223,13 +15759,16 @@ func (p projDivInt32Int32ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -14251,7 +15790,8 @@ func (p projDivInt32Int32ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -14270,11 +15810,15 @@ func (p projDivInt32Int32ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -14316,11 +15860,15 @@ func (p projDivInt32Int32ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -14351,13 +15899,16 @@ func (p projDivInt32Int64ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -14379,7 +15930,8 @@ func (p projDivInt32Int64ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -14398,11 +15950,15 @@ func (p projDivInt32Int64ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -14444,11 +16000,15 @@ func (p projDivInt32Int64ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -14479,13 +16039,16 @@ func (p projDivInt32DecimalConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -14509,7 +16072,8 @@ func (p projDivInt32DecimalConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -14530,11 +16094,15 @@ func (p projDivInt32DecimalConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -14580,11 +16148,15 @@ func (p projDivInt32DecimalConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -14615,13 +16187,16 @@ func (p projDivInt64Int16ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -14643,7 +16218,8 @@ func (p projDivInt64Int16ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -14662,11 +16238,15 @@ func (p projDivInt64Int16ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -14708,11 +16288,15 @@ func (p projDivInt64Int16ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -14743,13 +16327,16 @@ func (p projDivInt64Int32ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -14771,7 +16358,8 @@ func (p projDivInt64Int32ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -14790,11 +16378,15 @@ func (p projDivInt64Int32ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -14836,11 +16428,15 @@ func (p projDivInt64Int32ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -14871,13 +16467,16 @@ func (p projDivInt64Int64ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -14899,7 +16498,8 @@ func (p projDivInt64Int64ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -14918,11 +16518,15 @@ func (p projDivInt64Int64ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -14964,11 +16568,15 @@ func (p projDivInt64Int64ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -14999,13 +16607,16 @@ func (p projDivInt64DecimalConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -15029,7 +16640,8 @@ func (p projDivInt64DecimalConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -15050,11 +16662,15 @@ func (p projDivInt64DecimalConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -15100,11 +16716,15 @@ func (p projDivInt64DecimalConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -15135,13 +16755,16 @@ func (p projDivFloat64Float64ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -15160,7 +16783,8 @@ func (p projDivFloat64Float64ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -15176,11 +16800,15 @@ func (p projDivFloat64Float64ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -15216,11 +16844,15 @@ func (p projDivFloat64Float64ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -15251,13 +16883,16 @@ func (p projDivIntervalInt16ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) if p.constArg == 0 { @@ -15271,7 +16906,8 @@ func (p projDivIntervalInt16ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -15282,11 +16918,15 @@ func (p projDivIntervalInt16ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -15312,11 +16952,15 @@ func (p projDivIntervalInt16ConstOp) Next() coldata.Batch { projCol[i] = arg.Div(int64(p.constArg)) } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -15347,13 +16991,16 @@ func (p projDivIntervalInt32ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) if p.constArg == 0 { @@ -15367,7 +17014,8 @@ func (p projDivIntervalInt32ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -15378,11 +17026,15 @@ func (p projDivIntervalInt32ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -15408,11 +17060,15 @@ func (p projDivIntervalInt32ConstOp) Next() coldata.Batch { projCol[i] = arg.Div(int64(p.constArg)) } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -15443,13 +17099,16 @@ func (p projDivIntervalInt64ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) if p.constArg == 0 { @@ -15463,7 +17122,8 @@ func (p projDivIntervalInt64ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -15474,11 +17134,15 @@ func (p projDivIntervalInt64ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -15504,11 +17168,15 @@ func (p projDivIntervalInt64ConstOp) Next() coldata.Batch { projCol[i] = arg.Div(int64(p.constArg)) } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -15539,13 +17207,16 @@ func (p projDivIntervalFloat64ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) if p.constArg == 0.0 { @@ -15559,7 +17230,8 @@ func (p projDivIntervalFloat64ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -15570,11 +17242,15 @@ func (p projDivIntervalFloat64ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -15600,11 +17276,15 @@ func (p projDivIntervalFloat64ConstOp) Next() coldata.Batch { projCol[i] = arg.DivFloat(float64(p.constArg)) } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -15635,13 +17315,16 @@ func (p projFloorDivDecimalInt16ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -15664,7 +17347,8 @@ func (p projFloorDivDecimalInt16ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -15684,11 +17368,15 @@ func (p projFloorDivDecimalInt16ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -15732,11 +17420,15 @@ func (p projFloorDivDecimalInt16ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -15767,13 +17459,16 @@ func (p projFloorDivDecimalInt32ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -15796,7 +17491,8 @@ func (p projFloorDivDecimalInt32ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -15816,11 +17512,15 @@ func (p projFloorDivDecimalInt32ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -15864,11 +17564,15 @@ func (p projFloorDivDecimalInt32ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -15899,13 +17603,16 @@ func (p projFloorDivDecimalInt64ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -15928,7 +17635,8 @@ func (p projFloorDivDecimalInt64ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -15948,11 +17656,15 @@ func (p projFloorDivDecimalInt64ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -15996,11 +17708,15 @@ func (p projFloorDivDecimalInt64ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -16031,13 +17747,16 @@ func (p projFloorDivDecimalDecimalConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -16059,7 +17778,8 @@ func (p projFloorDivDecimalDecimalConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -16078,11 +17798,15 @@ func (p projFloorDivDecimalDecimalConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -16124,11 +17848,15 @@ func (p projFloorDivDecimalDecimalConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -16159,13 +17887,16 @@ func (p projFloorDivInt16Int16ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -16182,7 +17913,8 @@ func (p projFloorDivInt16Int16ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -16196,11 +17928,15 @@ func (p projFloorDivInt16Int16ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -16232,11 +17968,15 @@ func (p projFloorDivInt16Int16ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -16267,13 +18007,16 @@ func (p projFloorDivInt16Int32ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -16290,7 +18033,8 @@ func (p projFloorDivInt16Int32ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -16304,11 +18048,15 @@ func (p projFloorDivInt16Int32ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -16340,11 +18088,15 @@ func (p projFloorDivInt16Int32ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -16375,13 +18127,16 @@ func (p projFloorDivInt16Int64ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -16398,7 +18153,8 @@ func (p projFloorDivInt16Int64ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -16412,11 +18168,15 @@ func (p projFloorDivInt16Int64ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -16448,11 +18208,15 @@ func (p projFloorDivInt16Int64ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -16483,13 +18247,16 @@ func (p projFloorDivInt16DecimalConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -16513,7 +18280,8 @@ func (p projFloorDivInt16DecimalConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -16534,11 +18302,15 @@ func (p projFloorDivInt16DecimalConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -16584,11 +18356,15 @@ func (p projFloorDivInt16DecimalConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -16619,13 +18395,16 @@ func (p projFloorDivInt32Int16ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -16642,7 +18421,8 @@ func (p projFloorDivInt32Int16ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -16656,11 +18436,15 @@ func (p projFloorDivInt32Int16ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -16692,11 +18476,15 @@ func (p projFloorDivInt32Int16ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -16727,13 +18515,16 @@ func (p projFloorDivInt32Int32ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -16750,7 +18541,8 @@ func (p projFloorDivInt32Int32ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -16764,11 +18556,15 @@ func (p projFloorDivInt32Int32ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -16800,11 +18596,15 @@ func (p projFloorDivInt32Int32ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -16835,13 +18635,16 @@ func (p projFloorDivInt32Int64ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -16858,7 +18661,8 @@ func (p projFloorDivInt32Int64ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -16872,11 +18676,15 @@ func (p projFloorDivInt32Int64ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -16908,11 +18716,15 @@ func (p projFloorDivInt32Int64ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -16943,13 +18755,16 @@ func (p projFloorDivInt32DecimalConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -16973,7 +18788,8 @@ func (p projFloorDivInt32DecimalConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -16994,11 +18810,15 @@ func (p projFloorDivInt32DecimalConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -17044,11 +18864,15 @@ func (p projFloorDivInt32DecimalConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -17079,13 +18903,16 @@ func (p projFloorDivInt64Int16ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -17102,7 +18929,8 @@ func (p projFloorDivInt64Int16ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -17116,11 +18944,15 @@ func (p projFloorDivInt64Int16ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -17152,11 +18984,15 @@ func (p projFloorDivInt64Int16ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -17187,13 +19023,16 @@ func (p projFloorDivInt64Int32ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -17210,7 +19049,8 @@ func (p projFloorDivInt64Int32ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -17224,11 +19064,15 @@ func (p projFloorDivInt64Int32ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -17260,11 +19104,15 @@ func (p projFloorDivInt64Int32ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -17295,13 +19143,16 @@ func (p projFloorDivInt64Int64ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -17318,7 +19169,8 @@ func (p projFloorDivInt64Int64ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -17332,11 +19184,15 @@ func (p projFloorDivInt64Int64ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -17368,11 +19224,15 @@ func (p projFloorDivInt64Int64ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -17403,13 +19263,16 @@ func (p projFloorDivInt64DecimalConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -17433,7 +19296,8 @@ func (p projFloorDivInt64DecimalConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -17454,11 +19318,15 @@ func (p projFloorDivInt64DecimalConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -17504,11 +19372,15 @@ func (p projFloorDivInt64DecimalConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -17539,13 +19411,16 @@ func (p projFloorDivFloat64Float64ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -17564,7 +19439,8 @@ func (p projFloorDivFloat64Float64ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -17580,11 +19456,15 @@ func (p projFloorDivFloat64Float64ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -17620,11 +19500,15 @@ func (p projFloorDivFloat64Float64ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -17655,13 +19539,16 @@ func (p projModDecimalInt16ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -17684,7 +19571,8 @@ func (p projModDecimalInt16ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -17704,11 +19592,15 @@ func (p projModDecimalInt16ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -17752,11 +19644,15 @@ func (p projModDecimalInt16ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -17787,13 +19683,16 @@ func (p projModDecimalInt32ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -17816,7 +19715,8 @@ func (p projModDecimalInt32ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -17836,11 +19736,15 @@ func (p projModDecimalInt32ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -17884,11 +19788,15 @@ func (p projModDecimalInt32ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -17919,13 +19827,16 @@ func (p projModDecimalInt64ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -17948,7 +19859,8 @@ func (p projModDecimalInt64ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -17968,11 +19880,15 @@ func (p projModDecimalInt64ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -18016,11 +19932,15 @@ func (p projModDecimalInt64ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -18051,13 +19971,16 @@ func (p projModDecimalDecimalConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -18079,7 +20002,8 @@ func (p projModDecimalDecimalConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -18098,11 +20022,15 @@ func (p projModDecimalDecimalConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -18144,11 +20072,15 @@ func (p projModDecimalDecimalConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -18179,13 +20111,16 @@ func (p projModInt16Int16ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -18202,7 +20137,8 @@ func (p projModInt16Int16ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -18216,11 +20152,15 @@ func (p projModInt16Int16ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -18252,11 +20192,15 @@ func (p projModInt16Int16ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -18287,13 +20231,16 @@ func (p projModInt16Int32ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -18310,7 +20257,8 @@ func (p projModInt16Int32ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -18324,11 +20272,15 @@ func (p projModInt16Int32ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -18360,11 +20312,15 @@ func (p projModInt16Int32ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -18395,13 +20351,16 @@ func (p projModInt16Int64ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -18418,7 +20377,8 @@ func (p projModInt16Int64ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -18432,11 +20392,15 @@ func (p projModInt16Int64ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -18468,11 +20432,15 @@ func (p projModInt16Int64ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -18503,13 +20471,16 @@ func (p projModInt16DecimalConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -18533,7 +20504,8 @@ func (p projModInt16DecimalConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -18554,11 +20526,15 @@ func (p projModInt16DecimalConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -18604,11 +20580,15 @@ func (p projModInt16DecimalConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -18639,13 +20619,16 @@ func (p projModInt32Int16ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -18662,7 +20645,8 @@ func (p projModInt32Int16ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -18676,11 +20660,15 @@ func (p projModInt32Int16ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -18712,11 +20700,15 @@ func (p projModInt32Int16ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -18747,13 +20739,16 @@ func (p projModInt32Int32ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -18770,7 +20765,8 @@ func (p projModInt32Int32ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -18784,11 +20780,15 @@ func (p projModInt32Int32ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -18820,11 +20820,15 @@ func (p projModInt32Int32ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -18855,13 +20859,16 @@ func (p projModInt32Int64ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -18878,7 +20885,8 @@ func (p projModInt32Int64ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -18892,11 +20900,15 @@ func (p projModInt32Int64ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -18928,11 +20940,15 @@ func (p projModInt32Int64ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -18963,13 +20979,16 @@ func (p projModInt32DecimalConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -18993,7 +21012,8 @@ func (p projModInt32DecimalConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -19014,11 +21034,15 @@ func (p projModInt32DecimalConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -19064,11 +21088,15 @@ func (p projModInt32DecimalConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -19099,13 +21127,16 @@ func (p projModInt64Int16ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -19122,7 +21153,8 @@ func (p projModInt64Int16ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -19136,11 +21168,15 @@ func (p projModInt64Int16ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -19172,11 +21208,15 @@ func (p projModInt64Int16ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -19207,13 +21247,16 @@ func (p projModInt64Int32ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -19230,7 +21273,8 @@ func (p projModInt64Int32ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -19244,11 +21288,15 @@ func (p projModInt64Int32ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -19280,11 +21328,15 @@ func (p projModInt64Int32ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -19315,13 +21367,16 @@ func (p projModInt64Int64ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -19338,7 +21393,8 @@ func (p projModInt64Int64ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -19352,11 +21408,15 @@ func (p projModInt64Int64ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -19388,11 +21448,15 @@ func (p projModInt64Int64ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -19423,13 +21487,16 @@ func (p projModInt64DecimalConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -19453,7 +21520,8 @@ func (p projModInt64DecimalConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -19474,11 +21542,15 @@ func (p projModInt64DecimalConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -19524,11 +21596,15 @@ func (p projModInt64DecimalConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -19559,13 +21635,16 @@ func (p projModFloat64Float64ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -19584,7 +21663,8 @@ func (p projModFloat64Float64ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -19600,11 +21680,15 @@ func (p projModFloat64Float64ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -19640,11 +21724,15 @@ func (p projModFloat64Float64ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -19675,13 +21763,16 @@ func (p projPowDecimalInt16ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -19700,7 +21791,8 @@ func (p projPowDecimalInt16ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -19716,11 +21808,15 @@ func (p projPowDecimalInt16ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -19756,11 +21852,15 @@ func (p projPowDecimalInt16ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -19791,13 +21891,16 @@ func (p projPowDecimalInt32ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -19816,7 +21919,8 @@ func (p projPowDecimalInt32ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -19832,11 +21936,15 @@ func (p projPowDecimalInt32ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -19872,11 +21980,15 @@ func (p projPowDecimalInt32ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -19907,13 +22019,16 @@ func (p projPowDecimalInt64ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -19932,7 +22047,8 @@ func (p projPowDecimalInt64ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -19948,11 +22064,15 @@ func (p projPowDecimalInt64ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -19988,11 +22108,15 @@ func (p projPowDecimalInt64ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -20023,13 +22147,16 @@ func (p projPowDecimalDecimalConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -20047,7 +22174,8 @@ func (p projPowDecimalDecimalConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -20062,11 +22190,15 @@ func (p projPowDecimalDecimalConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -20100,11 +22232,15 @@ func (p projPowDecimalDecimalConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -20135,13 +22271,16 @@ func (p projPowInt16Int16ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -20165,7 +22304,8 @@ func (p projPowInt16Int16ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -20186,11 +22326,15 @@ func (p projPowInt16Int16ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -20236,11 +22380,15 @@ func (p projPowInt16Int16ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -20271,13 +22419,16 @@ func (p projPowInt16Int32ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -20301,7 +22452,8 @@ func (p projPowInt16Int32ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -20322,11 +22474,15 @@ func (p projPowInt16Int32ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -20372,11 +22528,15 @@ func (p projPowInt16Int32ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -20407,13 +22567,16 @@ func (p projPowInt16Int64ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -20437,7 +22600,8 @@ func (p projPowInt16Int64ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -20458,11 +22622,15 @@ func (p projPowInt16Int64ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -20508,11 +22676,15 @@ func (p projPowInt16Int64ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -20543,13 +22715,16 @@ func (p projPowInt16DecimalConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -20569,7 +22744,8 @@ func (p projPowInt16DecimalConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -20586,11 +22762,15 @@ func (p projPowInt16DecimalConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -20628,11 +22808,15 @@ func (p projPowInt16DecimalConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -20663,13 +22847,16 @@ func (p projPowInt32Int16ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -20693,7 +22880,8 @@ func (p projPowInt32Int16ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -20714,11 +22902,15 @@ func (p projPowInt32Int16ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -20764,11 +22956,15 @@ func (p projPowInt32Int16ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -20799,13 +22995,16 @@ func (p projPowInt32Int32ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -20829,7 +23028,8 @@ func (p projPowInt32Int32ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -20850,11 +23050,15 @@ func (p projPowInt32Int32ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -20900,11 +23104,15 @@ func (p projPowInt32Int32ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -20935,13 +23143,16 @@ func (p projPowInt32Int64ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -20965,7 +23176,8 @@ func (p projPowInt32Int64ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -20986,11 +23198,15 @@ func (p projPowInt32Int64ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -21036,11 +23252,15 @@ func (p projPowInt32Int64ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -21071,13 +23291,16 @@ func (p projPowInt32DecimalConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -21097,7 +23320,8 @@ func (p projPowInt32DecimalConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -21114,11 +23338,15 @@ func (p projPowInt32DecimalConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -21156,11 +23384,15 @@ func (p projPowInt32DecimalConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -21191,13 +23423,16 @@ func (p projPowInt64Int16ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -21221,7 +23456,8 @@ func (p projPowInt64Int16ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -21242,11 +23478,15 @@ func (p projPowInt64Int16ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -21292,11 +23532,15 @@ func (p projPowInt64Int16ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -21327,13 +23571,16 @@ func (p projPowInt64Int32ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -21357,7 +23604,8 @@ func (p projPowInt64Int32ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -21378,11 +23626,15 @@ func (p projPowInt64Int32ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -21428,11 +23680,15 @@ func (p projPowInt64Int32ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -21463,13 +23719,16 @@ func (p projPowInt64Int64ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -21493,7 +23752,8 @@ func (p projPowInt64Int64ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -21514,11 +23774,15 @@ func (p projPowInt64Int64ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -21564,11 +23828,15 @@ func (p projPowInt64Int64ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -21599,13 +23867,16 @@ func (p projPowInt64DecimalConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -21625,7 +23896,8 @@ func (p projPowInt64DecimalConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -21642,11 +23914,15 @@ func (p projPowInt64DecimalConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -21684,11 +23960,15 @@ func (p projPowInt64DecimalConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -21719,13 +23999,16 @@ func (p projPowFloat64Float64ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -21740,7 +24023,8 @@ func (p projPowFloat64Float64ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -21752,11 +24036,15 @@ func (p projPowFloat64Float64ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -21784,11 +24072,15 @@ func (p projPowFloat64Float64ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -21819,13 +24111,16 @@ func (p projConcatBytesBytesConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -21842,7 +24137,8 @@ func (p projConcatBytesBytesConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -21855,11 +24151,15 @@ func (p projConcatBytesBytesConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -21890,11 +24190,15 @@ func (p projConcatBytesBytesConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -21925,13 +24229,16 @@ func (p projConcatJSONJSONConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) _j, _err := arg.Concat(p.constArg) @@ -21947,7 +24254,8 @@ func (p projConcatJSONJSONConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) _j, _err := arg.Concat(p.constArg) @@ -21959,11 +24267,15 @@ func (p projConcatJSONJSONConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -21992,11 +24304,15 @@ func (p projConcatJSONJSONConstOp) Next() coldata.Batch { projCol.Set(i, _j) } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -22029,13 +24345,16 @@ func (p projConcatDatumDatumConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() && !p.nullableArgs + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) _res, err := eval.BinaryOp(_overloadHelper.EvalCtx, _overloadHelper.BinOp, arg.(tree.Datum), p.constArg.(tree.Datum)) @@ -22054,7 +24373,8 @@ func (p projConcatDatumDatumConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) _res, err := eval.BinaryOp(_overloadHelper.EvalCtx, _overloadHelper.BinOp, arg.(tree.Datum), p.constArg.(tree.Datum)) @@ -22069,11 +24389,15 @@ func (p projConcatDatumDatumConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -22108,11 +24432,15 @@ func (p projConcatDatumDatumConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -22143,13 +24471,16 @@ func (p projLShiftInt16Int16ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -22167,7 +24498,8 @@ func (p projLShiftInt16Int16ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -22182,11 +24514,15 @@ func (p projLShiftInt16Int16ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -22220,11 +24556,15 @@ func (p projLShiftInt16Int16ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -22255,13 +24595,16 @@ func (p projLShiftInt16Int32ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -22279,7 +24622,8 @@ func (p projLShiftInt16Int32ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -22294,11 +24638,15 @@ func (p projLShiftInt16Int32ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -22332,11 +24680,15 @@ func (p projLShiftInt16Int32ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -22367,13 +24719,16 @@ func (p projLShiftInt16Int64ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -22391,7 +24746,8 @@ func (p projLShiftInt16Int64ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -22406,11 +24762,15 @@ func (p projLShiftInt16Int64ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -22444,11 +24804,15 @@ func (p projLShiftInt16Int64ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -22479,13 +24843,16 @@ func (p projLShiftInt32Int16ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -22503,7 +24870,8 @@ func (p projLShiftInt32Int16ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -22518,11 +24886,15 @@ func (p projLShiftInt32Int16ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -22556,11 +24928,15 @@ func (p projLShiftInt32Int16ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -22591,13 +24967,16 @@ func (p projLShiftInt32Int32ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -22615,7 +24994,8 @@ func (p projLShiftInt32Int32ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -22630,11 +25010,15 @@ func (p projLShiftInt32Int32ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -22668,11 +25052,15 @@ func (p projLShiftInt32Int32ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -22703,13 +25091,16 @@ func (p projLShiftInt32Int64ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -22727,7 +25118,8 @@ func (p projLShiftInt32Int64ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -22742,11 +25134,15 @@ func (p projLShiftInt32Int64ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -22780,11 +25176,15 @@ func (p projLShiftInt32Int64ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -22815,13 +25215,16 @@ func (p projLShiftInt64Int16ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -22839,7 +25242,8 @@ func (p projLShiftInt64Int16ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -22854,11 +25258,15 @@ func (p projLShiftInt64Int16ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -22892,11 +25300,15 @@ func (p projLShiftInt64Int16ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -22927,13 +25339,16 @@ func (p projLShiftInt64Int32ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -22951,7 +25366,8 @@ func (p projLShiftInt64Int32ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -22966,11 +25382,15 @@ func (p projLShiftInt64Int32ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -23004,11 +25424,15 @@ func (p projLShiftInt64Int32ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -23039,13 +25463,16 @@ func (p projLShiftInt64Int64ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -23063,7 +25490,8 @@ func (p projLShiftInt64Int64ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -23078,11 +25506,15 @@ func (p projLShiftInt64Int64ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -23116,11 +25548,15 @@ func (p projLShiftInt64Int64ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -23153,13 +25589,16 @@ func (p projLShiftDatumInt16ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) _convertedNativeElem := tree.DInt(p.constArg) @@ -23182,7 +25621,8 @@ func (p projLShiftDatumInt16ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -23202,11 +25642,15 @@ func (p projLShiftDatumInt16ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -23250,11 +25694,15 @@ func (p projLShiftDatumInt16ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -23287,13 +25735,16 @@ func (p projLShiftDatumInt32ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) _convertedNativeElem := tree.DInt(p.constArg) @@ -23316,7 +25767,8 @@ func (p projLShiftDatumInt32ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -23336,11 +25788,15 @@ func (p projLShiftDatumInt32ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -23384,11 +25840,15 @@ func (p projLShiftDatumInt32ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -23421,13 +25881,16 @@ func (p projLShiftDatumInt64ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) _convertedNativeElem := tree.DInt(p.constArg) @@ -23450,7 +25913,8 @@ func (p projLShiftDatumInt64ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -23470,11 +25934,15 @@ func (p projLShiftDatumInt64ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -23518,11 +25986,15 @@ func (p projLShiftDatumInt64ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -23553,13 +26025,16 @@ func (p projRShiftInt16Int16ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -23577,7 +26052,8 @@ func (p projRShiftInt16Int16ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -23592,11 +26068,15 @@ func (p projRShiftInt16Int16ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -23630,11 +26110,15 @@ func (p projRShiftInt16Int16ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -23665,13 +26149,16 @@ func (p projRShiftInt16Int32ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -23689,7 +26176,8 @@ func (p projRShiftInt16Int32ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -23704,11 +26192,15 @@ func (p projRShiftInt16Int32ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -23742,11 +26234,15 @@ func (p projRShiftInt16Int32ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -23777,13 +26273,16 @@ func (p projRShiftInt16Int64ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -23801,7 +26300,8 @@ func (p projRShiftInt16Int64ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -23816,11 +26316,15 @@ func (p projRShiftInt16Int64ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -23854,11 +26358,15 @@ func (p projRShiftInt16Int64ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -23889,13 +26397,16 @@ func (p projRShiftInt32Int16ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -23913,7 +26424,8 @@ func (p projRShiftInt32Int16ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -23928,11 +26440,15 @@ func (p projRShiftInt32Int16ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -23966,11 +26482,15 @@ func (p projRShiftInt32Int16ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -24001,13 +26521,16 @@ func (p projRShiftInt32Int32ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -24025,7 +26548,8 @@ func (p projRShiftInt32Int32ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -24040,11 +26564,15 @@ func (p projRShiftInt32Int32ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -24078,11 +26606,15 @@ func (p projRShiftInt32Int32ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -24113,13 +26645,16 @@ func (p projRShiftInt32Int64ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -24137,7 +26672,8 @@ func (p projRShiftInt32Int64ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -24152,11 +26688,15 @@ func (p projRShiftInt32Int64ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -24190,11 +26730,15 @@ func (p projRShiftInt32Int64ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -24225,13 +26769,16 @@ func (p projRShiftInt64Int16ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -24249,7 +26796,8 @@ func (p projRShiftInt64Int16ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -24264,11 +26812,15 @@ func (p projRShiftInt64Int16ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -24302,11 +26854,15 @@ func (p projRShiftInt64Int16ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -24337,13 +26893,16 @@ func (p projRShiftInt64Int32ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -24361,7 +26920,8 @@ func (p projRShiftInt64Int32ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -24376,11 +26936,15 @@ func (p projRShiftInt64Int32ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -24414,11 +26978,15 @@ func (p projRShiftInt64Int32ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -24449,13 +27017,16 @@ func (p projRShiftInt64Int64ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -24473,7 +27044,8 @@ func (p projRShiftInt64Int64ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -24488,11 +27060,15 @@ func (p projRShiftInt64Int64ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -24526,11 +27102,15 @@ func (p projRShiftInt64Int64ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -24563,13 +27143,16 @@ func (p projRShiftDatumInt16ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) _convertedNativeElem := tree.DInt(p.constArg) @@ -24592,7 +27175,8 @@ func (p projRShiftDatumInt16ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -24612,11 +27196,15 @@ func (p projRShiftDatumInt16ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -24660,11 +27248,15 @@ func (p projRShiftDatumInt16ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -24697,13 +27289,16 @@ func (p projRShiftDatumInt32ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) _convertedNativeElem := tree.DInt(p.constArg) @@ -24726,7 +27321,8 @@ func (p projRShiftDatumInt32ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -24746,11 +27342,15 @@ func (p projRShiftDatumInt32ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -24794,11 +27394,15 @@ func (p projRShiftDatumInt32ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -24831,13 +27435,16 @@ func (p projRShiftDatumInt64ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) _convertedNativeElem := tree.DInt(p.constArg) @@ -24860,7 +27467,8 @@ func (p projRShiftDatumInt64ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -24880,11 +27488,15 @@ func (p projRShiftDatumInt64ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -24928,11 +27540,15 @@ func (p projRShiftDatumInt64ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -24963,13 +27579,16 @@ func (p projJSONFetchValJSONBytesConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) // Get an unsafe string handle onto the bytes, to avoid a spurious copy. This @@ -24991,7 +27610,8 @@ func (p projJSONFetchValJSONBytesConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) // Get an unsafe string handle onto the bytes, to avoid a spurious copy. This @@ -25009,11 +27629,15 @@ func (p projJSONFetchValJSONBytesConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -25054,11 +27678,15 @@ func (p projJSONFetchValJSONBytesConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -25089,13 +27717,16 @@ func (p projJSONFetchValJSONInt16ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) _j, _err := arg.FetchValIdx(int(p.constArg)) @@ -25114,7 +27745,8 @@ func (p projJSONFetchValJSONInt16ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -25130,11 +27762,15 @@ func (p projJSONFetchValJSONInt16ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -25170,11 +27806,15 @@ func (p projJSONFetchValJSONInt16ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -25205,13 +27845,16 @@ func (p projJSONFetchValJSONInt32ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) _j, _err := arg.FetchValIdx(int(p.constArg)) @@ -25230,7 +27873,8 @@ func (p projJSONFetchValJSONInt32ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -25246,11 +27890,15 @@ func (p projJSONFetchValJSONInt32ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -25286,11 +27934,15 @@ func (p projJSONFetchValJSONInt32ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -25321,13 +27973,16 @@ func (p projJSONFetchValJSONInt64ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) _j, _err := arg.FetchValIdx(int(p.constArg)) @@ -25346,7 +28001,8 @@ func (p projJSONFetchValJSONInt64ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -25362,11 +28018,15 @@ func (p projJSONFetchValJSONInt64ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -25402,11 +28062,15 @@ func (p projJSONFetchValJSONInt64ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -25437,13 +28101,16 @@ func (p projJSONFetchTextJSONBytesConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) // Get an unsafe string handle onto the bytes, to avoid a spurious copy. This @@ -25474,7 +28141,8 @@ func (p projJSONFetchTextJSONBytesConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) // Get an unsafe string handle onto the bytes, to avoid a spurious copy. This @@ -25501,11 +28169,15 @@ func (p projJSONFetchTextJSONBytesConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -25564,11 +28236,15 @@ func (p projJSONFetchTextJSONBytesConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -25599,13 +28275,16 @@ func (p projJSONFetchTextJSONInt16ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) _j, _err := arg.FetchValIdx(int(p.constArg)) @@ -25633,7 +28312,8 @@ func (p projJSONFetchTextJSONInt16ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -25658,11 +28338,15 @@ func (p projJSONFetchTextJSONInt16ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -25716,11 +28400,15 @@ func (p projJSONFetchTextJSONInt16ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -25751,13 +28439,16 @@ func (p projJSONFetchTextJSONInt32ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) _j, _err := arg.FetchValIdx(int(p.constArg)) @@ -25785,7 +28476,8 @@ func (p projJSONFetchTextJSONInt32ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -25810,11 +28502,15 @@ func (p projJSONFetchTextJSONInt32ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -25868,11 +28564,15 @@ func (p projJSONFetchTextJSONInt32ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -25903,13 +28603,16 @@ func (p projJSONFetchTextJSONInt64ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) _j, _err := arg.FetchValIdx(int(p.constArg)) @@ -25937,7 +28640,8 @@ func (p projJSONFetchTextJSONInt64ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -25962,11 +28666,15 @@ func (p projJSONFetchTextJSONInt64ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -26020,11 +28728,15 @@ func (p projJSONFetchTextJSONInt64ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -26055,13 +28767,16 @@ func (p projJSONFetchValPathJSONDatumConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) _path, _err := tree.GetJSONPath(arg, *tree.MustBeDArray(p.constArg.(tree.Datum))) @@ -26080,7 +28795,8 @@ func (p projJSONFetchValPathJSONDatumConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) _path, _err := tree.GetJSONPath(arg, *tree.MustBeDArray(p.constArg.(tree.Datum))) @@ -26095,11 +28811,15 @@ func (p projJSONFetchValPathJSONDatumConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -26134,11 +28854,15 @@ func (p projJSONFetchValPathJSONDatumConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -26169,13 +28893,16 @@ func (p projJSONFetchTextPathJSONDatumConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) _path, _err := tree.GetJSONPath(arg, *tree.MustBeDArray(p.constArg.(tree.Datum))) @@ -26204,7 +28931,8 @@ func (p projJSONFetchTextPathJSONDatumConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) _path, _err := tree.GetJSONPath(arg, *tree.MustBeDArray(p.constArg.(tree.Datum))) @@ -26229,11 +28957,15 @@ func (p projJSONFetchTextPathJSONDatumConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -26288,11 +29020,15 @@ func (p projJSONFetchTextPathJSONDatumConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -26323,13 +29059,16 @@ func (p projEQBoolBoolConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -26353,7 +29092,8 @@ func (p projEQBoolBoolConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -26374,11 +29114,15 @@ func (p projEQBoolBoolConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -26424,11 +29168,15 @@ func (p projEQBoolBoolConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -26459,13 +29207,16 @@ func (p projEQBytesBytesConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -26481,7 +29232,8 @@ func (p projEQBytesBytesConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -26493,11 +29245,15 @@ func (p projEQBytesBytesConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -26526,11 +29282,15 @@ func (p projEQBytesBytesConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -26561,13 +29321,16 @@ func (p projEQDecimalInt16ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -26589,7 +29352,8 @@ func (p projEQDecimalInt16ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -26608,11 +29372,15 @@ func (p projEQDecimalInt16ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -26654,11 +29422,15 @@ func (p projEQDecimalInt16ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -26689,13 +29461,16 @@ func (p projEQDecimalInt32ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -26717,7 +29492,8 @@ func (p projEQDecimalInt32ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -26736,11 +29512,15 @@ func (p projEQDecimalInt32ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -26782,11 +29562,15 @@ func (p projEQDecimalInt32ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -26817,13 +29601,16 @@ func (p projEQDecimalInt64ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -26845,7 +29632,8 @@ func (p projEQDecimalInt64ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -26864,11 +29652,15 @@ func (p projEQDecimalInt64ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -26910,11 +29702,15 @@ func (p projEQDecimalInt64ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -26945,13 +29741,16 @@ func (p projEQDecimalFloat64ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -26975,7 +29774,8 @@ func (p projEQDecimalFloat64ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -26996,11 +29796,15 @@ func (p projEQDecimalFloat64ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -27046,11 +29850,15 @@ func (p projEQDecimalFloat64ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -27081,13 +29889,16 @@ func (p projEQDecimalDecimalConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -27103,7 +29914,8 @@ func (p projEQDecimalDecimalConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -27116,11 +29928,15 @@ func (p projEQDecimalDecimalConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -27150,11 +29966,15 @@ func (p projEQDecimalDecimalConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -27185,13 +30005,16 @@ func (p projEQInt16Int16ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -27218,7 +30041,8 @@ func (p projEQInt16Int16ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -27242,11 +30066,15 @@ func (p projEQInt16Int16ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -27298,11 +30126,15 @@ func (p projEQInt16Int16ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -27333,13 +30165,16 @@ func (p projEQInt16Int32ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -27366,7 +30201,8 @@ func (p projEQInt16Int32ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -27390,11 +30226,15 @@ func (p projEQInt16Int32ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -27446,11 +30286,15 @@ func (p projEQInt16Int32ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -27481,13 +30325,16 @@ func (p projEQInt16Int64ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -27514,7 +30361,8 @@ func (p projEQInt16Int64ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -27538,11 +30386,15 @@ func (p projEQInt16Int64ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -27594,11 +30446,15 @@ func (p projEQInt16Int64ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -27629,13 +30485,16 @@ func (p projEQInt16Float64ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -27670,7 +30529,8 @@ func (p projEQInt16Float64ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -27702,11 +30562,15 @@ func (p projEQInt16Float64ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -27774,11 +30638,15 @@ func (p projEQInt16Float64ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -27809,13 +30677,16 @@ func (p projEQInt16DecimalConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -27837,7 +30708,8 @@ func (p projEQInt16DecimalConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -27856,11 +30728,15 @@ func (p projEQInt16DecimalConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -27902,11 +30778,15 @@ func (p projEQInt16DecimalConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -27937,13 +30817,16 @@ func (p projEQInt32Int16ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -27970,7 +30853,8 @@ func (p projEQInt32Int16ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -27994,11 +30878,15 @@ func (p projEQInt32Int16ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -28050,11 +30938,15 @@ func (p projEQInt32Int16ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -28085,13 +30977,16 @@ func (p projEQInt32Int32ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -28118,7 +31013,8 @@ func (p projEQInt32Int32ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -28142,11 +31038,15 @@ func (p projEQInt32Int32ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -28198,11 +31098,15 @@ func (p projEQInt32Int32ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -28233,13 +31137,16 @@ func (p projEQInt32Int64ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -28266,7 +31173,8 @@ func (p projEQInt32Int64ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -28290,11 +31198,15 @@ func (p projEQInt32Int64ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -28346,11 +31258,15 @@ func (p projEQInt32Int64ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -28381,13 +31297,16 @@ func (p projEQInt32Float64ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -28422,7 +31341,8 @@ func (p projEQInt32Float64ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -28454,11 +31374,15 @@ func (p projEQInt32Float64ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -28526,11 +31450,15 @@ func (p projEQInt32Float64ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -28561,13 +31489,16 @@ func (p projEQInt32DecimalConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -28589,7 +31520,8 @@ func (p projEQInt32DecimalConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -28608,11 +31540,15 @@ func (p projEQInt32DecimalConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -28654,11 +31590,15 @@ func (p projEQInt32DecimalConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -28689,13 +31629,16 @@ func (p projEQInt64Int16ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -28722,7 +31665,8 @@ func (p projEQInt64Int16ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -28746,11 +31690,15 @@ func (p projEQInt64Int16ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -28802,11 +31750,15 @@ func (p projEQInt64Int16ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -28837,13 +31789,16 @@ func (p projEQInt64Int32ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -28870,7 +31825,8 @@ func (p projEQInt64Int32ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -28894,11 +31850,15 @@ func (p projEQInt64Int32ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -28950,11 +31910,15 @@ func (p projEQInt64Int32ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -28985,13 +31949,16 @@ func (p projEQInt64Int64ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -29018,7 +31985,8 @@ func (p projEQInt64Int64ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -29042,11 +32010,15 @@ func (p projEQInt64Int64ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -29098,11 +32070,15 @@ func (p projEQInt64Int64ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -29133,13 +32109,16 @@ func (p projEQInt64Float64ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -29174,7 +32153,8 @@ func (p projEQInt64Float64ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -29206,11 +32186,15 @@ func (p projEQInt64Float64ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -29278,11 +32262,15 @@ func (p projEQInt64Float64ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -29313,13 +32301,16 @@ func (p projEQInt64DecimalConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -29341,7 +32332,8 @@ func (p projEQInt64DecimalConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -29360,11 +32352,15 @@ func (p projEQInt64DecimalConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -29406,11 +32402,15 @@ func (p projEQInt64DecimalConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -29441,13 +32441,16 @@ func (p projEQFloat64Int16ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -29482,7 +32485,8 @@ func (p projEQFloat64Int16ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -29514,11 +32518,15 @@ func (p projEQFloat64Int16ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -29586,11 +32594,15 @@ func (p projEQFloat64Int16ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -29621,13 +32633,16 @@ func (p projEQFloat64Int32ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -29662,7 +32677,8 @@ func (p projEQFloat64Int32ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -29694,11 +32710,15 @@ func (p projEQFloat64Int32ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -29766,11 +32786,15 @@ func (p projEQFloat64Int32ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -29801,13 +32825,16 @@ func (p projEQFloat64Int64ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -29842,7 +32869,8 @@ func (p projEQFloat64Int64ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -29874,11 +32902,15 @@ func (p projEQFloat64Int64ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -29946,11 +32978,15 @@ func (p projEQFloat64Int64ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -29981,13 +33017,16 @@ func (p projEQFloat64Float64ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -30022,7 +33061,8 @@ func (p projEQFloat64Float64ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -30054,11 +33094,15 @@ func (p projEQFloat64Float64ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -30126,11 +33170,15 @@ func (p projEQFloat64Float64ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -30161,13 +33209,16 @@ func (p projEQFloat64DecimalConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -30191,7 +33242,8 @@ func (p projEQFloat64DecimalConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -30212,11 +33264,15 @@ func (p projEQFloat64DecimalConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -30262,11 +33318,15 @@ func (p projEQFloat64DecimalConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -30297,13 +33357,16 @@ func (p projEQTimestampTimestampConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -30326,7 +33389,8 @@ func (p projEQTimestampTimestampConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -30346,11 +33410,15 @@ func (p projEQTimestampTimestampConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -30394,11 +33462,15 @@ func (p projEQTimestampTimestampConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -30429,13 +33501,16 @@ func (p projEQIntervalIntervalConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -30451,7 +33526,8 @@ func (p projEQIntervalIntervalConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -30464,11 +33540,15 @@ func (p projEQIntervalIntervalConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -30498,11 +33578,15 @@ func (p projEQIntervalIntervalConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -30533,13 +33617,16 @@ func (p projEQJSONJSONConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -30561,7 +33648,8 @@ func (p projEQJSONJSONConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -30579,11 +33667,15 @@ func (p projEQJSONJSONConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -30624,11 +33716,15 @@ func (p projEQJSONJSONConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -30659,13 +33755,16 @@ func (p projEQDatumDatumConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -30683,7 +33782,8 @@ func (p projEQDatumDatumConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -30697,11 +33797,15 @@ func (p projEQDatumDatumConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -30734,11 +33838,15 @@ func (p projEQDatumDatumConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -30769,13 +33877,16 @@ func (p projNEBoolBoolConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -30799,7 +33910,8 @@ func (p projNEBoolBoolConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -30820,11 +33932,15 @@ func (p projNEBoolBoolConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -30870,11 +33986,15 @@ func (p projNEBoolBoolConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -30905,13 +34025,16 @@ func (p projNEBytesBytesConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -30927,7 +34050,8 @@ func (p projNEBytesBytesConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -30939,11 +34063,15 @@ func (p projNEBytesBytesConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -30972,11 +34100,15 @@ func (p projNEBytesBytesConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -31007,13 +34139,16 @@ func (p projNEDecimalInt16ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -31035,7 +34170,8 @@ func (p projNEDecimalInt16ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -31054,11 +34190,15 @@ func (p projNEDecimalInt16ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -31100,11 +34240,15 @@ func (p projNEDecimalInt16ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -31135,13 +34279,16 @@ func (p projNEDecimalInt32ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -31163,7 +34310,8 @@ func (p projNEDecimalInt32ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -31182,11 +34330,15 @@ func (p projNEDecimalInt32ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -31228,11 +34380,15 @@ func (p projNEDecimalInt32ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -31263,13 +34419,16 @@ func (p projNEDecimalInt64ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -31291,7 +34450,8 @@ func (p projNEDecimalInt64ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -31310,11 +34470,15 @@ func (p projNEDecimalInt64ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -31356,11 +34520,15 @@ func (p projNEDecimalInt64ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -31391,13 +34559,16 @@ func (p projNEDecimalFloat64ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -31421,7 +34592,8 @@ func (p projNEDecimalFloat64ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -31442,11 +34614,15 @@ func (p projNEDecimalFloat64ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -31492,11 +34668,15 @@ func (p projNEDecimalFloat64ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -31527,13 +34707,16 @@ func (p projNEDecimalDecimalConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -31549,7 +34732,8 @@ func (p projNEDecimalDecimalConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -31562,11 +34746,15 @@ func (p projNEDecimalDecimalConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -31596,11 +34784,15 @@ func (p projNEDecimalDecimalConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -31631,13 +34823,16 @@ func (p projNEInt16Int16ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -31664,7 +34859,8 @@ func (p projNEInt16Int16ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -31688,11 +34884,15 @@ func (p projNEInt16Int16ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -31744,11 +34944,15 @@ func (p projNEInt16Int16ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -31779,13 +34983,16 @@ func (p projNEInt16Int32ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -31812,7 +35019,8 @@ func (p projNEInt16Int32ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -31836,11 +35044,15 @@ func (p projNEInt16Int32ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -31892,11 +35104,15 @@ func (p projNEInt16Int32ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -31927,13 +35143,16 @@ func (p projNEInt16Int64ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -31960,7 +35179,8 @@ func (p projNEInt16Int64ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -31984,11 +35204,15 @@ func (p projNEInt16Int64ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -32040,11 +35264,15 @@ func (p projNEInt16Int64ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -32075,13 +35303,16 @@ func (p projNEInt16Float64ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -32116,7 +35347,8 @@ func (p projNEInt16Float64ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -32148,11 +35380,15 @@ func (p projNEInt16Float64ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -32220,11 +35456,15 @@ func (p projNEInt16Float64ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -32255,13 +35495,16 @@ func (p projNEInt16DecimalConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -32283,7 +35526,8 @@ func (p projNEInt16DecimalConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -32302,11 +35546,15 @@ func (p projNEInt16DecimalConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -32348,11 +35596,15 @@ func (p projNEInt16DecimalConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -32383,13 +35635,16 @@ func (p projNEInt32Int16ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -32416,7 +35671,8 @@ func (p projNEInt32Int16ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -32440,11 +35696,15 @@ func (p projNEInt32Int16ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -32496,11 +35756,15 @@ func (p projNEInt32Int16ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -32531,13 +35795,16 @@ func (p projNEInt32Int32ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -32564,7 +35831,8 @@ func (p projNEInt32Int32ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -32588,11 +35856,15 @@ func (p projNEInt32Int32ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -32644,11 +35916,15 @@ func (p projNEInt32Int32ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -32679,13 +35955,16 @@ func (p projNEInt32Int64ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -32712,7 +35991,8 @@ func (p projNEInt32Int64ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -32736,11 +36016,15 @@ func (p projNEInt32Int64ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -32792,11 +36076,15 @@ func (p projNEInt32Int64ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -32827,13 +36115,16 @@ func (p projNEInt32Float64ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -32868,7 +36159,8 @@ func (p projNEInt32Float64ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -32900,11 +36192,15 @@ func (p projNEInt32Float64ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -32972,11 +36268,15 @@ func (p projNEInt32Float64ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -33007,13 +36307,16 @@ func (p projNEInt32DecimalConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -33035,7 +36338,8 @@ func (p projNEInt32DecimalConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -33054,11 +36358,15 @@ func (p projNEInt32DecimalConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -33100,11 +36408,15 @@ func (p projNEInt32DecimalConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -33135,13 +36447,16 @@ func (p projNEInt64Int16ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -33168,7 +36483,8 @@ func (p projNEInt64Int16ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -33192,11 +36508,15 @@ func (p projNEInt64Int16ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -33248,11 +36568,15 @@ func (p projNEInt64Int16ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -33283,13 +36607,16 @@ func (p projNEInt64Int32ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -33316,7 +36643,8 @@ func (p projNEInt64Int32ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -33340,11 +36668,15 @@ func (p projNEInt64Int32ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -33396,11 +36728,15 @@ func (p projNEInt64Int32ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -33431,13 +36767,16 @@ func (p projNEInt64Int64ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -33464,7 +36803,8 @@ func (p projNEInt64Int64ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -33488,11 +36828,15 @@ func (p projNEInt64Int64ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -33544,11 +36888,15 @@ func (p projNEInt64Int64ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -33579,13 +36927,16 @@ func (p projNEInt64Float64ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -33620,7 +36971,8 @@ func (p projNEInt64Float64ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -33652,11 +37004,15 @@ func (p projNEInt64Float64ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -33724,11 +37080,15 @@ func (p projNEInt64Float64ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -33759,13 +37119,16 @@ func (p projNEInt64DecimalConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -33787,7 +37150,8 @@ func (p projNEInt64DecimalConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -33806,11 +37170,15 @@ func (p projNEInt64DecimalConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -33852,11 +37220,15 @@ func (p projNEInt64DecimalConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -33887,13 +37259,16 @@ func (p projNEFloat64Int16ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -33928,7 +37303,8 @@ func (p projNEFloat64Int16ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -33960,11 +37336,15 @@ func (p projNEFloat64Int16ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -34032,11 +37412,15 @@ func (p projNEFloat64Int16ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -34067,13 +37451,16 @@ func (p projNEFloat64Int32ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -34108,7 +37495,8 @@ func (p projNEFloat64Int32ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -34140,11 +37528,15 @@ func (p projNEFloat64Int32ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -34212,11 +37604,15 @@ func (p projNEFloat64Int32ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -34247,13 +37643,16 @@ func (p projNEFloat64Int64ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -34288,7 +37687,8 @@ func (p projNEFloat64Int64ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -34320,11 +37720,15 @@ func (p projNEFloat64Int64ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -34392,11 +37796,15 @@ func (p projNEFloat64Int64ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -34427,13 +37835,16 @@ func (p projNEFloat64Float64ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -34468,7 +37879,8 @@ func (p projNEFloat64Float64ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -34500,11 +37912,15 @@ func (p projNEFloat64Float64ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -34572,11 +37988,15 @@ func (p projNEFloat64Float64ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -34607,13 +38027,16 @@ func (p projNEFloat64DecimalConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -34637,7 +38060,8 @@ func (p projNEFloat64DecimalConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -34658,11 +38082,15 @@ func (p projNEFloat64DecimalConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -34708,11 +38136,15 @@ func (p projNEFloat64DecimalConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -34743,13 +38175,16 @@ func (p projNETimestampTimestampConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -34772,7 +38207,8 @@ func (p projNETimestampTimestampConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -34792,11 +38228,15 @@ func (p projNETimestampTimestampConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -34840,11 +38280,15 @@ func (p projNETimestampTimestampConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -34875,13 +38319,16 @@ func (p projNEIntervalIntervalConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -34897,7 +38344,8 @@ func (p projNEIntervalIntervalConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -34910,11 +38358,15 @@ func (p projNEIntervalIntervalConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -34944,11 +38396,15 @@ func (p projNEIntervalIntervalConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -34979,13 +38435,16 @@ func (p projNEJSONJSONConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -35007,7 +38466,8 @@ func (p projNEJSONJSONConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -35025,11 +38485,15 @@ func (p projNEJSONJSONConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -35070,11 +38534,15 @@ func (p projNEJSONJSONConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -35105,13 +38573,16 @@ func (p projNEDatumDatumConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -35129,7 +38600,8 @@ func (p projNEDatumDatumConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -35143,11 +38615,15 @@ func (p projNEDatumDatumConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -35180,11 +38656,15 @@ func (p projNEDatumDatumConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -35215,13 +38695,16 @@ func (p projLTBoolBoolConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -35245,7 +38728,8 @@ func (p projLTBoolBoolConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -35266,11 +38750,15 @@ func (p projLTBoolBoolConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -35316,11 +38804,15 @@ func (p projLTBoolBoolConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -35351,13 +38843,16 @@ func (p projLTBytesBytesConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -35373,7 +38868,8 @@ func (p projLTBytesBytesConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -35385,11 +38881,15 @@ func (p projLTBytesBytesConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -35418,11 +38918,15 @@ func (p projLTBytesBytesConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -35453,13 +38957,16 @@ func (p projLTDecimalInt16ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -35481,7 +38988,8 @@ func (p projLTDecimalInt16ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -35500,11 +39008,15 @@ func (p projLTDecimalInt16ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -35546,11 +39058,15 @@ func (p projLTDecimalInt16ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -35581,13 +39097,16 @@ func (p projLTDecimalInt32ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -35609,7 +39128,8 @@ func (p projLTDecimalInt32ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -35628,11 +39148,15 @@ func (p projLTDecimalInt32ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -35674,11 +39198,15 @@ func (p projLTDecimalInt32ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -35709,13 +39237,16 @@ func (p projLTDecimalInt64ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -35737,7 +39268,8 @@ func (p projLTDecimalInt64ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -35756,11 +39288,15 @@ func (p projLTDecimalInt64ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -35802,11 +39338,15 @@ func (p projLTDecimalInt64ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -35837,13 +39377,16 @@ func (p projLTDecimalFloat64ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -35867,7 +39410,8 @@ func (p projLTDecimalFloat64ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -35888,11 +39432,15 @@ func (p projLTDecimalFloat64ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -35938,11 +39486,15 @@ func (p projLTDecimalFloat64ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -35973,13 +39525,16 @@ func (p projLTDecimalDecimalConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -35995,7 +39550,8 @@ func (p projLTDecimalDecimalConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -36008,11 +39564,15 @@ func (p projLTDecimalDecimalConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -36042,11 +39602,15 @@ func (p projLTDecimalDecimalConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -36077,13 +39641,16 @@ func (p projLTInt16Int16ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -36110,7 +39677,8 @@ func (p projLTInt16Int16ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -36134,11 +39702,15 @@ func (p projLTInt16Int16ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -36190,11 +39762,15 @@ func (p projLTInt16Int16ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -36225,13 +39801,16 @@ func (p projLTInt16Int32ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -36258,7 +39837,8 @@ func (p projLTInt16Int32ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -36282,11 +39862,15 @@ func (p projLTInt16Int32ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -36338,11 +39922,15 @@ func (p projLTInt16Int32ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -36373,13 +39961,16 @@ func (p projLTInt16Int64ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -36406,7 +39997,8 @@ func (p projLTInt16Int64ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -36430,11 +40022,15 @@ func (p projLTInt16Int64ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -36486,11 +40082,15 @@ func (p projLTInt16Int64ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -36521,13 +40121,16 @@ func (p projLTInt16Float64ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -36562,7 +40165,8 @@ func (p projLTInt16Float64ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -36594,11 +40198,15 @@ func (p projLTInt16Float64ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -36666,11 +40274,15 @@ func (p projLTInt16Float64ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -36701,13 +40313,16 @@ func (p projLTInt16DecimalConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -36729,7 +40344,8 @@ func (p projLTInt16DecimalConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -36748,11 +40364,15 @@ func (p projLTInt16DecimalConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -36794,11 +40414,15 @@ func (p projLTInt16DecimalConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -36829,13 +40453,16 @@ func (p projLTInt32Int16ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -36862,7 +40489,8 @@ func (p projLTInt32Int16ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -36886,11 +40514,15 @@ func (p projLTInt32Int16ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -36942,11 +40574,15 @@ func (p projLTInt32Int16ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -36977,13 +40613,16 @@ func (p projLTInt32Int32ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -37010,7 +40649,8 @@ func (p projLTInt32Int32ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -37034,11 +40674,15 @@ func (p projLTInt32Int32ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -37090,11 +40734,15 @@ func (p projLTInt32Int32ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -37125,13 +40773,16 @@ func (p projLTInt32Int64ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -37158,7 +40809,8 @@ func (p projLTInt32Int64ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -37182,11 +40834,15 @@ func (p projLTInt32Int64ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -37238,11 +40894,15 @@ func (p projLTInt32Int64ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -37273,13 +40933,16 @@ func (p projLTInt32Float64ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -37314,7 +40977,8 @@ func (p projLTInt32Float64ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -37346,11 +41010,15 @@ func (p projLTInt32Float64ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -37418,11 +41086,15 @@ func (p projLTInt32Float64ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -37453,13 +41125,16 @@ func (p projLTInt32DecimalConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -37481,7 +41156,8 @@ func (p projLTInt32DecimalConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -37500,11 +41176,15 @@ func (p projLTInt32DecimalConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -37546,11 +41226,15 @@ func (p projLTInt32DecimalConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -37581,13 +41265,16 @@ func (p projLTInt64Int16ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -37614,7 +41301,8 @@ func (p projLTInt64Int16ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -37638,11 +41326,15 @@ func (p projLTInt64Int16ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -37694,11 +41386,15 @@ func (p projLTInt64Int16ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -37729,13 +41425,16 @@ func (p projLTInt64Int32ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -37762,7 +41461,8 @@ func (p projLTInt64Int32ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -37786,11 +41486,15 @@ func (p projLTInt64Int32ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -37842,11 +41546,15 @@ func (p projLTInt64Int32ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -37877,13 +41585,16 @@ func (p projLTInt64Int64ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -37910,7 +41621,8 @@ func (p projLTInt64Int64ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -37934,11 +41646,15 @@ func (p projLTInt64Int64ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -37990,11 +41706,15 @@ func (p projLTInt64Int64ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -38025,13 +41745,16 @@ func (p projLTInt64Float64ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -38066,7 +41789,8 @@ func (p projLTInt64Float64ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -38098,11 +41822,15 @@ func (p projLTInt64Float64ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -38170,11 +41898,15 @@ func (p projLTInt64Float64ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -38205,13 +41937,16 @@ func (p projLTInt64DecimalConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -38233,7 +41968,8 @@ func (p projLTInt64DecimalConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -38252,11 +41988,15 @@ func (p projLTInt64DecimalConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -38298,11 +42038,15 @@ func (p projLTInt64DecimalConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -38333,13 +42077,16 @@ func (p projLTFloat64Int16ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -38374,7 +42121,8 @@ func (p projLTFloat64Int16ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -38406,11 +42154,15 @@ func (p projLTFloat64Int16ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -38478,11 +42230,15 @@ func (p projLTFloat64Int16ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -38513,13 +42269,16 @@ func (p projLTFloat64Int32ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -38554,7 +42313,8 @@ func (p projLTFloat64Int32ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -38586,11 +42346,15 @@ func (p projLTFloat64Int32ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -38658,11 +42422,15 @@ func (p projLTFloat64Int32ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -38693,13 +42461,16 @@ func (p projLTFloat64Int64ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -38734,7 +42505,8 @@ func (p projLTFloat64Int64ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -38766,11 +42538,15 @@ func (p projLTFloat64Int64ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -38838,11 +42614,15 @@ func (p projLTFloat64Int64ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -38873,13 +42653,16 @@ func (p projLTFloat64Float64ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -38914,7 +42697,8 @@ func (p projLTFloat64Float64ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -38946,11 +42730,15 @@ func (p projLTFloat64Float64ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -39018,11 +42806,15 @@ func (p projLTFloat64Float64ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -39053,13 +42845,16 @@ func (p projLTFloat64DecimalConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -39083,7 +42878,8 @@ func (p projLTFloat64DecimalConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -39104,11 +42900,15 @@ func (p projLTFloat64DecimalConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -39154,11 +42954,15 @@ func (p projLTFloat64DecimalConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -39189,13 +42993,16 @@ func (p projLTTimestampTimestampConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -39218,7 +43025,8 @@ func (p projLTTimestampTimestampConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -39238,11 +43046,15 @@ func (p projLTTimestampTimestampConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -39286,11 +43098,15 @@ func (p projLTTimestampTimestampConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -39321,13 +43137,16 @@ func (p projLTIntervalIntervalConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -39343,7 +43162,8 @@ func (p projLTIntervalIntervalConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -39356,11 +43176,15 @@ func (p projLTIntervalIntervalConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -39390,11 +43214,15 @@ func (p projLTIntervalIntervalConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -39425,13 +43253,16 @@ func (p projLTJSONJSONConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -39453,7 +43284,8 @@ func (p projLTJSONJSONConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -39471,11 +43303,15 @@ func (p projLTJSONJSONConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -39516,11 +43352,15 @@ func (p projLTJSONJSONConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -39551,13 +43391,16 @@ func (p projLTDatumDatumConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -39575,7 +43418,8 @@ func (p projLTDatumDatumConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -39589,11 +43433,15 @@ func (p projLTDatumDatumConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -39626,11 +43474,15 @@ func (p projLTDatumDatumConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -39661,13 +43513,16 @@ func (p projLEBoolBoolConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -39691,7 +43546,8 @@ func (p projLEBoolBoolConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -39712,11 +43568,15 @@ func (p projLEBoolBoolConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -39762,11 +43622,15 @@ func (p projLEBoolBoolConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -39797,13 +43661,16 @@ func (p projLEBytesBytesConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -39819,7 +43686,8 @@ func (p projLEBytesBytesConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -39831,11 +43699,15 @@ func (p projLEBytesBytesConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -39864,11 +43736,15 @@ func (p projLEBytesBytesConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -39899,13 +43775,16 @@ func (p projLEDecimalInt16ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -39927,7 +43806,8 @@ func (p projLEDecimalInt16ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -39946,11 +43826,15 @@ func (p projLEDecimalInt16ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -39992,11 +43876,15 @@ func (p projLEDecimalInt16ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -40027,13 +43915,16 @@ func (p projLEDecimalInt32ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -40055,7 +43946,8 @@ func (p projLEDecimalInt32ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -40074,11 +43966,15 @@ func (p projLEDecimalInt32ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -40120,11 +44016,15 @@ func (p projLEDecimalInt32ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -40155,13 +44055,16 @@ func (p projLEDecimalInt64ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -40183,7 +44086,8 @@ func (p projLEDecimalInt64ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -40202,11 +44106,15 @@ func (p projLEDecimalInt64ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -40248,11 +44156,15 @@ func (p projLEDecimalInt64ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -40283,13 +44195,16 @@ func (p projLEDecimalFloat64ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -40313,7 +44228,8 @@ func (p projLEDecimalFloat64ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -40334,11 +44250,15 @@ func (p projLEDecimalFloat64ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -40384,11 +44304,15 @@ func (p projLEDecimalFloat64ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -40419,13 +44343,16 @@ func (p projLEDecimalDecimalConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -40441,7 +44368,8 @@ func (p projLEDecimalDecimalConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -40454,11 +44382,15 @@ func (p projLEDecimalDecimalConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -40488,11 +44420,15 @@ func (p projLEDecimalDecimalConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -40523,13 +44459,16 @@ func (p projLEInt16Int16ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -40556,7 +44495,8 @@ func (p projLEInt16Int16ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -40580,11 +44520,15 @@ func (p projLEInt16Int16ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -40636,11 +44580,15 @@ func (p projLEInt16Int16ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -40671,13 +44619,16 @@ func (p projLEInt16Int32ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -40704,7 +44655,8 @@ func (p projLEInt16Int32ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -40728,11 +44680,15 @@ func (p projLEInt16Int32ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -40784,11 +44740,15 @@ func (p projLEInt16Int32ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -40819,13 +44779,16 @@ func (p projLEInt16Int64ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -40852,7 +44815,8 @@ func (p projLEInt16Int64ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -40876,11 +44840,15 @@ func (p projLEInt16Int64ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -40932,11 +44900,15 @@ func (p projLEInt16Int64ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -40967,13 +44939,16 @@ func (p projLEInt16Float64ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -41008,7 +44983,8 @@ func (p projLEInt16Float64ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -41040,11 +45016,15 @@ func (p projLEInt16Float64ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -41112,11 +45092,15 @@ func (p projLEInt16Float64ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -41147,13 +45131,16 @@ func (p projLEInt16DecimalConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -41175,7 +45162,8 @@ func (p projLEInt16DecimalConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -41194,11 +45182,15 @@ func (p projLEInt16DecimalConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -41240,11 +45232,15 @@ func (p projLEInt16DecimalConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -41275,13 +45271,16 @@ func (p projLEInt32Int16ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -41308,7 +45307,8 @@ func (p projLEInt32Int16ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -41332,11 +45332,15 @@ func (p projLEInt32Int16ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -41388,11 +45392,15 @@ func (p projLEInt32Int16ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -41423,13 +45431,16 @@ func (p projLEInt32Int32ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -41456,7 +45467,8 @@ func (p projLEInt32Int32ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -41480,11 +45492,15 @@ func (p projLEInt32Int32ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -41536,11 +45552,15 @@ func (p projLEInt32Int32ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -41571,13 +45591,16 @@ func (p projLEInt32Int64ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -41604,7 +45627,8 @@ func (p projLEInt32Int64ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -41628,11 +45652,15 @@ func (p projLEInt32Int64ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -41684,11 +45712,15 @@ func (p projLEInt32Int64ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -41719,13 +45751,16 @@ func (p projLEInt32Float64ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -41760,7 +45795,8 @@ func (p projLEInt32Float64ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -41792,11 +45828,15 @@ func (p projLEInt32Float64ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -41864,11 +45904,15 @@ func (p projLEInt32Float64ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -41899,13 +45943,16 @@ func (p projLEInt32DecimalConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -41927,7 +45974,8 @@ func (p projLEInt32DecimalConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -41946,11 +45994,15 @@ func (p projLEInt32DecimalConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -41992,11 +46044,15 @@ func (p projLEInt32DecimalConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -42027,13 +46083,16 @@ func (p projLEInt64Int16ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -42060,7 +46119,8 @@ func (p projLEInt64Int16ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -42084,11 +46144,15 @@ func (p projLEInt64Int16ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -42140,11 +46204,15 @@ func (p projLEInt64Int16ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -42175,13 +46243,16 @@ func (p projLEInt64Int32ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -42208,7 +46279,8 @@ func (p projLEInt64Int32ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -42232,11 +46304,15 @@ func (p projLEInt64Int32ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -42288,11 +46364,15 @@ func (p projLEInt64Int32ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -42323,13 +46403,16 @@ func (p projLEInt64Int64ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -42356,7 +46439,8 @@ func (p projLEInt64Int64ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -42380,11 +46464,15 @@ func (p projLEInt64Int64ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -42436,11 +46524,15 @@ func (p projLEInt64Int64ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -42471,13 +46563,16 @@ func (p projLEInt64Float64ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -42512,7 +46607,8 @@ func (p projLEInt64Float64ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -42544,11 +46640,15 @@ func (p projLEInt64Float64ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -42616,11 +46716,15 @@ func (p projLEInt64Float64ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -42651,13 +46755,16 @@ func (p projLEInt64DecimalConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -42679,7 +46786,8 @@ func (p projLEInt64DecimalConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -42698,11 +46806,15 @@ func (p projLEInt64DecimalConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -42744,11 +46856,15 @@ func (p projLEInt64DecimalConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -42779,13 +46895,16 @@ func (p projLEFloat64Int16ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -42820,7 +46939,8 @@ func (p projLEFloat64Int16ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -42852,11 +46972,15 @@ func (p projLEFloat64Int16ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -42924,11 +47048,15 @@ func (p projLEFloat64Int16ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -42959,13 +47087,16 @@ func (p projLEFloat64Int32ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -43000,7 +47131,8 @@ func (p projLEFloat64Int32ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -43032,11 +47164,15 @@ func (p projLEFloat64Int32ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -43104,11 +47240,15 @@ func (p projLEFloat64Int32ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -43139,13 +47279,16 @@ func (p projLEFloat64Int64ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -43180,7 +47323,8 @@ func (p projLEFloat64Int64ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -43212,11 +47356,15 @@ func (p projLEFloat64Int64ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -43284,11 +47432,15 @@ func (p projLEFloat64Int64ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -43319,13 +47471,16 @@ func (p projLEFloat64Float64ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -43360,7 +47515,8 @@ func (p projLEFloat64Float64ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -43392,11 +47548,15 @@ func (p projLEFloat64Float64ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -43464,11 +47624,15 @@ func (p projLEFloat64Float64ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -43499,13 +47663,16 @@ func (p projLEFloat64DecimalConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -43529,7 +47696,8 @@ func (p projLEFloat64DecimalConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -43550,11 +47718,15 @@ func (p projLEFloat64DecimalConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -43600,11 +47772,15 @@ func (p projLEFloat64DecimalConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -43635,13 +47811,16 @@ func (p projLETimestampTimestampConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -43664,7 +47843,8 @@ func (p projLETimestampTimestampConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -43684,11 +47864,15 @@ func (p projLETimestampTimestampConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -43732,11 +47916,15 @@ func (p projLETimestampTimestampConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -43767,13 +47955,16 @@ func (p projLEIntervalIntervalConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -43789,7 +47980,8 @@ func (p projLEIntervalIntervalConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -43802,11 +47994,15 @@ func (p projLEIntervalIntervalConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -43836,11 +48032,15 @@ func (p projLEIntervalIntervalConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -43871,13 +48071,16 @@ func (p projLEJSONJSONConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -43899,7 +48102,8 @@ func (p projLEJSONJSONConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -43917,11 +48121,15 @@ func (p projLEJSONJSONConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -43962,11 +48170,15 @@ func (p projLEJSONJSONConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -43997,13 +48209,16 @@ func (p projLEDatumDatumConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -44021,7 +48236,8 @@ func (p projLEDatumDatumConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -44035,11 +48251,15 @@ func (p projLEDatumDatumConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -44072,11 +48292,15 @@ func (p projLEDatumDatumConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -44107,13 +48331,16 @@ func (p projGTBoolBoolConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -44137,7 +48364,8 @@ func (p projGTBoolBoolConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -44158,11 +48386,15 @@ func (p projGTBoolBoolConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -44208,11 +48440,15 @@ func (p projGTBoolBoolConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -44243,13 +48479,16 @@ func (p projGTBytesBytesConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -44265,7 +48504,8 @@ func (p projGTBytesBytesConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -44277,11 +48517,15 @@ func (p projGTBytesBytesConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -44310,11 +48554,15 @@ func (p projGTBytesBytesConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -44345,13 +48593,16 @@ func (p projGTDecimalInt16ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -44373,7 +48624,8 @@ func (p projGTDecimalInt16ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -44392,11 +48644,15 @@ func (p projGTDecimalInt16ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -44438,11 +48694,15 @@ func (p projGTDecimalInt16ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -44473,13 +48733,16 @@ func (p projGTDecimalInt32ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -44501,7 +48764,8 @@ func (p projGTDecimalInt32ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -44520,11 +48784,15 @@ func (p projGTDecimalInt32ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -44566,11 +48834,15 @@ func (p projGTDecimalInt32ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -44601,13 +48873,16 @@ func (p projGTDecimalInt64ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -44629,7 +48904,8 @@ func (p projGTDecimalInt64ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -44648,11 +48924,15 @@ func (p projGTDecimalInt64ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -44694,11 +48974,15 @@ func (p projGTDecimalInt64ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -44729,13 +49013,16 @@ func (p projGTDecimalFloat64ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -44759,7 +49046,8 @@ func (p projGTDecimalFloat64ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -44780,11 +49068,15 @@ func (p projGTDecimalFloat64ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -44830,11 +49122,15 @@ func (p projGTDecimalFloat64ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -44865,13 +49161,16 @@ func (p projGTDecimalDecimalConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -44887,7 +49186,8 @@ func (p projGTDecimalDecimalConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -44900,11 +49200,15 @@ func (p projGTDecimalDecimalConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -44934,11 +49238,15 @@ func (p projGTDecimalDecimalConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -44969,13 +49277,16 @@ func (p projGTInt16Int16ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -45002,7 +49313,8 @@ func (p projGTInt16Int16ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -45026,11 +49338,15 @@ func (p projGTInt16Int16ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -45082,11 +49398,15 @@ func (p projGTInt16Int16ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -45117,13 +49437,16 @@ func (p projGTInt16Int32ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -45150,7 +49473,8 @@ func (p projGTInt16Int32ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -45174,11 +49498,15 @@ func (p projGTInt16Int32ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -45230,11 +49558,15 @@ func (p projGTInt16Int32ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -45265,13 +49597,16 @@ func (p projGTInt16Int64ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -45298,7 +49633,8 @@ func (p projGTInt16Int64ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -45322,11 +49658,15 @@ func (p projGTInt16Int64ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -45378,11 +49718,15 @@ func (p projGTInt16Int64ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -45413,13 +49757,16 @@ func (p projGTInt16Float64ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -45454,7 +49801,8 @@ func (p projGTInt16Float64ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -45486,11 +49834,15 @@ func (p projGTInt16Float64ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -45558,11 +49910,15 @@ func (p projGTInt16Float64ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -45593,13 +49949,16 @@ func (p projGTInt16DecimalConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -45621,7 +49980,8 @@ func (p projGTInt16DecimalConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -45640,11 +50000,15 @@ func (p projGTInt16DecimalConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -45686,11 +50050,15 @@ func (p projGTInt16DecimalConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -45721,13 +50089,16 @@ func (p projGTInt32Int16ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -45754,7 +50125,8 @@ func (p projGTInt32Int16ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -45778,11 +50150,15 @@ func (p projGTInt32Int16ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -45834,11 +50210,15 @@ func (p projGTInt32Int16ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -45869,13 +50249,16 @@ func (p projGTInt32Int32ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -45902,7 +50285,8 @@ func (p projGTInt32Int32ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -45926,11 +50310,15 @@ func (p projGTInt32Int32ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -45982,11 +50370,15 @@ func (p projGTInt32Int32ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -46017,13 +50409,16 @@ func (p projGTInt32Int64ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -46050,7 +50445,8 @@ func (p projGTInt32Int64ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -46074,11 +50470,15 @@ func (p projGTInt32Int64ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -46130,11 +50530,15 @@ func (p projGTInt32Int64ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -46165,13 +50569,16 @@ func (p projGTInt32Float64ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -46206,7 +50613,8 @@ func (p projGTInt32Float64ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -46238,11 +50646,15 @@ func (p projGTInt32Float64ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -46310,11 +50722,15 @@ func (p projGTInt32Float64ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -46345,13 +50761,16 @@ func (p projGTInt32DecimalConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -46373,7 +50792,8 @@ func (p projGTInt32DecimalConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -46392,11 +50812,15 @@ func (p projGTInt32DecimalConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -46438,11 +50862,15 @@ func (p projGTInt32DecimalConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -46473,13 +50901,16 @@ func (p projGTInt64Int16ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -46506,7 +50937,8 @@ func (p projGTInt64Int16ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -46530,11 +50962,15 @@ func (p projGTInt64Int16ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -46586,11 +51022,15 @@ func (p projGTInt64Int16ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -46621,13 +51061,16 @@ func (p projGTInt64Int32ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -46654,7 +51097,8 @@ func (p projGTInt64Int32ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -46678,11 +51122,15 @@ func (p projGTInt64Int32ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -46734,11 +51182,15 @@ func (p projGTInt64Int32ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -46769,13 +51221,16 @@ func (p projGTInt64Int64ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -46802,7 +51257,8 @@ func (p projGTInt64Int64ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -46826,11 +51282,15 @@ func (p projGTInt64Int64ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -46882,11 +51342,15 @@ func (p projGTInt64Int64ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -46917,13 +51381,16 @@ func (p projGTInt64Float64ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -46958,7 +51425,8 @@ func (p projGTInt64Float64ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -46990,11 +51458,15 @@ func (p projGTInt64Float64ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -47062,11 +51534,15 @@ func (p projGTInt64Float64ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -47097,13 +51573,16 @@ func (p projGTInt64DecimalConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -47125,7 +51604,8 @@ func (p projGTInt64DecimalConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -47144,11 +51624,15 @@ func (p projGTInt64DecimalConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -47190,11 +51674,15 @@ func (p projGTInt64DecimalConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -47225,13 +51713,16 @@ func (p projGTFloat64Int16ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -47266,7 +51757,8 @@ func (p projGTFloat64Int16ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -47298,11 +51790,15 @@ func (p projGTFloat64Int16ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -47370,11 +51866,15 @@ func (p projGTFloat64Int16ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -47405,13 +51905,16 @@ func (p projGTFloat64Int32ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -47446,7 +51949,8 @@ func (p projGTFloat64Int32ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -47478,11 +51982,15 @@ func (p projGTFloat64Int32ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -47550,11 +52058,15 @@ func (p projGTFloat64Int32ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -47585,13 +52097,16 @@ func (p projGTFloat64Int64ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -47626,7 +52141,8 @@ func (p projGTFloat64Int64ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -47658,11 +52174,15 @@ func (p projGTFloat64Int64ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -47730,11 +52250,15 @@ func (p projGTFloat64Int64ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -47765,13 +52289,16 @@ func (p projGTFloat64Float64ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -47806,7 +52333,8 @@ func (p projGTFloat64Float64ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -47838,11 +52366,15 @@ func (p projGTFloat64Float64ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -47910,11 +52442,15 @@ func (p projGTFloat64Float64ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -47945,13 +52481,16 @@ func (p projGTFloat64DecimalConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -47975,7 +52514,8 @@ func (p projGTFloat64DecimalConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -47996,11 +52536,15 @@ func (p projGTFloat64DecimalConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -48046,11 +52590,15 @@ func (p projGTFloat64DecimalConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -48081,13 +52629,16 @@ func (p projGTTimestampTimestampConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -48110,7 +52661,8 @@ func (p projGTTimestampTimestampConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -48130,11 +52682,15 @@ func (p projGTTimestampTimestampConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -48178,11 +52734,15 @@ func (p projGTTimestampTimestampConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -48213,13 +52773,16 @@ func (p projGTIntervalIntervalConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -48235,7 +52798,8 @@ func (p projGTIntervalIntervalConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -48248,11 +52812,15 @@ func (p projGTIntervalIntervalConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -48282,11 +52850,15 @@ func (p projGTIntervalIntervalConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -48317,13 +52889,16 @@ func (p projGTJSONJSONConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -48345,7 +52920,8 @@ func (p projGTJSONJSONConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -48363,11 +52939,15 @@ func (p projGTJSONJSONConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -48408,11 +52988,15 @@ func (p projGTJSONJSONConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -48443,13 +53027,16 @@ func (p projGTDatumDatumConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -48467,7 +53054,8 @@ func (p projGTDatumDatumConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -48481,11 +53069,15 @@ func (p projGTDatumDatumConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -48518,11 +53110,15 @@ func (p projGTDatumDatumConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -48553,13 +53149,16 @@ func (p projGEBoolBoolConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -48583,7 +53182,8 @@ func (p projGEBoolBoolConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -48604,11 +53204,15 @@ func (p projGEBoolBoolConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -48654,11 +53258,15 @@ func (p projGEBoolBoolConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -48689,13 +53297,16 @@ func (p projGEBytesBytesConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -48711,7 +53322,8 @@ func (p projGEBytesBytesConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -48723,11 +53335,15 @@ func (p projGEBytesBytesConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -48756,11 +53372,15 @@ func (p projGEBytesBytesConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -48791,13 +53411,16 @@ func (p projGEDecimalInt16ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -48819,7 +53442,8 @@ func (p projGEDecimalInt16ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -48838,11 +53462,15 @@ func (p projGEDecimalInt16ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -48884,11 +53512,15 @@ func (p projGEDecimalInt16ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -48919,13 +53551,16 @@ func (p projGEDecimalInt32ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -48947,7 +53582,8 @@ func (p projGEDecimalInt32ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -48966,11 +53602,15 @@ func (p projGEDecimalInt32ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -49012,11 +53652,15 @@ func (p projGEDecimalInt32ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -49047,13 +53691,16 @@ func (p projGEDecimalInt64ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -49075,7 +53722,8 @@ func (p projGEDecimalInt64ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -49094,11 +53742,15 @@ func (p projGEDecimalInt64ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -49140,11 +53792,15 @@ func (p projGEDecimalInt64ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -49175,13 +53831,16 @@ func (p projGEDecimalFloat64ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -49205,7 +53864,8 @@ func (p projGEDecimalFloat64ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -49226,11 +53886,15 @@ func (p projGEDecimalFloat64ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -49276,11 +53940,15 @@ func (p projGEDecimalFloat64ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -49311,13 +53979,16 @@ func (p projGEDecimalDecimalConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -49333,7 +54004,8 @@ func (p projGEDecimalDecimalConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -49346,11 +54018,15 @@ func (p projGEDecimalDecimalConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -49380,11 +54056,15 @@ func (p projGEDecimalDecimalConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -49415,13 +54095,16 @@ func (p projGEInt16Int16ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -49448,7 +54131,8 @@ func (p projGEInt16Int16ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -49472,11 +54156,15 @@ func (p projGEInt16Int16ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -49528,11 +54216,15 @@ func (p projGEInt16Int16ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -49563,13 +54255,16 @@ func (p projGEInt16Int32ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -49596,7 +54291,8 @@ func (p projGEInt16Int32ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -49620,11 +54316,15 @@ func (p projGEInt16Int32ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -49676,11 +54376,15 @@ func (p projGEInt16Int32ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -49711,13 +54415,16 @@ func (p projGEInt16Int64ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -49744,7 +54451,8 @@ func (p projGEInt16Int64ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -49768,11 +54476,15 @@ func (p projGEInt16Int64ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -49824,11 +54536,15 @@ func (p projGEInt16Int64ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -49859,13 +54575,16 @@ func (p projGEInt16Float64ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -49900,7 +54619,8 @@ func (p projGEInt16Float64ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -49932,11 +54652,15 @@ func (p projGEInt16Float64ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -50004,11 +54728,15 @@ func (p projGEInt16Float64ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -50039,13 +54767,16 @@ func (p projGEInt16DecimalConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -50067,7 +54798,8 @@ func (p projGEInt16DecimalConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -50086,11 +54818,15 @@ func (p projGEInt16DecimalConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -50132,11 +54868,15 @@ func (p projGEInt16DecimalConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -50167,13 +54907,16 @@ func (p projGEInt32Int16ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -50200,7 +54943,8 @@ func (p projGEInt32Int16ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -50224,11 +54968,15 @@ func (p projGEInt32Int16ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -50280,11 +55028,15 @@ func (p projGEInt32Int16ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -50315,13 +55067,16 @@ func (p projGEInt32Int32ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -50348,7 +55103,8 @@ func (p projGEInt32Int32ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -50372,11 +55128,15 @@ func (p projGEInt32Int32ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -50428,11 +55188,15 @@ func (p projGEInt32Int32ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -50463,13 +55227,16 @@ func (p projGEInt32Int64ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -50496,7 +55263,8 @@ func (p projGEInt32Int64ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -50520,11 +55288,15 @@ func (p projGEInt32Int64ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -50576,11 +55348,15 @@ func (p projGEInt32Int64ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -50611,13 +55387,16 @@ func (p projGEInt32Float64ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -50652,7 +55431,8 @@ func (p projGEInt32Float64ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -50684,11 +55464,15 @@ func (p projGEInt32Float64ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -50756,11 +55540,15 @@ func (p projGEInt32Float64ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -50791,13 +55579,16 @@ func (p projGEInt32DecimalConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -50819,7 +55610,8 @@ func (p projGEInt32DecimalConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -50838,11 +55630,15 @@ func (p projGEInt32DecimalConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -50884,11 +55680,15 @@ func (p projGEInt32DecimalConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -50919,13 +55719,16 @@ func (p projGEInt64Int16ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -50952,7 +55755,8 @@ func (p projGEInt64Int16ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -50976,11 +55780,15 @@ func (p projGEInt64Int16ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -51032,11 +55840,15 @@ func (p projGEInt64Int16ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -51067,13 +55879,16 @@ func (p projGEInt64Int32ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -51100,7 +55915,8 @@ func (p projGEInt64Int32ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -51124,11 +55940,15 @@ func (p projGEInt64Int32ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -51180,11 +56000,15 @@ func (p projGEInt64Int32ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -51215,13 +56039,16 @@ func (p projGEInt64Int64ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -51248,7 +56075,8 @@ func (p projGEInt64Int64ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -51272,11 +56100,15 @@ func (p projGEInt64Int64ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -51328,11 +56160,15 @@ func (p projGEInt64Int64ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -51363,13 +56199,16 @@ func (p projGEInt64Float64ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -51404,7 +56243,8 @@ func (p projGEInt64Float64ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -51436,11 +56276,15 @@ func (p projGEInt64Float64ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -51508,11 +56352,15 @@ func (p projGEInt64Float64ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -51543,13 +56391,16 @@ func (p projGEInt64DecimalConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -51571,7 +56422,8 @@ func (p projGEInt64DecimalConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -51590,11 +56442,15 @@ func (p projGEInt64DecimalConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -51636,11 +56492,15 @@ func (p projGEInt64DecimalConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -51671,13 +56531,16 @@ func (p projGEFloat64Int16ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -51712,7 +56575,8 @@ func (p projGEFloat64Int16ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -51744,11 +56608,15 @@ func (p projGEFloat64Int16ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -51816,11 +56684,15 @@ func (p projGEFloat64Int16ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -51851,13 +56723,16 @@ func (p projGEFloat64Int32ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -51892,7 +56767,8 @@ func (p projGEFloat64Int32ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -51924,11 +56800,15 @@ func (p projGEFloat64Int32ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -51996,11 +56876,15 @@ func (p projGEFloat64Int32ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -52031,13 +56915,16 @@ func (p projGEFloat64Int64ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -52072,7 +56959,8 @@ func (p projGEFloat64Int64ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -52104,11 +56992,15 @@ func (p projGEFloat64Int64ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -52176,11 +57068,15 @@ func (p projGEFloat64Int64ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -52211,13 +57107,16 @@ func (p projGEFloat64Float64ConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -52252,7 +57151,8 @@ func (p projGEFloat64Float64ConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -52284,11 +57184,15 @@ func (p projGEFloat64Float64ConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -52356,11 +57260,15 @@ func (p projGEFloat64Float64ConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -52391,13 +57299,16 @@ func (p projGEFloat64DecimalConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -52421,7 +57332,8 @@ func (p projGEFloat64DecimalConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -52442,11 +57354,15 @@ func (p projGEFloat64DecimalConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -52492,11 +57408,15 @@ func (p projGEFloat64DecimalConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -52527,13 +57447,16 @@ func (p projGETimestampTimestampConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -52556,7 +57479,8 @@ func (p projGETimestampTimestampConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -52576,11 +57500,15 @@ func (p projGETimestampTimestampConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -52624,11 +57552,15 @@ func (p projGETimestampTimestampConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -52659,13 +57591,16 @@ func (p projGEIntervalIntervalConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -52681,7 +57616,8 @@ func (p projGEIntervalIntervalConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. //gcassert:bce arg := col.Get(i) @@ -52694,11 +57630,15 @@ func (p projGEIntervalIntervalConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -52728,11 +57668,15 @@ func (p projGEIntervalIntervalConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -52763,13 +57707,16 @@ func (p projGEJSONJSONConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -52791,7 +57738,8 @@ func (p projGEJSONJSONConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -52809,11 +57757,15 @@ func (p projGEJSONJSONConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -52854,11 +57806,15 @@ func (p projGEJSONJSONConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -52889,13 +57845,16 @@ func (p projGEDatumDatumConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -52913,7 +57872,8 @@ func (p projGEDatumDatumConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -52927,11 +57887,15 @@ func (p projGEDatumDatumConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -52964,11 +57928,15 @@ func (p projGEDatumDatumConstOp) Next() coldata.Batch { } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -52989,6 +57957,7 @@ func GetProjectionRConstOperator( evalCtx *eval.Context, binOp tree.BinaryEvalOp, cmpExpr *tree.ComparisonExpr, + nullableArgs bool, ) (colexecop.Operator, error) { input = colexecutils.NewVectorTypeEnforcer(allocator, input, outputType, outputIdx) projConstOpBase := projConstOpBase{ @@ -52996,6 +57965,7 @@ func GetProjectionRConstOperator( allocator: allocator, colIdx: colIdx, outputIdx: outputIdx, + nullableArgs: nullableArgs, } c := colconv.GetDatumToPhysicalFn(constType)(constArg) leftType, rightType := inputTypes[colIdx], constType diff --git a/pkg/sql/colexec/colexecprojconst/proj_like_ops.eg.go b/pkg/sql/colexec/colexecprojconst/proj_like_ops.eg.go index fd271ad2f3e4..4501c20afcb9 100644 --- a/pkg/sql/colexec/colexecprojconst/proj_like_ops.eg.go +++ b/pkg/sql/colexec/colexecprojconst/proj_like_ops.eg.go @@ -42,13 +42,16 @@ func (p projPrefixBytesBytesConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) projCol[i] = bytes.HasPrefix(arg, p.constArg) } @@ -58,17 +61,22 @@ func (p projPrefixBytesBytesConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) projCol[i] = bytes.HasPrefix(arg, p.constArg) } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -85,11 +93,15 @@ func (p projPrefixBytesBytesConstOp) Next() coldata.Batch { projCol[i] = bytes.HasPrefix(arg, p.constArg) } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -120,13 +132,16 @@ func (p projSuffixBytesBytesConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) projCol[i] = bytes.HasSuffix(arg, p.constArg) } @@ -136,17 +151,22 @@ func (p projSuffixBytesBytesConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) projCol[i] = bytes.HasSuffix(arg, p.constArg) } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -163,11 +183,15 @@ func (p projSuffixBytesBytesConstOp) Next() coldata.Batch { projCol[i] = bytes.HasSuffix(arg, p.constArg) } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -198,13 +222,16 @@ func (p projContainsBytesBytesConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) projCol[i] = bytes.Contains(arg, p.constArg) } @@ -214,17 +241,22 @@ func (p projContainsBytesBytesConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) projCol[i] = bytes.Contains(arg, p.constArg) } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -241,11 +273,15 @@ func (p projContainsBytesBytesConstOp) Next() coldata.Batch { projCol[i] = bytes.Contains(arg, p.constArg) } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -276,13 +312,16 @@ func (p projSkeletonBytesBytesConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -304,7 +343,8 @@ func (p projSkeletonBytesBytesConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -322,11 +362,15 @@ func (p projSkeletonBytesBytesConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -367,11 +411,15 @@ func (p projSkeletonBytesBytesConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -402,13 +450,16 @@ func (p projRegexpBytesBytesConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) projCol[i] = p.constArg.Match(arg) } @@ -418,17 +469,22 @@ func (p projRegexpBytesBytesConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) projCol[i] = p.constArg.Match(arg) } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -445,11 +501,15 @@ func (p projRegexpBytesBytesConstOp) Next() coldata.Batch { projCol[i] = p.constArg.Match(arg) } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -480,13 +540,16 @@ func (p projNotPrefixBytesBytesConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) projCol[i] = !bytes.HasPrefix(arg, p.constArg) } @@ -496,17 +559,22 @@ func (p projNotPrefixBytesBytesConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) projCol[i] = !bytes.HasPrefix(arg, p.constArg) } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -523,11 +591,15 @@ func (p projNotPrefixBytesBytesConstOp) Next() coldata.Batch { projCol[i] = !bytes.HasPrefix(arg, p.constArg) } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -558,13 +630,16 @@ func (p projNotSuffixBytesBytesConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) projCol[i] = !bytes.HasSuffix(arg, p.constArg) } @@ -574,17 +649,22 @@ func (p projNotSuffixBytesBytesConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) projCol[i] = !bytes.HasSuffix(arg, p.constArg) } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -601,11 +681,15 @@ func (p projNotSuffixBytesBytesConstOp) Next() coldata.Batch { projCol[i] = !bytes.HasSuffix(arg, p.constArg) } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -636,13 +720,16 @@ func (p projNotContainsBytesBytesConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) projCol[i] = !bytes.Contains(arg, p.constArg) } @@ -652,17 +739,22 @@ func (p projNotContainsBytesBytesConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) projCol[i] = !bytes.Contains(arg, p.constArg) } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -679,11 +771,15 @@ func (p projNotContainsBytesBytesConstOp) Next() coldata.Batch { projCol[i] = !bytes.Contains(arg, p.constArg) } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -714,13 +810,16 @@ func (p projNotSkeletonBytesBytesConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -742,7 +841,8 @@ func (p projNotSkeletonBytesBytesConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) { @@ -760,11 +860,15 @@ func (p projNotSkeletonBytesBytesConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -805,11 +909,15 @@ func (p projNotSkeletonBytesBytesConstOp) Next() coldata.Batch { } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch @@ -840,13 +948,16 @@ func (p projNotRegexpBytesBytesConstOp) Next() coldata.Batch { // updating the output Nulls from within _ASSIGN functions when the result // of a projection is Null. _outNulls := projVec.Nulls() - if vec.Nulls().MaybeHasNulls() { + + hasNullsAndNotNullable := vec.Nulls().MaybeHasNulls() + if hasNullsAndNotNullable { colNulls := vec.Nulls() if sel := batch.Selection(); sel != nil { sel = sel[:n] for _, i := range sel { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) projCol[i] = !p.constArg.Match(arg) } @@ -856,17 +967,22 @@ func (p projNotRegexpBytesBytesConstOp) Next() coldata.Batch { _ = col.Get(n - 1) for i := 0; i < n; i++ { if !colNulls.NullAt(i) { - // We only want to perform the projection operation if the value is not null. + // We only want to perform the projection operation if the value is not null + // or if the function can handle null arguments. arg := col.Get(i) projCol[i] = !p.constArg.Match(arg) } } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). projVec.SetNulls(_outNulls.Or(*colNulls)) } else { if sel := batch.Selection(); sel != nil { @@ -883,11 +999,15 @@ func (p projNotRegexpBytesBytesConstOp) Next() coldata.Batch { projCol[i] = !p.constArg.Match(arg) } } - // _outNulls has been updated from within the _ASSIGN function to include - // any NULLs that resulted from the projection. - // If $hasNulls is true, union _outNulls with the set of input Nulls. - // If $hasNulls is false, then there are no input Nulls. _outNulls is - // projVec.Nulls() so there is no need to call projVec.SetNulls(). + // _outNulls has been updated from within the _ASSIGN function to include any + // NULLs that resulted from the projection. + // (1) $hasNulls is true: + // If nullableArgs is false, union _outNulls with the set of input Nulls. + // If nullableArgs is true, the function’s definition can handle null + // arguments. So there is no need to call projVec.SetNulls(). + // (2) $hasNulls is false: + // Then there are no input Nulls. _outNulls is projVec.Nulls() so there is no + // need to call projVec.SetNulls(). } }) return batch diff --git a/pkg/sql/colexec/colexecprojconst/projection_ops_test.go b/pkg/sql/colexec/colexecprojconst/projection_ops_test.go index 28893b19b51a..61b165556e25 100644 --- a/pkg/sql/colexec/colexecprojconst/projection_ops_test.go +++ b/pkg/sql/colexec/colexecprojconst/projection_ops_test.go @@ -34,9 +34,10 @@ func TestGetProjectionConstOperator(t *testing.T) { constVal := 31.37 constArg := tree.NewDFloat(tree.DFloat(constVal)) outputIdx := 5 + nullableArgs := false op, err := GetProjectionRConstOperator( nil /* allocator */, inputTypes, types.Float, types.Float, binOp, input, colIdx, - constArg, outputIdx, nil /* EvalCtx */, nil /* BinFn */, nil, /* cmpExpr */ + constArg, outputIdx, nil /* EvalCtx */, nil /* BinFn */, nil /* cmpExpr */, nullableArgs, ) if err != nil { t.Error(err) @@ -46,6 +47,7 @@ func TestGetProjectionConstOperator(t *testing.T) { OneInputHelper: colexecop.MakeOneInputHelper(op.(*projMultFloat64Float64ConstOp).Input), colIdx: colIdx, outputIdx: outputIdx, + nullableArgs: nullableArgs, }, constArg: constVal, } @@ -65,9 +67,10 @@ func TestGetProjectionConstMixedTypeOperator(t *testing.T) { constVal := int16(31) constArg := tree.NewDInt(tree.DInt(constVal)) outputIdx := 5 + nullableArgs := false op, err := GetProjectionRConstOperator( nil /* allocator */, inputTypes, types.Int2, types.Int, cmpOp, input, colIdx, - constArg, outputIdx, nil /* EvalCtx */, nil /* BinFn */, nil, /* cmpExpr */ + constArg, outputIdx, nil /* EvalCtx */, nil /* BinFn */, nil /* cmpExpr */, nullableArgs, ) if err != nil { t.Error(err) @@ -77,6 +80,7 @@ func TestGetProjectionConstMixedTypeOperator(t *testing.T) { OneInputHelper: colexecop.MakeOneInputHelper(op.(*projGEInt64Int16ConstOp).Input), colIdx: colIdx, outputIdx: outputIdx, + nullableArgs: nullableArgs, }, constArg: constVal, } diff --git a/pkg/sql/logictest/testdata/logic_test/array b/pkg/sql/logictest/testdata/logic_test/array index 097097afccf4..b4107430ca70 100644 --- a/pkg/sql/logictest/testdata/logic_test/array +++ b/pkg/sql/logictest/testdata/logic_test/array @@ -983,6 +983,55 @@ SELECT NULL::INT[] || NULL::INT[] ---- NULL +# The following tests check for binary and comparison expression that can handle +# nullable arguments. +statement ok +CREATE TABLE t_bool (b BOOL[]); + +query T +SELECT b || NULL FROM t_bool; +---- + +statement ok +INSERT INTO t_bool VALUES (Array[]); + +query T +SELECT b || NULL FROM t_bool; +---- +{} + +query T +SELECT b || Array[]:::bool[] FROM t_bool; +---- +{} + +query T +SELECT b || Array[NULL]:::bool[] FROM t_bool; +---- +{NULL} + +query T +SELECT b || Array[true] FROM t_bool; +---- +{t} + +query T +SELECT b FROM t_bool WHERE b < ARRAY[]:::bool[]; +---- + +query T +SELECT b FROM t_bool WHERE b < ARRAY[NULL]:::bool[]; +---- +{} + +query T +SELECT b FROM t_bool WHERE b < ARRAY[true]; +---- +{} + +statement ok +DROP TABLE t_bool; + # Array equality query B