Re: [SQL] Geometric types in SELECT?

From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: mpg4(at)duluoz(dot)net
Cc: pgsql-sql(at)postgreSQL(dot)org
Subject: Re: [SQL] Geometric types in SELECT?
Date: 2000-01-21 01:22:02
Message-ID: 25692.948417722@sss.pgh.pa.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-sql

mpg4(at)duluoz(dot)net writes:
> =>select length( '((0,0),coord)'::lseg ) from address;

> I receive this error:

> Bad lseg external representation '((0,0), coord)'

> If I replace coord with an actual value, I don't get the error. Am I
> somehow mangling the syntax?

Yup. '((0,0),coord)'::lseg is a literal constant --- in general,
'anything'::typename is a literal constant in Postgres. And it's
not a valid literal constant for lseg.

I suppose coord is the name of a point column in your table? To do it
correctly, you'd need something like

select length( makelseg( '(0,0)'::point, coord )) from table;

I'm not sure if there is a function that makes an lseg from two points,
and if there is it probably isn't called "makelseg", but hopefully you
get the idea.

I am pretty sure there is a function that computes the distance between
two points, so what you are likely to end up really writing is

select distance( '(0,0)'::point, coord ) from table;

(after you dig through the documentation to find the actual name
of that function...)

regards, tom lane

In response to

Browse pgsql-sql by date

  From Date Subject
Next Message david tzuriel 2000-01-21 12:25:48 (no subject)
Previous Message Peter Eisentraut 2000-01-20 21:55:19 Re: [SQL] insert values into arrays