Hey All,

 

I am wondering whether the behavior I am observing is expected.  The rough
scenario I have setup goes as follows (I can likely put together a test
script if that is warranted):

 

version

PostgreSQL 9.0.3 on x86_64-pc-linux-gnu, compiled by GCC gcc-4.4.real
(Ubuntu 4.4.3-4ubuntu5) 4.4.3, 64-bit

 

Initially:

VIEW inner := SELECT * FROM complex WHERE filter;

VIEW outer := SELECT * FROM inner JOIN other;

 

Now, I discover that the "filter" in the "inner" VIEW is wrong (had
hard-coded a month/year combination during testing) and so I modified the
WHERE clause of the "inner" VIEW. I do this using CREATE OR REPLACE VIEW
inner [.]

 

Now, I can (SELECT * FROM inner) and I get the expected results.  However,
if I (SELECT * FROM outer) the query (including the explain), shows me
original "inner" plan and I thus get - in this case - no results (since the
hard-coded date does not match my live data).

 

Since I did not change the signature of the VIEW the CREATE OR REPLACE
worked as expected.

 

I have pretty good feel for how/why this is happening (though a precise
explanation is welcomed), and obviously I will need to recreate the
dependent VIEWs, but I am curious whether any efforts have/are being taken
to avoid this issue in the future.

 

Thank you for your attention in this matter,

 

David J.

 

Reply via email to