summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoraakulaga <[email protected]>2023-03-21 11:37:45 +0300
committeraakulaga <[email protected]>2023-03-21 11:37:45 +0300
commitd59a09d64d8e4589de72bb0ed1f3080f3b2e1ca8 (patch)
tree59adf9bbe1679702e4295cbcd934e9b0c98df39b
parentee334d4e9a9cb89bb53e8df2446a822705950461 (diff)
Fix key values ui64 alignment
Fix key values ui64 alignment
-rw-r--r--ydb/library/yql/minikql/comp_nodes/mkql_grace_join.cpp16
1 files changed, 12 insertions, 4 deletions
diff --git a/ydb/library/yql/minikql/comp_nodes/mkql_grace_join.cpp b/ydb/library/yql/minikql/comp_nodes/mkql_grace_join.cpp
index 29dfbf2cdd7..cf9249fb5a9 100644
--- a/ydb/library/yql/minikql/comp_nodes/mkql_grace_join.cpp
+++ b/ydb/library/yql/minikql/comp_nodes/mkql_grace_join.cpp
@@ -19,6 +19,7 @@
#include <ydb/library/yql/parser/pg_catalog/catalog.h>
#include <chrono>
+#include <format>
namespace NKikimr {
namespace NMiniKQL {
@@ -121,6 +122,9 @@ TColumnDataPackInfo GetPackInfo(TType* type) {
NUdf::EDataSlot dataType = NUdf::GetDataSlot(colTypeId);
res.DataType = dataType;
+ const NYql::NUdf::TDataTypeInfo& ti = GetDataTypeInfo(dataType);
+ res.Name = ti.Name;
+
switch (dataType){
case NUdf::EDataSlot::Bool:
res.Bytes = sizeof(bool); break;
@@ -184,9 +188,7 @@ void TGraceJoinPacker::Pack() {
TuplesPacked++;
TuplesBatchPacked++;
- for (ui64 i = 0; i < NullsBitmapSize; ++i) {
- TupleIntVals[i] = 0; // Clearing nulls bit array. Bit 1 means particular column contains null value
- }
+ std::fill(TupleIntVals.begin(), TupleIntVals.end(), 0);
for (ui64 i = 0; i < ColumnsPackInfo.size(); i++) {
@@ -502,8 +504,14 @@ TGraceJoinPacker::TGraceJoinPacker(const std::vector<TType *> & columnTypes, con
ui32 currIdx = 0;
std::vector<GraceJoin::TColTypeInterface> ctiv;
+ bool prevKeyColumn = false;
+
for( auto & p: ColumnsPackInfo ) {
if ( !p.IsString && !p.IsIType ) {
+ if (prevKeyColumn && !p.IsKeyColumn) {
+ currIntOffset = ( (currIntOffset + sizeof(ui64) - 1) / sizeof(ui64) ) * sizeof(ui64);
+ }
+ prevKeyColumn = p.IsKeyColumn;
p.Offset = currIntOffset;
Offsets[p.ColumnIdx] = currIntOffset;
currIntOffset += p.Bytes;
@@ -746,7 +754,7 @@ EFetchResult TGraceJoinState::FetchValues(TComputationContext& ctx, NUdf::TUnbox
auto & valPtr = output[RightRenames[2 * i + 1]];
if ( valPtr ) {
*valPtr = valsRight[RightRenames[2 * i]];
- }
+ }
}
return EFetchResult::One;