Обсуждение: how to get Point * from datum =heap_getattr(....)?

Поиск
Список
Период
Сортировка

how to get Point * from datum =heap_getattr(....)?

От
sunpeng
Дата:
hi,i have this table:
CREATE TABLE pois(
   uid integer not null,
   name VARCHAR(128),
   catcode VARCHAR(32)  not null,
   catname VARCHAR(32),
   others VARCHAR(32)
);
SELECT AddGeometryColumn('pois', 'location', 4214, 'POINT', 2);

and then in my codes,i use this invoke to get location column in tuple:
tuple = heap_getnext(pHeapScanDesc,
ForwardScanDirection);
datum = heap_getattr(tuple,6,pRawRelation->rd_att,&isnull);

then on the next,how to write to get Point? is this right?
Point *p = isnull?NULL:(Point *)(PG_DETOAST_DATUM(datum));
i've tried it,but it seems not work.

thanks a lot.

peng

Re: how to get Point * from datum =heap_getattr(....)?

От
Tom Lane
Дата:
sunpeng <bluevaley@gmail.com> writes:
> hi,i have this table:
> CREATE TABLE pois(
>    uid integer not null,
>    name VARCHAR(128),
>    catcode VARCHAR(32)  not null,
>    catname VARCHAR(32),
>    others VARCHAR(32)
> );
> SELECT AddGeometryColumn('pois', 'location', 4214, 'POINT', 2);

> and then in my codes,i use this invoke to get location column in tuple:
> tuple = heap_getnext(pHeapScanDesc,
> ForwardScanDirection);
> datum = heap_getattr(tuple,6,pRawRelation->rd_att,&isnull);

> then on the next,how to write to get Point? is this right?
> Point *p = isnull?NULL:(Point *)(PG_DETOAST_DATUM(datum));

I'm not sure what the C-code type name is for geometry columns, but it's
definitely not Point --- that corresponds to the SQL type "point".

I'd suggest asking about this on the postgis mailing list.

            regards, tom lane