[postgis-devel] Geometry Index on GSERIALIZED

Nicklas Avén nicklas.aven at jordogskog.no
Fri Dec 17 23:42:52 PST 2010


Wow!

I have not understood this will be in place for 2.0.

Great :-)

/Nicklas

----- Original message -----
> Well, I have my first proof-of-concept test turning over using the
> GSERIALIZED index binding, shared with geography, on a geometry table
> (the operator is a triple &&& to avoid colliding with the existing
> one, for now).
> 
> Nothing working is committed yet, but it's getting closer. I think
> next I need to work through the online regression failures that occur
> when GSERIALIZED_ON is set. Then I should be able to flip over to the
> new format relatively quickly.
> 
> Now, the new index is multi-dimensional, which means it builds out to
> the maximum dimensionality necessary to index the inputs. That is all
> good. An interesting issue occurs when querying it, however... as it
> stands, if you query a 3d table with a 2d object, the 2d object is
> projected onto the zero plane of the higher dimensions and then the
> query is run. So the query below carried out with a 2d linestring
> returns no answers. The solution is pretty clear in changing the
> gidx_overlaps and gidx_contains function definitions, but it's a core
> change to the existing index, so I will proceed carefully. The change
> will cause lower dimensional objects to have full coverage of the
> higher dimensions, so a 2d object will operate like a cylinder in the
> higher space, rather than a piece of paper.
> 
> Fun fun, maybe we'll have a Christmas Miracle (n-d indexing and
> gserialized storage committed and working).
> 
> Paul
> 
> 
> postgis20=# select count(*) from random_points where pt &&&
> 'LINESTRING(10000 10000 10000, 20000 20000 20000)'::geometry;
>   count
> -------
>           2
> (1 row)
> 
> postgis20=# explain analyze select count(*) from random_points where
> pt &&& 'LINESTRING(10000 10000 10000, 20000 20000 20000)'::geometry;
> 
>           QUERY PLAN
> -------------------------------------------------------------------------------------------------------------------------------------------------------------------
>   Aggregate   (cost=39301.62..39301.63 rows=1 width=0) (actual
> time=1.360..1.360 rows=1 loops=1)
>       ->   Bitmap Heap Scan on random_points   (cost=22455.62..38051.62
> rows=500000 width=0) (actual time=1.347..1.349 rows=2 loops=1)
>                   Recheck Cond: (pt &&&
> '010200008002000000000000000088C340000000000088C340000000000088C340000000000088D340000000000088D340000000000088D340'::geometry)
>                   ->   Bitmap Index Scan on rpg   (cost=0.00..22330.62
> rows=500000 width=0) (actual time=1.336..1.336 rows=2 loops=1)
>                               Index Cond: (pt &&&
> '010200008002000000000000000088C340000000000088C340000000000088C340000000000088D340000000000088D340000000000088D340'::geometry)
>   Total runtime: 1.458 ms
> (6 rows)
> _______________________________________________
> postgis-devel mailing list
> postgis-devel at postgis.refractions.net
> http://postgis.refractions.net/mailman/listinfo/postgis-devel
> 

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/postgis-devel/attachments/20101218/56285b0b/attachment.html>


More information about the postgis-devel mailing list