Test suite (as simple as I can produce):
CREATE TABLE foo (a int, b int);

INSERT INTO foo VALUES (1,2);
INSERT INTO foo VALUES (2,3);
INSERT INTO foo VALUES (3,3);

CREATE VIEW fooview AS
    SELECT
            f1.a AS a_for_max_b
    FROM
        ( SELECT MAX(foo.b) AS MaxB FROM foo ) f2
        INNER JOIN foo f1
            ON f2.MaxB = f1.b;


And this query fails:
SELECT
    *
FROM
    fooview fv1
    LEFT OUTER JOIN fooview fv2
        ON TRUE = TRUE;

It also fails with RIGHT join, but it doesn't fail with INNER or FULL joins.

If view is defined (essentially the same) as
CREATE VIEW fooview AS
    SELECT
        f1.a AS a_for_max_b
    FROM
        foo f1
    WHERE
        f1.b = (SELECT MAX(f2.b) FROM foo f2);
then all is ok.


--
Teodor Sigaev                                   E-mail: [EMAIL PROTECTED]
                                                WWW: http://www.sigaev.ru/


---------------------------(end of broadcast)---------------------------
TIP 4: Have you searched our list archives?

              http://archives.postgresql.org

Reply via email to