You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
88425: colexec: use tree.DNull when projection is called on null input r=DrewKimball a=DrewKimball
Most projections skip rows for which one or more arguments are null, and just output a null for those rows. However, some projections can actually accept null arguments. Previously, we were using the values from the vec even when the `Nulls` bitmap was set for that row, which invalidates the data in the vec for that row. This could cause a non-null value to be unexpectedly concatenated to an array when an argument was null (nothing should be added to the array in this case).
This commit modifies the projection operators that operate on datum-backed vectors to explicitly set the argument to `tree.DNull` in the case when the `Nulls` bitmap is set. This ensures that the projection is not performed with the invalid (and arbitrary) value in the datum vec at that index.
Fixes#87919
Release note (bug fix): Fixed a bug in `Concat` projection operators for arrays that could cause non-null values to be added to the array when one of the arguments was null.
88671: util: avoid allocations when escaping multibyte characters r=[miretskiy,yuzefovich] a=HonoreDB
EncodeEscapedChar (which is called in EncodeSQLStringWithFlags) is pretty optimized, but for escaping a multibyte character it was using fmt.FPrintf, which means every multibyte character ended up on the heap due to golang/go#8618. This had a noticeable impact in changefeed benchmarking.
This commit just hand-compiles the two formatting strings that were being used into reasonably efficient go, eliminating the allocs.
Benchmark encoding the first 10000 runes shows a 4x speedup:
Before: BenchmarkEncodeNonASCIISQLString-16 944 1216130 ns/op
After: BenchmarkEncodeNonASCIISQLString-16 3468 300777 ns/op
Release note: None
Co-authored-by: DrewKimball <[email protected]>
Co-authored-by: Aaron Zinger <[email protected]>
0 commit comments