pg_dump: provide a stable sort order for rules.
Previously, we sorted rules by schema name and then rule name; if that wasn't unique, we sorted by rule OID. This can be problematic for comparing dumps from databases with different histories, especially since certain rule names like "_RETURN" are very common. Let's make the sort key schema name, rule name, table name, which should be unique. (This is the same behavior we've long used for triggers and RLS policies.) Andreas Karlsson Discussion: https://postgr.es/m/b4e468d8-0cd6-42e6-ac8a-1d6afa6e0cf1@proxel.se
This commit is contained in:
parent
215f7af27d
commit
350e6b8ea8
@ -294,6 +294,17 @@ DOTypeNameCompare(const void *p1, const void *p2)
|
|||||||
if (cmpval != 0)
|
if (cmpval != 0)
|
||||||
return cmpval;
|
return cmpval;
|
||||||
}
|
}
|
||||||
|
else if (obj1->objType == DO_RULE)
|
||||||
|
{
|
||||||
|
RuleInfo *robj1 = *(RuleInfo *const *) p1;
|
||||||
|
RuleInfo *robj2 = *(RuleInfo *const *) p2;
|
||||||
|
|
||||||
|
/* Sort by table name (table namespace was considered already) */
|
||||||
|
cmpval = strcmp(robj1->ruletable->dobj.name,
|
||||||
|
robj2->ruletable->dobj.name);
|
||||||
|
if (cmpval != 0)
|
||||||
|
return cmpval;
|
||||||
|
}
|
||||||
else if (obj1->objType == DO_TRIGGER)
|
else if (obj1->objType == DO_TRIGGER)
|
||||||
{
|
{
|
||||||
TriggerInfo *tobj1 = *(TriggerInfo *const *) p1;
|
TriggerInfo *tobj1 = *(TriggerInfo *const *) p1;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user