diff options
author | aakulaga <aakulaga@ydb.tech> | 2023-05-28 12:25:20 +0300 |
---|---|---|
committer | aakulaga <aakulaga@ydb.tech> | 2023-05-28 12:25:20 +0300 |
commit | e769af9b35ea7a8cd7fcfe9138cf34aaac4c7f1c (patch) | |
tree | cf23554d7208418376b4816786c09f4fd1159de3 | |
parent | 7f0c50f5391d6bb23e61f598c1332c05bd2f9439 (diff) | |
download | ydb-e769af9b35ea7a8cd7fcfe9138cf34aaac4c7f1c.tar.gz |
Fix TPC-H Q5 for 32bit keys
Fix TPC-H Q5 for 32bit keys
-rw-r--r-- | ydb/library/yql/minikql/comp_nodes/mkql_grace_join.cpp | 9 |
1 files changed, 4 insertions, 5 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 6055d70f80..c441968d16 100644 --- a/ydb/library/yql/minikql/comp_nodes/mkql_grace_join.cpp +++ b/ydb/library/yql/minikql/comp_nodes/mkql_grace_join.cpp @@ -55,7 +55,6 @@ struct TGraceJoinPacker { std::vector<ui64> TupleIntVals; // Packed value of all fixed length values of table tuple. Keys columns should be packed first. std::vector<ui32> TupleStrSizes; // Sizes of all packed strings std::vector<char*> TupleStrings; // All values of tuple strings - std::vector<ui32> Offsets; // Offsets of table column values in bytes std::vector<TType*> ColumnTypes; // Types of all columns std::vector<std::shared_ptr<TValuePacker>> Packers; // Packers for composite data types const THolderFactory& HolderFactory; // To use during unpacking @@ -491,7 +490,6 @@ TGraceJoinPacker::TGraceJoinPacker(const std::vector<TType *> & columnTypes, con }); - Offsets.resize(nColumns); TupleHolder.resize(nColumns); TupleStringHolder.resize(nColumns); IColumnsHolder.resize(nColumns); @@ -508,22 +506,21 @@ TGraceJoinPacker::TGraceJoinPacker(const std::vector<TType *> & columnTypes, con bool prevKeyColumn = false; + ui32 paddedKeyIntOffset = currIntOffset; for( auto & p: ColumnsPackInfo ) { if ( !p.IsString && !p.IsIType ) { if (prevKeyColumn && !p.IsKeyColumn) { currIntOffset = ( (currIntOffset + sizeof(ui64) - 1) / sizeof(ui64) ) * sizeof(ui64); + KeyIntColumnsNum = (currIntOffset - NullsBitmapSize * sizeof(ui64)) / sizeof(ui64); } prevKeyColumn = p.IsKeyColumn; p.Offset = currIntOffset; - Offsets[p.ColumnIdx] = currIntOffset; currIntOffset += p.Bytes; } else if ( p.IsString ) { p.Offset = currStrOffset; - Offsets[p.ColumnIdx] = currStrOffset; currStrOffset++; } else if (p.IsIType) { p.Offset = currIOffset; - Offsets[p.ColumnIdx] = currIOffset; currIOffset++; GraceJoin::TColTypeInterface cti{ MakeHashImpl(p.MKQLType), MakeEquateImpl(p.MKQLType), std::make_shared<TValuePacker>(true, p.MKQLType) , HolderFactory }; ColumnInterfaces.push_back(cti); @@ -531,6 +528,8 @@ TGraceJoinPacker::TGraceJoinPacker(const std::vector<TType *> & columnTypes, con currIdx++; } + DataIntColumnsNum = (currIntOffset - NullsBitmapSize * sizeof(ui64)) / sizeof(ui64); + GraceJoin::TColTypeInterface * cti_p = nullptr; if (TotalIColumnsNum > 0 ) { |