postgis/postgis/postgis_brin.sql.in
2019-11-15 15:46:25 +01:00

268 lines
7.7 KiB
MySQL

#include "sqldefines.h"
--------------------------------------------------------------------
-- BRIN support start --
--------------------------------------------------------------------
---------------------------------
-- 2d operators --
---------------------------------
-- Availability: 2.3.0
CREATE OR REPLACE FUNCTION contains_2d(box2df, geometry)
RETURNS boolean
AS 'MODULE_PATHNAME','gserialized_contains_box2df_geom_2d'
LANGUAGE 'c' IMMUTABLE STRICT PARALLEL SAFE _COST_DEFAULT;
-- Availability: 2.3.0
CREATE OR REPLACE FUNCTION is_contained_2d(box2df, geometry)
RETURNS boolean
AS 'MODULE_PATHNAME','gserialized_within_box2df_geom_2d'
LANGUAGE 'c' IMMUTABLE STRICT PARALLEL SAFE _COST_DEFAULT;
-- Availability: 2.3.0
CREATE OR REPLACE FUNCTION overlaps_2d(box2df, geometry)
RETURNS boolean
AS 'MODULE_PATHNAME','gserialized_overlaps_box2df_geom_2d'
LANGUAGE 'c' IMMUTABLE STRICT PARALLEL SAFE _COST_DEFAULT;
-- Availability: 2.3.0
CREATE OR REPLACE FUNCTION overlaps_2d(box2df, box2df)
RETURNS boolean
AS 'MODULE_PATHNAME','gserialized_contains_box2df_box2df_2d'
LANGUAGE 'c' IMMUTABLE STRICT PARALLEL SAFE _COST_DEFAULT;
-- Availability: 2.3.0
CREATE OR REPLACE FUNCTION contains_2d(box2df, box2df)
RETURNS boolean
AS 'MODULE_PATHNAME','gserialized_contains_box2df_box2df_2d'
LANGUAGE 'c' IMMUTABLE STRICT PARALLEL SAFE _COST_DEFAULT;
-- Availability: 2.3.0
CREATE OR REPLACE FUNCTION is_contained_2d(box2df, box2df)
RETURNS boolean
AS 'MODULE_PATHNAME','gserialized_contains_box2df_box2df_2d'
LANGUAGE 'c' IMMUTABLE STRICT PARALLEL SAFE _COST_DEFAULT;
-- Availability: 2.3.0
CREATE OPERATOR ~ (
LEFTARG = box2df,
RIGHTARG = geometry,
PROCEDURE = contains_2d,
COMMUTATOR = @
);
-- Availability: 2.3.0
CREATE OPERATOR @ (
LEFTARG = box2df,
RIGHTARG = geometry,
PROCEDURE = is_contained_2d,
COMMUTATOR = ~
);
-- Availability: 2.3.0
CREATE OPERATOR && (
LEFTARG = box2df,
RIGHTARG = geometry,
PROCEDURE = overlaps_2d,
COMMUTATOR = &&
);
-- Availability: 2.3.0
CREATE OR REPLACE FUNCTION contains_2d(geometry, box2df)
RETURNS boolean
AS
'SELECT $2 OPERATOR(@extschema@.@) $1;'
LANGUAGE SQL IMMUTABLE STRICT PARALLEL SAFE _COST_DEFAULT;
-- Availability: 2.3.0
CREATE OR REPLACE FUNCTION is_contained_2d(geometry, box2df)
RETURNS boolean
AS
'SELECT $2 OPERATOR(@extschema@.~) $1;'
LANGUAGE SQL IMMUTABLE STRICT PARALLEL SAFE _COST_DEFAULT;
-- Availability: 2.3.0
CREATE OR REPLACE FUNCTION overlaps_2d(geometry, box2df)
RETURNS boolean
AS
'SELECT $2 OPERATOR(@extschema@.&&) $1;'
LANGUAGE SQL IMMUTABLE STRICT PARALLEL SAFE _COST_DEFAULT;
-- Availability: 2.3.0
CREATE OPERATOR ~ (
LEFTARG = geometry,
RIGHTARG = box2df,
COMMUTATOR = @,
PROCEDURE = contains_2d
);
-- Availability: 2.3.0
CREATE OPERATOR @ (
LEFTARG = geometry,
RIGHTARG = box2df,
COMMUTATOR = ~,
PROCEDURE = is_contained_2d
);
-- Availability: 2.3.0
CREATE OPERATOR && (
LEFTARG = geometry,
RIGHTARG = box2df,
PROCEDURE = overlaps_2d,
COMMUTATOR = &&
);
-- Availability: 2.3.0
CREATE OPERATOR && (
LEFTARG = box2df,
RIGHTARG = box2df,
PROCEDURE = overlaps_2d,
COMMUTATOR = &&
);
-- Availability: 2.3.0
CREATE OPERATOR @ (
LEFTARG = box2df,
RIGHTARG = box2df,
PROCEDURE = is_contained_2d,
COMMUTATOR = ~
);
-- Availability: 2.3.0
CREATE OPERATOR ~ (
LEFTARG = box2df,
RIGHTARG = box2df,
PROCEDURE = contains_2d,
COMMUTATOR = @
);
----------------------------
-- nd operators --
----------------------------
-- Availability: 2.3.0
CREATE OR REPLACE FUNCTION overlaps_nd(gidx, geometry)
RETURNS boolean
AS 'MODULE_PATHNAME','gserialized_gidx_geom_overlaps'
LANGUAGE 'c' IMMUTABLE STRICT PARALLEL SAFE _COST_DEFAULT;
-- Availability: 2.3.0
CREATE OR REPLACE FUNCTION overlaps_nd(gidx, gidx)
RETURNS boolean
AS 'MODULE_PATHNAME','gserialized_gidx_gidx_overlaps'
LANGUAGE 'c' IMMUTABLE STRICT PARALLEL SAFE _COST_DEFAULT;
-- Availability: 2.3.0
CREATE OPERATOR &&& (
LEFTARG = gidx,
RIGHTARG = geometry,
PROCEDURE = overlaps_nd,
COMMUTATOR = &&&
);
-- Availability: 2.3.0
CREATE OR REPLACE FUNCTION overlaps_nd(geometry, gidx)
RETURNS boolean
AS
'SELECT $2 OPERATOR(@extschema@.&&&) $1;'
LANGUAGE SQL IMMUTABLE STRICT PARALLEL SAFE _COST_DEFAULT;
-- Availability: 2.3.0
CREATE OPERATOR &&& (
LEFTARG = geometry,
RIGHTARG = gidx,
PROCEDURE = overlaps_nd,
COMMUTATOR = &&&
);
-- Availability: 2.3.0
CREATE OPERATOR &&& (
LEFTARG = gidx,
RIGHTARG = gidx,
PROCEDURE = overlaps_nd,
COMMUTATOR = &&&
);
------------------------------
-- Create operator families --
------------------------------
-------------
-- 2D case --
-------------
-- Availability: 2.3.0
CREATE OR REPLACE FUNCTION geom2d_brin_inclusion_add_value(internal, internal, internal, internal)
RETURNS boolean
AS 'MODULE_PATHNAME','geom2d_brin_inclusion_add_value'
LANGUAGE 'c' PARALLEL SAFE _COST_DEFAULT;
-- Availability: 2.3.0
CREATE OR REPLACE FUNCTION geom3d_brin_inclusion_add_value(internal, internal, internal, internal)
RETURNS boolean
AS 'MODULE_PATHNAME','geom3d_brin_inclusion_add_value'
LANGUAGE 'c' PARALLEL SAFE _COST_DEFAULT;
-- Availability: 2.3.0
CREATE OR REPLACE FUNCTION geom4d_brin_inclusion_add_value(internal, internal, internal, internal)
RETURNS boolean
AS 'MODULE_PATHNAME','geom4d_brin_inclusion_add_value'
LANGUAGE 'c' PARALLEL SAFE _COST_DEFAULT;
-- Availability: 2.3.0
CREATE OPERATOR CLASS brin_geometry_inclusion_ops_2d
DEFAULT FOR TYPE geometry
USING brin AS
FUNCTION 1 brin_inclusion_opcinfo(internal),
FUNCTION 2 geom2d_brin_inclusion_add_value(internal, internal, internal, internal),
FUNCTION 3 brin_inclusion_consistent(internal, internal, internal),
FUNCTION 4 brin_inclusion_union(internal, internal, internal),
OPERATOR 3 &&(box2df, box2df),
OPERATOR 3 &&(box2df, geometry),
OPERATOR 3 &&(geometry, box2df),
OPERATOR 3 &&(geometry, geometry),
OPERATOR 7 ~(box2df, box2df),
OPERATOR 7 ~(box2df, geometry),
OPERATOR 7 ~(geometry, box2df),
OPERATOR 7 ~(geometry, geometry),
OPERATOR 8 @(box2df, box2df),
OPERATOR 8 @(box2df, geometry),
OPERATOR 8 @(geometry, box2df),
OPERATOR 8 @(geometry, geometry),
STORAGE box2df;
-------------
-- 3D case --
-------------
-- Availability: 2.3.0
CREATE OPERATOR CLASS brin_geometry_inclusion_ops_3d
FOR TYPE geometry
USING brin AS
FUNCTION 1 brin_inclusion_opcinfo(internal) ,
FUNCTION 2 geom3d_brin_inclusion_add_value(internal, internal, internal, internal),
FUNCTION 3 brin_inclusion_consistent(internal, internal, internal),
FUNCTION 4 brin_inclusion_union(internal, internal, internal),
OPERATOR 3 &&&(geometry, geometry),
OPERATOR 3 &&&(geometry, gidx),
OPERATOR 3 &&&(gidx, geometry),
OPERATOR 3 &&&(gidx, gidx),
STORAGE gidx;
-------------
-- 4D case --
-------------
-- Availability: 2.3.0
CREATE OPERATOR CLASS brin_geometry_inclusion_ops_4d
FOR TYPE geometry
USING brin AS
FUNCTION 1 brin_inclusion_opcinfo(internal),
FUNCTION 2 geom4d_brin_inclusion_add_value(internal, internal, internal, internal),
FUNCTION 3 brin_inclusion_consistent(internal, internal, internal),
FUNCTION 4 brin_inclusion_union(internal, internal, internal),
OPERATOR 3 &&&(geometry, geometry),
OPERATOR 3 &&&(geometry, gidx),
OPERATOR 3 &&&(gidx, geometry),
OPERATOR 3 &&&(gidx, gidx),
STORAGE gidx;
-----------------------
-- BRIN support end
-----------------------