mirror of
https://github.com/postgres/postgres.git
synced 2025-05-08 07:21:33 +03:00
Add invariants check to get_useful_group_keys_orderings()
This commit introduces invariants checking of generated orderings in get_useful_group_keys_orderings() for assert-enabled builds. Discussion: https://postgr.es/m/a663f0f6-cbf6-49aa-af2e-234dc6768a07%40postgrespro.ru Reported-by: Tom Lane Author: Andrei Lepikhov Reviewed-by: Alexander Korotkov, Pavel Borisov
This commit is contained in:
parent
199012a3d8
commit
91143c03d4
@ -561,6 +561,34 @@ get_useful_group_keys_orderings(PlannerInfo *root, Path *path)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef USE_ASSERT_CHECKING
|
||||||
|
{
|
||||||
|
PathKeyInfo *pinfo = linitial_node(PathKeyInfo, infos);
|
||||||
|
ListCell *lc;
|
||||||
|
|
||||||
|
/* Test consistency of info structures */
|
||||||
|
for_each_from(lc, infos, 1)
|
||||||
|
{
|
||||||
|
ListCell *lc1,
|
||||||
|
*lc2;
|
||||||
|
|
||||||
|
info = lfirst_node(PathKeyInfo, lc);
|
||||||
|
|
||||||
|
Assert(list_length(info->clauses) == list_length(pinfo->clauses));
|
||||||
|
Assert(list_length(info->pathkeys) == list_length(pinfo->pathkeys));
|
||||||
|
Assert(list_difference(info->clauses, pinfo->clauses) == NIL);
|
||||||
|
Assert(list_difference_ptr(info->pathkeys, pinfo->pathkeys) == NIL);
|
||||||
|
|
||||||
|
forboth(lc1, info->clauses, lc2, info->pathkeys)
|
||||||
|
{
|
||||||
|
SortGroupClause *sgc = lfirst_node(SortGroupClause, lc1);
|
||||||
|
PathKey *pk = lfirst_node(PathKey, lc2);
|
||||||
|
|
||||||
|
Assert(pk->pk_eclass->ec_sortref == sgc->tleSortGroupRef);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
return infos;
|
return infos;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user