Well, I've tested it a bit:

db=# select version();
                                          version
--------------------------------------------------------------------------------------------
 PostgreSQL 8.1.2 on i686-pc-linux-gnu, compiled by GCC gcc (GCC) 3.3.5
(Debian 1:3.3.5-13)
(1 row)
 
db=# select (1,3) > (2,3);
 ?column?
----------
 f
(1 row)
 
db=# select (3,3) > (2,3);
 ?column?
----------
 f
(1 row)
 
db=# select (3,4) > (2,3);
 ?column?
----------
 t
(1 row)
 

It seems to me that (x,y) > (a,b) means (x > a AND y > b) ... which is
not exactly what you wanted... or I'm missing something ?

Cheers,
Csaba.


On Wed, 2006-02-08 at 03:35, Merlin Moncure wrote:
> > On Feb 8, 2006, at 11:17 , Merlin Moncure wrote:
> >
> > > The proper SQL construct without row constructor is:
> > >
> > > select * from t where
> > >   a >= a1 and
> > >   (a > a1 or b>= b1) and
> > >   (a > a1 or b > b1 or c > c1)
> > > order by a,b,c limit 1    ^ no offset necessary
> > >
> > > confused yet?
> >
> > This is interesting! Could you also provide the equivalent *with* a
> > row constructor? (or did I miss that somewhere?)
> 
> select * from t where (a,b,c) > (a1, b1, c1) order by a,b,c limit 1;
> [plus full usage of key on t(a,b,c)]
> 
> ---------------------------(end of broadcast)---------------------------
> TIP 2: Don't 'kill -9' the postmaster


---------------------------(end of broadcast)---------------------------
TIP 3: Have you checked our extensive FAQ?

               http://www.postgresql.org/docs/faq

Reply via email to