Re: [SQL] Geometric types in SELECT? - Mailing list pgsql-sql

From Tom Lane
Subject Re: [SQL] Geometric types in SELECT?
Date
Msg-id 25692.948417722@sss.pgh.pa.us
Whole thread Raw
In response to Geometric types in SELECT?  (mpg4@duluoz.net)
List pgsql-sql
mpg4@duluoz.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


pgsql-sql by date:

Previous
From: Peter Eisentraut
Date:
Subject: Re: [SQL] insert values into arrays
Next
From: david tzuriel
Date:
Subject: (no subject)