aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoraakulaga <aakulaga@ydb.tech>2023-05-28 12:25:20 +0300
committeraakulaga <aakulaga@ydb.tech>2023-05-28 12:25:20 +0300
commite769af9b35ea7a8cd7fcfe9138cf34aaac4c7f1c (patch)
treecf23554d7208418376b4816786c09f4fd1159de3
parent7f0c50f5391d6bb23e61f598c1332c05bd2f9439 (diff)
downloadydb-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.cpp9
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 ) {