]> granicus.if.org Git - postgis/commitdiff
Added HASH opclass and = operator for raster. This permits GROUP BY
authorBborie Park <bkpark at ucdavis.edu>
Tue, 9 Oct 2012 23:12:54 +0000 (23:12 +0000)
committerBborie Park <bkpark at ucdavis.edu>
Tue, 9 Oct 2012 23:12:54 +0000 (23:12 +0000)
raster usage.

git-svn-id: http://svn.osgeo.org/postgis/trunk@10389 b70326c6-7e19-0410-871a-916f4a2858ee

raster/rt_pg/rtpostgis.sql.in.c

index 966efb5d27044b7d5e83ea550176516e41aa9925..ec6bcb4e5067c487e1d90d43ae0697eebb45ee49 100644 (file)
@@ -3593,6 +3593,33 @@ CREATE CAST (raster AS geometry)
 CREATE CAST (raster AS bytea)
     WITH FUNCTION bytea(raster) AS ASSIGNMENT;
 
+-------------------------------------------------------------------
+-- HASH operators
+-------------------------------------------------------------------
+
+-- call PostgreSQL's hashvarlena() function
+CREATE OR REPLACE FUNCTION raster_hash(raster)
+       RETURNS integer
+       AS 'hashvarlena'
+       LANGUAGE 'internal' IMMUTABLE STRICT;
+
+-- use raster_hash() to compare
+CREATE OR REPLACE FUNCTION raster_eq(raster, raster)
+       RETURNS bool
+       AS $$ SELECT raster_hash($1) = raster_hash($2) $$
+       LANGUAGE 'sql' IMMUTABLE STRICT;
+
+CREATE OPERATOR = (
+       LEFTARG = raster, RIGHTARG = raster, PROCEDURE = raster_eq,
+       COMMUTATOR = '=',
+       RESTRICT = eqsel, JOIN = eqjoinsel
+);
+
+CREATE OPERATOR CLASS hash_raster_ops
+       DEFAULT FOR TYPE raster USING hash AS
+       OPERATOR        1       = ,
+       FUNCTION        1       raster_hash (raster);
+
 ------------------------------------------------------------------------------
 --  GiST index OPERATOR support functions
 ------------------------------------------------------------------------------