Обсуждение: OTICE: adding missing FROM-clause entry for table
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
# 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
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