5fb9aa680b
Closes #4578
268 lines
7.7 KiB
MySQL
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
|
|
-----------------------
|