Thread: deleting dependencies

deleting dependencies

From
"Christopher Kings-Lynne"
Date:
Hi,

I've been looking at the dependency API and I notice that there is a
function to delete ALL dependencies on an object and a function to add a
dependency, but there doesn't seem to be any way of deleting a dependency
between two _particular_ objects.

Is there any other way of doing this other than manually deleting the row
from the pg_depend table?

I'm messing about with changing column type and I need to drop the
dependency on the old type and add the dependency on the new type....

Chris




Re: deleting dependencies

From
Tom Lane
Date:
"Christopher Kings-Lynne" <chriskl@familyhealth.com.au> writes:
> I've been looking at the dependency API and I notice that there is a
> function to delete ALL dependencies on an object and a function to add a
> dependency, but there doesn't seem to be any way of deleting a dependency
> between two _particular_ objects.

In the ALTER cases that have been implemented so far, it seemed easiest
to wipe the full set of dependencies and then regenerate them from the
altered object.  I think you will find the same is true of altering
column type.  To take just one example, the column default expression
(if any) almost certainly has to be replaced too, and it may contain
dependencies.
        regards, tom lane


Re: deleting dependencies

From
"Christopher Kings-Lynne"
Date:
> "Christopher Kings-Lynne" <chriskl@familyhealth.com.au> writes:
> > I've been looking at the dependency API and I notice that there is a
> > function to delete ALL dependencies on an object and a function to add a
> > dependency, but there doesn't seem to be any way of deleting a
dependency
> > between two _particular_ objects.
>
> In the ALTER cases that have been implemented so far, it seemed easiest
> to wipe the full set of dependencies and then regenerate them from the
> altered object.  I think you will find the same is true of altering
> column type.  To take just one example, the column default expression
> (if any) almost certainly has to be replaced too, and it may contain
> dependencies.

Phase 1 (which I'm currently doing) will do binary-compatible casts only.
After that, I have to start using code from cluster.c to rewrite the table
methinks...and everything gets a *lot* harder...

Chris