Crash in InMemoryJoinCursor::saveState() called during hybrid hash join execution (second instance)

XMLWordPrintableJSON

    • Type: Bug
    • Resolution: Unresolved
    • Priority: Major - P3
    • None
    • Affects Version/s: None
    • Component/s: None
    • None
    • Query Execution
    • ALL
    • Hide
      1. Download the tpc-h/tpch-1-normalized.archive.gz from the query-benchmark-data bucket and restore it using mongorestore
      2. Run:
      3. db.adminCommand({setParameter: 1, internalEnableJoinOptimization: true});
        db.adminCommand({setParameter: 1, internalJoinReorderMode: "random"});
        db.adminCommand({ setParameter: 1, internalRandomJoinOrderSeed: 5 });
        db.customer.aggregate([{'$match': {'$expr': {'$eq': ['$c_mktsegment', 'BUILDING']}}}, {'$lookup': {'from': 'orders', 'localField': 'c_custkey', 'foreignField': 'o_custkey', 'as': 'orders', 'pipeline': [{'$match': {'$expr': {'$lt': ['$o_orderdate', new Date('1995-04-19 20:32:26')]}}}]}}, {'$unwind': '$orders'}, {'$lookup': {'from': 'lineitem', 'localField': 'orders.o_orderkey', 'foreignField': 'l_orderkey', 'as': 'lineitem', 'pipeline': [{'$match': {'$expr': {'$gt': ['$l_shipdate', new Date('1995-06-19 06:20:43')]}}}]}}, {'$unwind': '$lineitem'}]);
        
      Show
      Download the tpc-h/tpch-1-normalized.archive.gz from the query-benchmark-data bucket and restore it using mongorestore Run: db.adminCommand({setParameter: 1, internalEnableJoinOptimization: true }); db.adminCommand({setParameter: 1, internalJoinReorderMode: "random" }); db.adminCommand({ setParameter: 1, internalRandomJoinOrderSeed: 5 }); db.customer.aggregate([{ '$match' : { '$expr' : { '$eq' : [ '$c_mktsegment' , 'BUILDING' ]}}}, { '$lookup' : { 'from' : 'orders' , 'localField' : 'c_custkey' , 'foreignField' : 'o_custkey' , 'as' : 'orders' , 'pipeline' : [{ '$match' : { '$expr' : { '$lt' : [ '$o_orderdate' , new Date( '1995-04-19 20:32:26' )]}}}]}}, { '$unwind' : '$orders' }, { '$lookup' : { 'from' : 'lineitem' , 'localField' : 'orders.o_orderkey' , 'foreignField' : 'l_orderkey' , 'as' : 'lineitem' , 'pipeline' : [{ '$match' : { '$expr' : { '$gt' : [ '$l_shipdate' , new Date( '1995-06-19 06:20:43' )]}}}]}}, { '$unwind' : '$lineitem' }]);
    • None
    • None
    • None
    • None
    • None
    • None
    • None

      This one is similar to SERVER-124358 but happens further down in the same file.

      [j0] {"t":{"$date":"2026-06-02T09:24:35.982+00:00"},"s":"F",  "c":"CONTROL",  "id":6384300, "ctx":"conn25","msg":"Writing fatal message","attr":{"message":"Invalid access at address: 0x50d000000000\n"}}
      [j0] {"t":{"$date":"2026-06-02T09:24:35.982+00:00"},"s":"F",  "c":"CONTROL",  "id":6384300, "ctx":"conn25","msg":"Writing fatal message","attr":{"message":"Dumping siginfo (si_code=2): 0b 00 00 00 00 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 d0 50 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00\n"}}
      [j0] {"t":{"$date":"2026-06-02T09:24:35.982+00:00"},"s":"F",  "c":"CONTROL",  "id":6384300, "ctx":"conn25","msg":"Writing fatal message","attr":{"message":"Got signal: 11 (Segmentation fault).\n"}}
      [j0] BACKTRACE:
      [j0] #0 0x0000c5a4f009fd37 in printCppTrace
      [j0]                    at src/mongo/util/stacktrace.cpp:126:18
      [j0]      125: void printCppTrace(StackTraceSink* sink) {
      [j0]    > 126:     auto trace = cpptrace::generate_trace(0, kStackTraceFrameMax);
      [j0]                            ^
      [j0]      127:     static StaticImmortal<cpptrace::formatter> baseFormat =
      [j0]      128:         cpptrace::formatter{}
      [j0] #1 (inlined)          in printStackTraceNoRecursion
      [j0]                    at src/mongo/util/signal_handlers_synchronous.cpp:200:9
      [j0]      198:         writeMallocFreeStreamToLog();
      [j0]      199:     } else {
      [j0]    > 200:         printStackTrace();
      [j0]                   ^
      [j0]      201:     }
      [j0]      202: }
      [j0] #2 0x0000c5a4f009e83b in printErrorBlock
      [j0]                    at src/mongo/util/signal_handlers_synchronous.cpp:228:5
      [j0]      226: // must hold MallocFreeOStreamGuard to call
      [j0]      227: void printErrorBlock() {
      [j0]    > 228:     printStackTraceNoRecursion();
      [j0]               ^
      [j0]      229:     writeMallocFreeStreamToLog();
      [j0]      230:     dumpScopedDebugInfo(mallocFreeOStream);
      [j0] #3 0x0000c5a4f009edbf in abruptQuitWithAddrSignal
      [j0]                    at src/mongo/util/signal_handlers_synchronous.cpp:330:5
      [j0]      328:     printSigInfo(siginfo);
      [j0]      329:     printSignal(signalNum);
      [j0]    > 330:     printErrorBlock();
      [j0]               ^
      [j0]      331:
      [j0]      332:     breakpoint();
      [j0] #4 0x0000f7c7445169cf at linux-vdso.so.1
      [j0] #5 0x0000f7c743c3ae8b at string/../sysdeps/aarch64/multiarch/memcpy_advsimd.S:162:0
      [j0] #6 (inlined)          in memcpy
      [j0]                    at /usr/include/aarch64-linux-gnu/bits/string_fortified.h:29:10
      [j0] #7 0x0000c5a4ed4e440f in copyValue
      [j0]                    at src/mongo/db/exec/sbe/values/value.h:2345:13
      [j0]     2343:             // with the BSONObj/BSONArray class.
      [j0]     2344:             auto buffer = UniqueBuffer::allocate(size);
      [j0]   > 2345:             memcpy(buffer.get(), bson, size);
      [j0]                       ^
      [j0]     2346:             return {tag, reinterpret_cast<Value>(buffer.release())};
      [j0]     2347:         }
      [j0] #8 0x0000c5a4ed91ab6b in saveState
      [j0]                    at src/mongo/db/exec/sbe/stages/hybrid_hash_join.cpp:131:71
      [j0]      129:         for (size_t i = 0; i < _probeProject.size(); ++i) {
      [j0]      130:             auto [tag, val] = _probeProject.getViewOfValue(i);
      [j0]    > 131:             _savedProbeProject.reset(i, value::TagValueOwned::fromRaw(value::copyValue(tag, val)));
      [j0]                                                                                 ^
      [j0]      132:         }
      [j0]      133:     }
      [j0] #9 0x0000c5a4ed4e5a87 in saveState
      [j0]                    at src/mongo/db/exec/sbe/stages/stages.h:203:16
      [j0]      201:         }
      [j0]      202:
      [j0]    > 203:         stage->doSaveState();
      [j0]                          ^
      [j0]      204:         // Save the children in a right to left order so dependent stages (i.e. one using correlated
      [j0]      205:         // slots) are saved first.
      [j0] #10 0x0000c5a4ed4e5ad7 in saveState
      [j0]                    at src/mongo/db/exec/sbe/stages/stages.h:208:28
      [j0]      206:         auto& children = stage->_children;
      [j0]      207:         for (auto idx = children.size(); idx-- > 0;) {
      [j0]    > 208:             children[idx]->saveState(disableSlotAccess ? shouldOptimizeSaveState(idx) : false);
      [j0]                                      ^
      [j0]      209:         }
      [j0] #11 0x0000c5a4edb223ef in saveState
      [j0]                    at src/mongo/db/query/plan_yield_policy_sbe.cpp:77:15
      [j0]       75: void PlanYieldPolicySBE::saveState(OperationContext* opCtx) {
      [j0]       76:     for (auto&& root : _yieldingPlans) {
      [j0]     > 77:         root->saveState();
      [j0]                         ^
      [j0]       78:     }
      [j0]       79: }
      [j0] #12 0x0000c5a4ee088bd3 in yieldOrInterrupt
      [j0]                    at src/mongo/db/query/plan_yield_policy.cpp:149:13
      [j0]      147:     for (int attempt = 1; true; attempt++) {
      [j0]      148:         try {
      [j0]    > 149:             saveState(opCtx);
      [j0]                       ^
      [j0]      150:
      [j0]      151:             // TODO SERVER-103267: Remove setAbandonSnapshotMode() and related.
      [j0] #13 0x0000c5a4ed8d71d3 in checkForInterruptAndYield
      [j0]                    at src/mongo/db/exec/sbe/stages/stages.h:652:13
      [j0]      650:             checkForInterruptNoYield(opCtx);
      [j0]      651:         } else if (_yieldPolicy->shouldYieldOrInterrupt(opCtx)) {
      [j0]    > 652:             uassertStatusOK(_yieldPolicy->yieldOrInterrupt(
      [j0]                       ^
      [j0]      653:                 opCtx, nullptr, RestoreContext::RestoreType::kYield));
      [j0]      654:         }
      [j0] #14 0x0000c5a4ed9e7597 in getNext
      [j0]                    at src/mongo/db/exec/sbe/stages/ix_scan.cpp:269:5
      [j0]      267:     disableSlotAccess();
      [j0]      268:
      [j0]    > 269:     checkForInterruptAndYield(_opCtx);
      [j0]               ^
      [j0]      270:
      [j0]      271:     auto& ru = *shard_role_details::getRecoveryUnit(_opCtx);
      [j0] #15 0x0000c5a4ed92571f in getNext
      [j0]                    at src/mongo/db/exec/sbe/stages/loop_join.cpp:179:30
      [j0]      178:     for (;;) {
      [j0]    > 179:         while (_children[1]->getNext() == PlanState::ADVANCED) {
      [j0]                                        ^
      [j0]      180:             if (!_predicateCode || _bytecode.runPredicate(_predicateCode.get())) {
      [j0]      181:                 return trackPlanState(PlanState::ADVANCED);
      [j0] #16 0x0000c5a4ed8f7b1b in getNext
      [j0]                    at src/mongo/db/exec/sbe/stages/fetch.cpp:237:36
      [j0]      235:     // try to seek the record id.
      [j0]      236:     do {
      [j0]    > 237:         auto state = _children[0]->getNext();
      [j0]                                              ^
      [j0]      238:         if (state == PlanState::IS_EOF) {
      [j0]      239:             return trackPlanState(PlanState::IS_EOF);
      [j0] #17 0x0000c5a4ed8a3e3b in getNext
      [j0]                    at src/mongo/db/exec/sbe/stages/filter.h:131:35
      [j0]      130:         do {
      [j0]    > 131:             state = _children[0]->getNext();
      [j0]                                             ^
      [j0]      132:
      [j0]      133:             if (state == PlanState::ADVANCED) {
      [j0] #18 0x0000c5a4ed92571f in getNext
      [j0]                    at src/mongo/db/exec/sbe/stages/loop_join.cpp:179:30
      [j0]      178:     for (;;) {
      [j0]    > 179:         while (_children[1]->getNext() == PlanState::ADVANCED) {
      [j0]                                        ^
      [j0]      180:             if (!_predicateCode || _bytecode.runPredicate(_predicateCode.get())) {
      [j0]      181:                 return trackPlanState(PlanState::ADVANCED);
      [j0] #19 0x0000c5a4ed934a37 in getNext
      [j0]                    at src/mongo/db/exec/sbe/stages/project.cpp:94:32
      [j0]       92:     // case it yields as the state will be completely overwritten after the getNext() call.
      [j0]       93:     disableSlotAccess();
      [j0]     > 94:     auto state = _children[0]->getNext();
      [j0]                                          ^
      [j0]       95:
      [j0]       96:     if (state == PlanState::ADVANCED) {
      [j0] #20 0x0000c5a4ed906d83 in getNext
      [j0]                    at src/mongo/db/exec/sbe/stages/hash_join.cpp:198:48
      [j0]      196:         switch (_joinPhase) {
      [j0]      197:             case JoinPhase::kProbing:
      [j0]    > 198:                 if (auto state = outerChild()->getNext(); state == PlanState::ADVANCED) {
      [j0]                                                          ^
      [j0]      199:
      [j0]      200:                     size_t idx = 0;
      [j0] #21 0x0000c5a4ed934a37 in getNext
      [j0]                    at src/mongo/db/exec/sbe/stages/project.cpp:94:32
      [j0]       92:     // case it yields as the state will be completely overwritten after the getNext() call.
      [j0]       93:     disableSlotAccess();
      [j0]     > 94:     auto state = _children[0]->getNext();
      [j0]                                          ^
      [j0]       95:
      [j0]       96:     if (state == PlanState::ADVANCED) {
      [j0] #22 0x0000c5a4ed4e227b in fetchNextImpl<mongo::BSONObj, mongo::BSONObj::DefaultSizeTrait>
      [j0]                    at src/mongo/db/query/plan_executor_sbe.cpp:688:24
      [j0]      687:     tassert(11052114, "out must not be null", out);
      [j0]    > 688:     auto state = root->getNext();
      [j0]                                  ^
      [j0]      689:
      [j0]      690:     if (state == sbe::PlanState::IS_EOF) {
      [j0] #23 0x0000c5a4ed4e1bff in getNextImpl<mongo::BSONObj>
      [j0]                    at src/mongo/db/query/plan_executor_sbe.cpp:334:23
      [j0]      332:             ? &_metadataAccessors
      [j0]      333:             : nullptr;
      [j0]    > 334:         auto result = fetchNextImpl(_root.get(),
      [j0]                                 ^
      [j0]      335:                                     _result,
      [j0]      336:                                     _resultRecordId,
      [j0] #24 0x0000c5a4ed4e177f in getNext
      [j0]                    at src/mongo/db/query/plan_executor_sbe.cpp:244:19
      [j0]      243:     BSONObj obj;
      [j0]    > 244:     auto result = getNextImpl(&obj, dlOut);
      [j0]                             ^
      [j0]      245:     if (out && result == PlanExecutor::ExecState::ADVANCED) {
      [j0]      246:         *out = std::move(obj);
      [j0] #25 0x0000c5a4edb2356b in getNextBatch
      [j0]                    at src/mongo/db/query/plan_executor.cpp:99:37
      [j0]       98:     while (numResults < batchSize) {
      [j0]     > 99:         if (PlanExecutor::IS_EOF == getNext(objPtr, nullptr)) {
      [j0]                                               ^
      [j0]      100:             break;
      [j0]      101:         }
      [j0] #26 (inlined)          in executePlan
      [j0]                    at src/mongo/db/query/explain.cpp:374:17
      [j0]      372:     // loop. We are passing a null callback function because explain wishes to simply discard the
      [j0]      373:     // query result set.
      [j0]    > 374:     (void)exec->getNextBatch(std::numeric_limits<int64_t>::max(), nullptr);
      [j0]                           ^
      ...
      [j0] {"t":{"$date":"2026-06-02T09:24:37.343+00:00"},"s":"F",  "c":"CONTROL",  "id":6384300, "ctx":"conn25","msg":"Writing fatal message","attr":{"message":"\n"}}
      [j0] {"t":{"$date":"2026-06-02T09:24:37.344+00:00"},"s":"F",  "c":"CONTROL",  "id":6384300, "ctx":"conn25","msg":"Writing fatal message","attr":{"message":"ScopedDebugInfo: [\"curOpDiagnostics: {'currentOp': { op: \"command\", ns: \"plan_stability_tpch_fuzzed.customer\", isFromPriorityPortConnection: false, opid: 51215, numYield: 14, queryShapeHash: \"4C03D75EEE523FA54D16304DEEA9458AA864D850CFE63A0E6F296C0F42D79787\", locks: {}, flowControl: {}, protocol: \"op_msg\", millis: 291, planningTimeMicros: 45105, deadline: new Date(1780392283116) }, 'opDescription': { explain: { aggregate: \"customer\", pipeline: [ { $match: { $expr: { $eq: [ \"$c_mktsegment\", \"BUILDING\" ] } } }, { $lookup: { from: \"orders\", localField: \"c_custkey\", foreignField: \"o_custkey\", as: \"orders\", pipeline: [ { $match: { $expr: { $lt: [ \"$o_orderdate\", new Date(798323546877) ] } } } ] } }, { $unwind: \"$orders\" }, { $lookup: { from: \"lineitem\", localField: \"orders.o_orderkey\", foreignField: \"l_orderkey\", as: \"lineitem\", pipeline: [ { $match: { $expr: { $gt: [ \"$l_shipdate\", new Date(803542843647) ] } } } ] } }, { $unwind: \"$lineitem\" } ], cursor: {} }, verbosity: \"executionStats\", maxTimeMS: 7666, lsid: { id: UUID(\"1f18a01c-bf50-431c-a624-c3c840dc9df0\") }, $db: \"plan_stability_tpch_fuzzed\" }}\", \"ShardKeyDiagnostics: omitted: collection isn't sharded\", \"ExpCtxDiagnostics: {collator: { locale: \"simple\" }, uuid: 314eaafe-2738-4c68-a5d8-7415bc50562c, needsMerge: false, allowDiskUse: true, isMapReduceCommand: false, inLookup: false, inUnionWith: false, forcePlanCache: false, sbeCompatibility: 3, sbeGroupCompatibility: 3, sbeWindowCompatibility: 3, sbePipelineCompatibility: 3, subPipelineDepth: 0}\", \"explainDiagnostics: {'winningPlan': { isCached: false, usedJoinOptimization: false, queryPlan: { stage: \"HASH_JOIN_EMBEDDING\", planNodeId: 6, leftEmbeddingField: \"none\", rightEmbeddingField: \"none\", joinPredicates: [ \"c_custkey = orders.o_custkey\" ], inputStages: [ { stage: \"COLLSCAN\", planNodeId: 1, filter: { $and: [ { $expr: { $eq: [ \"$c_mktsegment\", { $const: \"BUILDING\" } ] } } ] }, nss: \"plan_stability_tpch_fuzzed.customer\", direction: \"forward\" }, { stage: \"INDEXED_NESTED_LOOP_JOIN_EMBEDDING\", planNodeId: 5, leftEmbeddingField: \"lineitem\", rightEmbeddingField: \"orders\", joinPredicates: [ \"l_orderkey = o_orderkey\" ], inputStages: [ { stage: \"COLLSCAN\", planNodeId: 2, filter: { $and: [ { $expr: { $gt: [ \"$l_shipdate\", { $const: new Date(803542843647) } ] } } ] }, nss: \"plan_stability_tpch_fuzzed.lineitem\", direction: \"forward\" }, { stage: \"FETCH\", planNodeId: 4, filter: { $and: [ { $expr: { $lt: [ \"$o_orderdate\", { $const: new Date(798323546877) } ] } }, { o_orderdate: { $_internalExprLt: new Date(798323546877) } } ] }, nss: \"plan_stability_tpch_fuzzed.orders\", inputStage: { stage: \"INDEX_PROBE_NODE\", planNodeId: 3, nss: \"plan_stability_tpch_fuzzed.orders\", keyPattern: { o_orderkey: 1 }, indexName: \"o_orderkey_1\", isMultiKey: false, isUnique: true, isSparse: false, isPartial: false, indexVersion: 2 } } ] } ] }, slotBasedPlan: { slots: \"$$RESULT=s23 env: { s16 = {\"o_orderkey\" : 1}, s20 = Nothing (nothing) }\", stages: \"[6] project [s23 = makeBsonObj(MakeObjSpec([lineitem = Set(0), orders = Set(1)], Open, NewObj, 0), s1, s5, s17)] \n[6] hj \n    left [s22] [s5, s17] \n  ...\" } }, 'executionStats': { stage: \"project\", planNodeId: 6, nReturned: 7, executionTimeMillisEstimate: 260, opens: 1, closes: 0, saveState: 14, restoreState: 13, isEOF: 0, projections: { 23: \"makeBsonObj(MakeObjSpec([lineitem = Set(0), orders = Set(1)], Open, NewObj, 0), s1, s5, s17) \" }, inputStage: { stage: \"hj\", planNodeId: 6, nReturned: 7, executionTimeMillisEstimate: 260, opens: 1, closes: 0, saveState: 14, restoreState: 13, isEOF: 0, totalDocsExamined: 158434, totalKeysExamined: 2817, collectionScans: 2, collectionSeeks: 2817, indexScans: 0, indexSeeks: 2817, indexesUsed: [ \"o_orderkey_1\" ], usedDisk: false, numPartitionsSpilled: 0, numPartitionSwaps: 0, recursionDepthMax: 0, numFallbacksToBlockNestedLoopJoin: 0, numProbeRecordsDiscarded: 0, spills: 0, spilledRecords: 0, spilledBytes: 0, spilledDataStorageSize: 0, peakTrackedMemBytes: 10746548, outerStage: { stage: \"project\", planNodeId: 6, nReturned: 32, executionTimeMillisEstimate: 140, opens: 1, closes: 0, saveState: 13, restoreState: 13, isEOF: 0, projections: { 22: \"(getField(s17, \"o_custkey\") ?: null) \" }, inputStage: { stage: \"nlj\", planNodeId: 5, nReturned: 32, executionTimeMillisEstimate: 140, opens: 1, closes: 0, saveState: 13, restoreState: 13, isEOF: 0, totalDocsExamined: 8434, totalKeysExamined: 2817, collectionScans: 1, collectionSeeks: 2817, indexScans: 0, indexSeeks: 2817, indexesUsed: [ \"o_orderkey_1\" ], innerOpens: 2817, innerCloses: 0, outerProjects: [ 5, 7 ], outerCorrelated: [ 5, 7 ], predicate: \"((s7 ?: null) == (s19 ?: null)) \", outerStage: { stage: \"filter\", planNodeId: 2, nReturned: 2817, executionTimeMillisEstimate: 0, opens: 1, closes: 0, saveState: 13, restoreState: 13, isEOF: 0, numTested: 5617, filter: \"(((s8 <=> Date(803542843647)) > 0) ?: ((exists(s8) && typeMatch(s8, -65)) > true)) \", inputStage: { stage: \"scan\", planNodeId: 2, nReturned: 5617, executionTimeMillisEstimate: 0, opens: 1, closes: 0, saveState: 13, restoreState: 13, isEOF: 0, numReads: 5617, recordSlot: 5, recordIdSlot: 6, scanFieldNames: [ \"l_orderkey\", \"l_shipdate\" ], scanFieldSlots: [ 7, 8 ] } }, innerStage: { stage: \"filter\", planNodeId: 5, nReturned: 32, executionTimeMillisEstimate: 140, opens: 2817, closes: 0, saveState: 13, restoreState: 13, isEOF: 1, numTested: 2817, filter: \"(\n    let [\n        l6.0 = getField(s17, \"o_orderdate\") \n    ] \n    in (((l6.0 <=> Date(798323546877)) < 0) ?: ((exists(l6.0) && typeMatch(l6.0, -65))...\", inputStage: { stage: \"fetch\", planNodeId: 4, nReturned: 2817, executionTimeMillisEstimate: 150, opens: 2817, closes: 0, saveState: 13, restoreState: 13, isEOF: 1, numReads: 2817, inputStage: { stage: \"nlj\", planNodeId: 4, nReturned: 2817, executionTimeMillisEstimate: 140, opens: 2817, closes: 0, saveState: 13, restoreState: 13, isEOF: 1, totalDocsExamined: 0, totalKeysExamined: 2817, collectionScans: 0, collectionSeeks: 0, indexScans: 0, indexSeeks: 2817, indexesUsed: [ \"o_orderkey_1\" ], innerOpens: 2817, innerCloses: 0, outerProjects: [], outerCorrelated: [ 10, 11 ], outerStage: { stage: \"project\", planNodeId: 4, nReturned: 2817, executionTimeMillisEstimate: 10, opens: 2817, closes: 0, saveState: 13, restoreState: 13, isEOF: 1, projections: { 10: \"ks(1ll, 0, s9, 1ll) \", 11: \"ks(1ll, 0, s9, 2ll) \" }, inputStage: { stage: \"project\", planNodeId: 5, nReturned: 2817, executionTimeMillisEstimate: 10, opens: 2817, closes: 0, saveState: 13, restoreState: 13, isEOF: 1, projections: { 9: \"(s7 ?: null) \" }, inputStage: { stage: \"limit\", planNodeId: 5, nReturned: 2817, executionTimeMillisEstimate: 0, opens: 2817, closes: 0, saveState: 13, restoreState: 13, isEOF: 1, limit: 1, inputStage: { stage: \"coscan\", planNodeId: 5, nReturned: 2817, executionTimeMillisEstimate: 0, opens: 2817, closes: 0, saveState: 13, restoreState: 13, isEOF: 0 } } } }, innerStage: { stage: \"ixseek\", planNodeId: 4, nReturned: 2817, executionTimeMillisEstimate: 130, opens: 2817, closes: 0, saveState: 13, restoreState: 13, isEOF: 1, indexName: \"o_orderkey_1\", keysExamined: 2817, seeks: 2817, numReads: 2817, indexKeySlot: 14, recordIdSlot: 12, snapshotIdSlot: 15, indexIdentSlot: 13, outputSlots: [], indexKeysToInclude: \"00000000000000000000000000000000\", seekKeyLow: \"s10 \", seekKeyHigh: \"s11 \" } } } } } }, innerStage: { stage: \"project\", planNodeId: 6, nReturned: 30142, executionTimeMillisEstimate: 109, opens: 1, closes: 1, saveState: 13, restoreState: 13, isEOF: 1, projections: { 21: \"(s3 ?: null) \" }, inputStage: { stage: \"filter\", planNodeId: 1, nReturned: 30142, executionTimeMillisEstimate: 109, opens: 1, closes: 1, saveState: 13, restoreState: 13, isEOF: 1, numTested: 150000, filter: \"(((s4 <=> \"BUILDING\") == 0) ?: (exists(s4) && typeMatch(s4, -65))) \", inputStage: { stage: \"scan\", planNodeId: 1, nReturned: 150000, executionTimeMillisEstimate: 109, opens: 1, closes: 1, saveState: 13, restoreState: 13, isEOF: 1, numReads: 150000, recordSlot: 1, recordIdSlot: 2, scanFieldNames: [ \"c_custkey\", \"c_mktsegment\" ], scanFieldSlots: [ 3, 4 ] } } } } }}\"]\n\n"}}
       

            Assignee:
            Foteini Alvanaki
            Reporter:
            Philip Stoev
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

              Created:
              Updated: