Обсуждение: OTICE: adding missing FROM-clause entry for table

Поиск
Список
Период
Сортировка

OTICE: adding missing FROM-clause entry for table

От
Christian Laursen
Дата:
I just experienced some bad SQL causing quite unexpected results.

I used a statement like this:
SELECT t1.a, t1.b, t2.d FROM test1 t1, test2 t2 WHERE t1.a = test2.a;

Where I should have used this instead:
SELECT t1.a, t1.b, t2.d FROM test1 t1, test2 t2 WHERE t1.a = t2.a;

When I looked into it and tried it from psql, I got this notice:
NOTICE:  adding missing FROM-clause entry for table "test2"

Now, I understand that postgresql is adding "test2" to the list of
tables, I am selecting from as it is missing. However the result
is quite different from what I expected.

Is there a way to change this behaviour to generate an error instead
of just a notice?

--
Christian Laursen

Re: OTICE: adding missing FROM-clause entry for table

От
Roman Neuhauser
Дата:
# christian@pil.dk / 2005-08-12 10:17:50 +0200:
> I just experienced some bad SQL causing quite unexpected results.
>
> I used a statement like this:
> SELECT t1.a, t1.b, t2.d FROM test1 t1, test2 t2 WHERE t1.a = test2.a;
>
> Where I should have used this instead:
> SELECT t1.a, t1.b, t2.d FROM test1 t1, test2 t2 WHERE t1.a = t2.a;
>
> When I looked into it and tried it from psql, I got this notice:
> NOTICE:  adding missing FROM-clause entry for table "test2"
>
> Now, I understand that postgresql is adding "test2" to the list of
> tables, I am selecting from as it is missing. However the result
> is quite different from what I expected.
>
> Is there a way to change this behaviour to generate an error instead
> of just a notice?

    set add_missing_from = false in postgresql.conf

--
How many Vietnam vets does it take to screw in a light bulb?
You don't know, man.  You don't KNOW.
Cause you weren't THERE.             http://bash.org/?255991

Re: OTICE: adding missing FROM-clause entry for table

От
Richard Huxton
Дата:
Christian Laursen wrote:
> When I looked into it and tried it from psql, I got this notice:
> NOTICE:  adding missing FROM-clause entry for table "test2"
>
> Now, I understand that postgresql is adding "test2" to the list of
> tables, I am selecting from as it is missing. However the result
> is quite different from what I expected.
>
> Is there a way to change this behaviour to generate an error instead
> of just a notice?

Yes - there is a setting in postgresql.conf that allows you to turn this
off (and I do so). The only reason it's left on is for compatibility
with older versions.

It's called "add_missing_from" or similar - see the "runtime
configuration" chapter of the manuals for details.

--
   Richard Huxton
   Archonet Ltd