Thread: using querys like: 'select table.*'

using querys like: 'select table.*'

From
erobles
Date:
<font face="Droid Sans">Hi!<br /><br /> In  postgresql 7.2  i can use  this kind of querys:<br /><br /> select  table.*
;<br /><br /> select  * from  table1 where  table1.key=othertable.key;<br /><br /><br /> but in  postgresql 8.3  i
have an error like this:<br /> ERROR: missing FROM-clause entry for table ...<br /><br /><br /> what should i do to
solvethis?  :-)<br /><br /><br /><br /><br /><br /></font> 

Re: using querys like: 'select table.*'

From
erobles
Date:

erobles wrote:
> Hi!
>
> In  postgresql 7.2  i can use  this kind of querys:
>
> select  table.* ;
>
> select  * from  table1 where  table1.key=othertable.key;
>
>
> but in  postgresql 8.3  i have  an error like this:
> ERROR: missing FROM-clause entry for table ...
>
>
> what should i do to solve this?  :-)
>
>
>
>
>

Re: using querys like: 'select table.*'

From
Adrian Klaver
Date:
On Wednesday 02 December 2009 4:04:47 pm erobles wrote:
> erobles wrote:
> > Hi!
> >
> > In  postgresql 7.2  i can use  this kind of querys:
> >
> > select  table.* ;
> >
> > select  * from  table1 where  table1.key=othertable.key;
> >
> >
> > but in  postgresql 8.3  i have  an error like this:
> > ERROR: missing FROM-clause entry for table ...
> >
> >
> > what should i do to solve this?  :-)

Short term see here for config setting in postgresql.conf that can revert the
behavior.
http://www.postgresql.org/docs/8.3/interactive/runtime-config-compatible.html#RUNTIME-CONFIG-COMPATIBLE-VERSION

Long term, change the queries :)

--
Adrian Klaver
aklaver@comcast.net

Re: using querys like: 'select table.*'

From
Craig Ringer
Date:
On 3/12/2009 7:58 AM, erobles wrote:
> Hi!
>
> In postgresql 7.2 i can use this kind of querys:
>
> select table.* ;
>
> select * from table1 where table1.key=othertable.key;
>
>
> but in postgresql 8.3 i have an error like this:
> ERROR: missing FROM-clause entry for table ...
>
>
> what should i do to solve this? :-)

You've already been pointed to the workaround backward-compat option.

What's happening here is that you're doing an implicit inner join. Your
query is being interpreted by PostgreSQL as if you wrote:

select * from table1, othertable where table1.key=othertable.key;

though I prefer to write it as the IMO more readable:

select * from table1 INNER JOIN othertable ON table1.key=othertable.key;


This behaviour isn't supported anymore partly is because it's way too
easy to write:

select * from table1 where table1.key=typotable.key;

and get confusing error messages or, if `typotable' exists, confusing
query results. I'm pretty sure there were more reasons too, but I wasn't
really active on the lists when that was going on.

It's also really confusing when reading a query.

So - as already pointed out, you will need to re-write your queries to
add the required tables to the from clause.

--
Craig Ringer