@@ -40,6 +40,7 @@ class TKqpStreamLookupActor : public NActors::TActorBootstrapped<TKqpStreamLooku
40
40
, LockTxId(settings.HasLockTxId() ? settings.GetLockTxId() : TMaybe<ui64>())
41
41
, NodeLockId(settings.HasLockNodeId() ? settings.GetLockNodeId() : TMaybe<ui32>())
42
42
, SchemeCacheRequestTimeout(SCHEME_CACHE_REQUEST_TIMEOUT)
43
+ , LookupStrategy(settings.GetLookupStrategy())
43
44
, StreamLookupWorker(CreateStreamLookupWorker(std::move(settings), args.TypeEnv, args.HolderFactory, args.InputDesc))
44
45
, Counters(counters)
45
46
, LookupActorSpan(TWilsonKqp::LookupActor, std::move(args.TraceId), " LookupActor" )
@@ -67,7 +68,7 @@ class TKqpStreamLookupActor : public NActors::TActorBootstrapped<TKqpStreamLooku
67
68
return NKikimrServices::TActivity::KQP_STREAM_LOOKUP_ACTOR;
68
69
}
69
70
70
- void FillExtraStats (NYql::NDqProto::TDqTaskStats* stats , bool last, const NYql::NDq::TDqMeteringStats*) override {
71
+ void FillExtraStats (NYql::NDqProto::TDqTaskStats* stats , bool last, const NYql::NDq::TDqMeteringStats* mstats ) override {
71
72
if (last) {
72
73
NYql::NDqProto::TDqTableStats* tableStats = nullptr ;
73
74
for (auto & table : *stats->MutableTables ()) {
@@ -81,9 +82,25 @@ class TKqpStreamLookupActor : public NActors::TActorBootstrapped<TKqpStreamLooku
81
82
tableStats->SetTablePath (StreamLookupWorker->GetTablePath ());
82
83
}
83
84
85
+ ui64 rowsReadEstimate = ReadRowsCount;
86
+ ui64 bytesReadEstimate = ReadBytesCount;
87
+
88
+ if (mstats) {
89
+ switch (LookupStrategy) {
90
+ case NKqpProto::EStreamLookupStrategy::LOOKUP: {
91
+ // in lookup case we return as result actual data, that we read from the datashard.
92
+ rowsReadEstimate = mstats->Inputs [InputIndex]->RowsConsumed ;
93
+ bytesReadEstimate = mstats->Inputs [InputIndex]->BytesConsumed ;
94
+ break ;
95
+ }
96
+ default :
97
+ ;
98
+ }
99
+ }
100
+
84
101
// TODO: use evread statistics after KIKIMR-16924
85
- tableStats->SetReadRows (tableStats->GetReadRows () + ReadRowsCount );
86
- tableStats->SetReadBytes (tableStats->GetReadBytes () + ReadBytesCount );
102
+ tableStats->SetReadRows (tableStats->GetReadRows () + rowsReadEstimate );
103
+ tableStats->SetReadBytes (tableStats->GetReadBytes () + bytesReadEstimate );
87
104
tableStats->SetAffectedPartitions (tableStats->GetAffectedPartitions () + ReadsPerShard.size ());
88
105
89
106
NKqpProto::TKqpTableExtraStats tableExtraStats;
@@ -148,7 +165,7 @@ class TKqpStreamLookupActor : public NActors::TActorBootstrapped<TKqpStreamLooku
148
165
};
149
166
150
167
struct TEvRetryRead : public TEventLocal <TEvRetryRead, EvRetryRead> {
151
- explicit TEvRetryRead (ui64 readId, ui64 lastSeqNo, bool instantStart = false )
168
+ explicit TEvRetryRead (ui64 readId, ui64 lastSeqNo, bool instantStart = false )
152
169
: ReadId(readId)
153
170
, LastSeqNo(lastSeqNo)
154
171
, InstantStart(instantStart) {
@@ -259,7 +276,7 @@ class TKqpStreamLookupActor : public NActors::TActorBootstrapped<TKqpStreamLooku
259
276
void Handle (TEvTxProxySchemeCache::TEvResolveKeySetResult::TPtr& ev) {
260
277
CA_LOG_D (" TEvResolveKeySetResult was received for table: " << StreamLookupWorker->GetTablePath ());
261
278
if (ev->Get ()->Request ->ErrorCount > 0 ) {
262
- TString errorMsg = TStringBuilder () << " Failed to get partitioning for table: "
279
+ TString errorMsg = TStringBuilder () << " Failed to get partitioning for table: "
263
280
<< StreamLookupWorker->GetTablePath ();
264
281
LookupActorStateSpan.EndError (errorMsg);
265
282
@@ -419,7 +436,7 @@ class TKqpStreamLookupActor : public NActors::TActorBootstrapped<TKqpStreamLooku
419
436
auto readIt = Reads.find (ev->Get ()->ReadId );
420
437
YQL_ENSURE (readIt != Reads.end (), " Unexpected readId: " << ev->Get ()->ReadId );
421
438
auto & read = readIt->second ;
422
-
439
+
423
440
if (read .State == EReadState::Running && read .LastSeqNo <= ev->Get ()->LastSeqNo ) {
424
441
if (ev->Get ()->InstantStart ) {
425
442
read .SetFinished ();
@@ -566,7 +583,7 @@ class TKqpStreamLookupActor : public NActors::TActorBootstrapped<TKqpStreamLooku
566
583
keyColumnTypes, TVector<TKeyDesc::TColumnOp>{}));
567
584
568
585
Counters->IteratorsShardResolve ->Inc ();
569
- LookupActorStateSpan = NWilson::TSpan (TWilsonKqp::LookupActorShardsResolve, LookupActorSpan.GetTraceId (),
586
+ LookupActorStateSpan = NWilson::TSpan (TWilsonKqp::LookupActorShardsResolve, LookupActorSpan.GetTraceId (),
570
587
" WaitForShardsResolve" , NWilson::EFlags::AUTO_END);
571
588
572
589
Send (MakeSchemeCacheID (), new TEvTxProxySchemeCache::TEvInvalidateTable (StreamLookupWorker->GetTableId (), {}));
@@ -625,6 +642,7 @@ class TKqpStreamLookupActor : public NActors::TActorBootstrapped<TKqpStreamLooku
625
642
NActors::TActorId SchemeCacheRequestTimeoutTimer;
626
643
TVector<NKikimrDataEvents::TLock> Locks;
627
644
TVector<NKikimrDataEvents::TLock> BrokenLocks;
645
+ NKqpProto::EStreamLookupStrategy LookupStrategy;
628
646
std::unique_ptr<TKqpStreamLookupWorker> StreamLookupWorker;
629
647
ui64 ReadId = 0 ;
630
648
size_t TotalRetryAttempts = 0 ;
0 commit comments