1
0
mirror of https://github.com/postgres/postgres.git synced 2025-06-26 12:21:12 +03:00

Fix ALTER OPERATOR to update dependencies properly.

Fix an oversight in commit 321eed5f0f: replacing an operator's
selectivity functions needs to result in a corresponding update in
pg_depend.  We have a function that can handle that, but it was not
called by AlterOperator().

To fix this without enlarging pg_operator.h's #include list beyond
what clients can safely include, split off the function definitions
into a new file pg_operator_fn.h, similarly to what we've done for
some other catalog header files.  It's not entirely clear whether
any client-side code needs to include pg_operator.h, but it seems
prudent to assume that there is some such code somewhere.
This commit is contained in:
Tom Lane
2015-12-31 17:37:31 -05:00
parent e5d06f2b12
commit 0dab5ef39b
6 changed files with 163 additions and 42 deletions

View File

@ -40,6 +40,7 @@
#include "catalog/indexing.h"
#include "catalog/objectaccess.h"
#include "catalog/pg_operator.h"
#include "catalog/pg_operator_fn.h"
#include "catalog/pg_type.h"
#include "commands/alter.h"
#include "commands/defrem.h"
@ -500,9 +501,9 @@ AlterOperator(AlterOperatorStmt *stmt)
simple_heap_update(catalog, &tup->t_self, tup);
CatalogUpdateIndexes(catalog, tup);
InvokeObjectPostAlterHook(OperatorRelationId, oprId, 0);
address = makeOperatorDependencies(tup, true);
ObjectAddressSet(address, OperatorRelationId, oprId);
InvokeObjectPostAlterHook(OperatorRelationId, oprId, 0);
heap_close(catalog, NoLock);