diff options
author | Amit Langote <amitlan@postgresql.org> | 2025-04-04 10:40:04 +0900 |
---|---|---|
committer | Amit Langote <amitlan@postgresql.org> | 2025-04-04 10:45:05 +0900 |
commit | 887160d1beaec607187261ab1a9411040da3d7b5 (patch) | |
tree | a6c5adff055f522dfbd8b2d953a1724c61ef4400 /src | |
parent | 67be093562b6b345c170417312dff22f467055ba (diff) | |
download | postgresql-887160d1beaec607187261ab1a9411040da3d7b5.tar.gz postgresql-887160d1beaec607187261ab1a9411040da3d7b5.zip |
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 <ashutosh.bapat.oss@gmail.com>
Reviewed-by: Amit Langote <amitlangote09@gmail.com>
Discussion: https://postgr.es/m/CAExHW5scMxyFRqOFE6ODmBiW2rnVBEmeEcA-p4W_CyuEikURdA@mail.gmail.com
Diffstat (limited to 'src')
-rw-r--r-- | src/backend/optimizer/path/equivclass.c | 3 |
1 files changed, 3 insertions, 0 deletions
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; } |