void PolicyEagerFreeAssignOperatorMemoryKB(PlannedStmt *stmt, uint64 memAvailableBytes) { // 算子分组,同时统计内存敏感算子和非敏感算子个数。 PolicyEagerFreePrelimWalker((Node *) stmt->planTree, &ctx); …… // 算子组的内存不得小于所有内存非敏感算子的内存配额, // 即,内存敏感算子需要有内存可分配。 const uint64 nonMemIntenseOpMemKB = (uint64)(*gp_resmanager_memory_policy_auto_fixed_mem); if (ctx.groupTree->groupMemKB < ctx.groupTree->numNonMemIntenseOps * nonMemIntenseOpMemKB) { ereport(……); } // 为内存非敏感算子设置内存配额,计算内存敏感算子内存配额。 PolicyEagerFreeAssignWalker((Node *) stmt->planTree, &ctx); …… }