Thread: warning for subquery that references a table but not its columns
I almost got bit by this today: => select email from subscribed where email not in (select email from tracks); email ------- (0 rows) => select email from subscribed where email not in (select tracks.email from tracks); ERROR: column tracks.email does not exist LINE 1: ... email from subscribed where email not in (select tracks.ema... (the "tracks" table doesn't have an "email" column, so the first query is just meaningless) Should there be a warning for the first query that you reference "tracks" in a subquery but don't use any columns from it? -- Seamus Abshere, SCEA https://www.faraday.io https://github.com/seamusabshere https://linkedin.com/in/seamusabshere
Seamus Abshere <seamus@abshere.net> writes: > Should there be a warning for the first query that you reference "tracks" in a subquery but don't use any columns fromit? Unfortunately, outer references in subqueries are perfectly legal per SQL standard, and also often essential. If we were to invent a "SET training_wheels = on" option, it would surely include some warnings in this area, although I'm not sure exactly what the triggering conditions ought to be. But there are lots of ways to mess yourself up in SQL; I don't think subqueries are that much worse than some other gotchas. regards, tom lane