MCPcopy Create free account
hub / github.com/apache/cloudberry / ExecSquelchNode

Function ExecSquelchNode

src/backend/executor/execAmi.c:762–934  ·  view source on GitHub ↗

* ExecSquelchNode * * When a node decides that it will not consume any more input tuples from a * subtree that has not yet returned end-of-data, it must call * ExecSquelchNode() on the subtree. * * This is necessary, to avoid deadlock with Motion nodes. There might be a * receiving Motion node in the subtree, and it needs to let the sender side * of the Motion know that we will not be read

Source from the content-addressed store, hash-verified

760 * when force is true.
761 */
762void
763ExecSquelchNode(PlanState *node, bool force)
764{
765 ListCell *lc;
766
767 if (!node)
768 return;
769
770 switch (nodeTag(node))
771 {
772 case T_MotionState:
773 ExecSquelchMotion((MotionState *) node, force);
774 break;
775
776 case T_ModifyTableState:
777 ExecSquelchModifyTable((ModifyTableState *) node, force);
778 return;
779
780 /*
781 * Node types that need custom code to recurse.
782 */
783 case T_AppendState:
784 ExecSquelchAppend((AppendState *) node, force);
785 break;
786
787 case T_MergeAppendState:
788 ExecSquelchMergeAppend((MergeAppendState *) node, force);
789 break;
790
791 case T_SequenceState:
792 ExecSquelchSequence((SequenceState *) node, force);
793 break;
794
795 case T_SubqueryScanState:
796 ExecSquelchSubqueryScan((SubqueryScanState *) node, force);
797 break;
798
799 /*
800 * Node types that need no special handling, just recurse to
801 * children.
802 */
803 case T_AssertOpState:
804 case T_BitmapAndState:
805 case T_BitmapOrState:
806 case T_RuntimeFilterState:
807 case T_DynamicBitmapHeapScanState:
808 case T_LimitState:
809 case T_LockRowsState:
810 case T_NestLoopState:
811 case T_MergeJoinState:
812 case T_SetOpState:
813 case T_UniqueState:
814 case T_HashState:
815 case T_PartitionSelectorState:
816 case T_WorkTableScanState:
817 case T_ResultState:
818 case T_ProjectSetState:
819 node->squelched = true;

Callers 15

standard_ExecutorFinishFunction · 0.85
execMotionSenderFunction · 0.85
ExecMergeJoinFunction · 0.85
mppExecutorFinishupFunction · 0.85
mppExecutorWaitFunction · 0.85
ExecSquelchWindowAggFunction · 0.85
MultiExecPrivateHashFunction · 0.85
MultiExecParallelHashFunction · 0.85
ExecSquelchSubqueryScanFunction · 0.85
ExecSquelchMergeAppendFunction · 0.85
ExecSquelchMemoizeFunction · 0.85
ExecSquelchTupleSplitFunction · 0.85

Calls 15

ExecSquelchMotionFunction · 0.85
ExecSquelchModifyTableFunction · 0.85
ExecSquelchAppendFunction · 0.85
ExecSquelchMergeAppendFunction · 0.85
ExecSquelchSequenceFunction · 0.85
ExecSquelchSubqueryScanFunction · 0.85
ExecShutdownForeignScanFunction · 0.85
ExecSquelchFunctionScanFunction · 0.85
ExecSquelchHashJoinFunction · 0.85
ExecSquelchMaterialFunction · 0.85

Tested by

no test coverage detected