From 887160d1beaec607187261ab1a9411040da3d7b5 Mon Sep 17 00:00:00 2001 From: Amit Langote Date: Fri, 4 Apr 2025 10:40:04 +0900 Subject: [PATCH] Add assertion to verify derived clause has constant RHS find_derived_clause_for_ec_member() searches for a previously-derived clause that equates a non-constant EquivalenceMember to a constant. It is only called for EquivalenceClasses with ec_has_const set, and with a non-constant member the EquivalenceMember to search for. The matched clause is expected to have the non-constant member on the left-hand side and the constant EquivalenceMember on the right. Assert that the RHS is indeed a constant, to catch violations of this structure and enforce assumptions made by generate_base_implied_equalities_const(). Author: Ashutosh Bapat Reviewed-by: Amit Langote Discussion: https://postgr.es/m/CAExHW5scMxyFRqOFE6ODmBiW2rnVBEmeEcA-p4W_CyuEikURdA@mail.gmail.com --- src/backend/optimizer/path/equivclass.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/backend/optimizer/path/equivclass.c b/src/backend/optimizer/path/equivclass.c index 0f9ecf5ee8b..493a95d26cc 100644 --- a/src/backend/optimizer/path/equivclass.c +++ b/src/backend/optimizer/path/equivclass.c @@ -2664,7 +2664,10 @@ find_derived_clause_for_ec_member(EquivalenceClass *ec, * members on the left side of derived clauses. */ if (rinfo->left_em == em) + { + Assert(rinfo->right_em->em_is_const); return rinfo; + } } return NULL; } -- 2.39.5