From: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us> |
---|---|
To: | Wesley Schwengle <wesley(dot)schwengle(at)xxllnc(dot)nl> |
Cc: | pgsql-general(at)lists(dot)postgresql(dot)org |
Subject: | Re: View definition changes after reloading pg_dump export |
Date: | 2022-09-01 14:08:47 |
Message-ID: | 402822.1662041327@sss.pgh.pa.us |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-general |
Wesley Schwengle <wesley(dot)schwengle(at)xxllnc(dot)nl> writes:
> There is a view that we create and it uses a function and the view
> definition changes between runs. I'm not sure why this is happening,
> does someone know?
The core reason for the discrepancy is that the parser inserts
implicit coercion steps into your initial, not-very-consistently-typed
query; but the view-dumping logic (ruleutils.c) tends to display
those steps as explicit coercions. Formally speaking it shouldn't
do that, because the parser may act differently depending on whether
a cast is explicitly present, as indeed you see here. But if we don't
write the coercions explicitly then there is a risk of the reloaded view
being interpreted differently than it was before (perhaps because there
are more or different overloaded functions/operators available at reload
time). So the dumping logic is kind of between a rock and a hard place.
Our experience has been that printing the coercions explicitly causes
fewer problems than not doing so, so that's what it does.
regards, tom lane
From | Date | Subject | |
---|---|---|---|
Next Message | Wesley Schwengle | 2022-09-01 14:35:20 | Re: View definition changes after reloading pg_dump export |
Previous Message | Ron | 2022-09-01 12:37:36 | Re: Vacuum Full is not returning space to OS |